zudoku 0.0.0-fd0986c → 0.0.0-fdf886de

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 (407) hide show
  1. package/dist/app/demo.js +1 -1
  2. package/dist/app/entry.client.js +1 -1
  3. package/dist/app/entry.server.js +1 -1
  4. package/dist/app/main.d.ts +1 -1
  5. package/dist/app/main.js +12 -6
  6. package/dist/app/main.js.map +1 -1
  7. package/dist/app/standalone.js +1 -1
  8. package/dist/config/config.d.ts +1 -0
  9. package/dist/config/validators/InputNavigationSchema.d.ts +251 -156
  10. package/dist/config/validators/InputNavigationSchema.js +5 -4
  11. package/dist/config/validators/InputNavigationSchema.js.map +1 -1
  12. package/dist/config/validators/InputNavigationSchema.test-d.js +0 -1
  13. package/dist/config/validators/InputNavigationSchema.test-d.js.map +1 -1
  14. package/dist/config/validators/NavigationSchema.js +6 -3
  15. package/dist/config/validators/NavigationSchema.js.map +1 -1
  16. package/dist/config/validators/ProtectedRoutesSchema.d.ts +13 -0
  17. package/dist/config/validators/ProtectedRoutesSchema.js +10 -0
  18. package/dist/config/validators/ProtectedRoutesSchema.js.map +1 -0
  19. package/dist/config/validators/icon-types.d.ts +1 -1
  20. package/dist/config/validators/icon-types.js +16 -0
  21. package/dist/config/validators/icon-types.js.map +1 -1
  22. package/dist/config/validators/validate.d.ts +44 -30
  23. package/dist/config/validators/validate.js +8 -2
  24. package/dist/config/validators/validate.js.map +1 -1
  25. package/dist/flat-config.d.ts +11 -7
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.js +1 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/lib/authentication/components/CallbackHandler.js +11 -9
  30. package/dist/lib/authentication/components/CallbackHandler.js.map +1 -1
  31. package/dist/lib/authentication/components/OAuthErrorPage.d.ts +3 -0
  32. package/dist/lib/authentication/components/OAuthErrorPage.js +99 -0
  33. package/dist/lib/authentication/components/OAuthErrorPage.js.map +1 -0
  34. package/dist/lib/authentication/errors.d.ts +6 -12
  35. package/dist/lib/authentication/errors.js +2 -1
  36. package/dist/lib/authentication/errors.js.map +1 -1
  37. package/dist/lib/authentication/hook.d.ts +1 -0
  38. package/dist/lib/authentication/hook.js.map +1 -1
  39. package/dist/lib/authentication/providers/azureb2c.js +4 -2
  40. package/dist/lib/authentication/providers/azureb2c.js.map +1 -1
  41. package/dist/lib/authentication/providers/clerk.js +4 -2
  42. package/dist/lib/authentication/providers/clerk.js.map +1 -1
  43. package/dist/lib/authentication/providers/openid.js +3 -1
  44. package/dist/lib/authentication/providers/openid.js.map +1 -1
  45. package/dist/lib/components/BuildCheck.d.ts +2 -1
  46. package/dist/lib/components/BuildCheck.js +9 -3
  47. package/dist/lib/components/BuildCheck.js.map +1 -1
  48. package/dist/lib/components/Header.js +1 -1
  49. package/dist/lib/components/Header.js.map +1 -1
  50. package/dist/lib/components/Heading.js +1 -1
  51. package/dist/lib/components/Heading.js.map +1 -1
  52. package/dist/lib/components/Layout.js +4 -7
  53. package/dist/lib/components/Layout.js.map +1 -1
  54. package/dist/lib/components/Markdown.js +2 -2
  55. package/dist/lib/components/Markdown.js.map +1 -1
  56. package/dist/lib/components/Meta.d.ts +2 -0
  57. package/dist/lib/components/Meta.js +11 -0
  58. package/dist/lib/components/Meta.js.map +1 -0
  59. package/dist/lib/components/MobileTopNavigation.js +5 -3
  60. package/dist/lib/components/MobileTopNavigation.js.map +1 -1
  61. package/dist/lib/components/NotFoundPage.js +1 -1
  62. package/dist/lib/components/NotFoundPage.js.map +1 -1
  63. package/dist/lib/components/TopNavigation.js +4 -3
  64. package/dist/lib/components/TopNavigation.js.map +1 -1
  65. package/dist/lib/components/Typography.d.ts +1 -1
  66. package/dist/lib/components/Typography.js +1 -1
  67. package/dist/lib/components/Typography.js.map +1 -1
  68. package/dist/lib/components/context/ZudokuContext.js +22 -14
  69. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  70. package/dist/lib/components/index.d.ts +0 -27
  71. package/dist/lib/components/index.js +0 -15
  72. package/dist/lib/components/index.js.map +1 -1
  73. package/dist/lib/components/navigation/NavigationCategory.js +1 -1
  74. package/dist/lib/components/navigation/NavigationCategory.js.map +1 -1
  75. package/dist/lib/components/navigation/NavigationItem.d.ts +1 -1
  76. package/dist/lib/components/navigation/NavigationItem.js +11 -3
  77. package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
  78. package/dist/lib/components/navigation/utils.d.ts +3 -1
  79. package/dist/lib/components/navigation/utils.js +18 -14
  80. package/dist/lib/components/navigation/utils.js.map +1 -1
  81. package/dist/lib/core/RouteGuard.js +9 -9
  82. package/dist/lib/core/RouteGuard.js.map +1 -1
  83. package/dist/lib/core/ZudokuContext.d.ts +5 -1
  84. package/dist/lib/core/ZudokuContext.js +23 -1
  85. package/dist/lib/core/ZudokuContext.js.map +1 -1
  86. package/dist/lib/core/__internal.d.ts +37 -0
  87. package/dist/lib/core/__internal.js +26 -0
  88. package/dist/lib/core/__internal.js.map +1 -0
  89. package/dist/lib/core/plugins.d.ts +2 -1
  90. package/dist/lib/core/plugins.js.map +1 -1
  91. package/dist/lib/core/router.d.ts +1 -0
  92. package/dist/lib/core/router.js +2 -0
  93. package/dist/lib/core/router.js.map +1 -0
  94. package/dist/lib/errors/ErrorAlert.js +1 -1
  95. package/dist/lib/errors/ErrorAlert.js.map +1 -1
  96. package/dist/lib/plugins/api-keys/CreateApiKey.js +13 -3
  97. package/dist/lib/plugins/api-keys/CreateApiKey.js.map +1 -1
  98. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +3 -1
  99. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
  100. package/dist/lib/plugins/api-keys/index.d.ts +9 -4
  101. package/dist/lib/plugins/api-keys/index.js +3 -7
  102. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  103. package/dist/lib/plugins/custom-pages/index.js +3 -0
  104. package/dist/lib/plugins/custom-pages/index.js.map +1 -1
  105. package/dist/lib/plugins/openapi/Sidecar.js +1 -1
  106. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  107. package/dist/lib/plugins/openapi/SidecarExamples.js +1 -1
  108. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
  109. package/dist/lib/plugins/openapi/graphql/gql.d.ts +1 -1
  110. package/dist/lib/plugins/openapi/graphql/gql.js +1 -1
  111. package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -1
  112. package/dist/lib/plugins/openapi/graphql/graphql.d.ts +1 -0
  113. package/dist/lib/plugins/openapi/graphql/graphql.js +1 -0
  114. package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -1
  115. package/dist/lib/plugins/openapi/index.js +42 -10
  116. package/dist/lib/plugins/openapi/index.js.map +1 -1
  117. package/dist/lib/plugins/openapi/playground/PathParams.js +1 -1
  118. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  119. package/dist/lib/plugins/openapi/playground/Playground.js +4 -2
  120. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  121. package/dist/lib/shiki.d.ts +4 -0
  122. package/dist/lib/shiki.js +2 -0
  123. package/dist/lib/shiki.js.map +1 -1
  124. package/dist/lib/ui/ActionButton.js +1 -1
  125. package/dist/lib/ui/ActionButton.js.map +1 -1
  126. package/dist/lib/ui/Badge.d.ts +1 -1
  127. package/dist/lib/ui/Button.d.ts +2 -2
  128. package/dist/lib/ui/CodeBlock.js +30 -4
  129. package/dist/lib/ui/CodeBlock.js.map +1 -1
  130. package/dist/lib/ui/Command.d.ts +1 -1
  131. package/dist/lib/ui/Dialog.js +2 -2
  132. package/dist/lib/ui/Dialog.js.map +1 -1
  133. package/dist/lib/ui/EmbeddedCodeBlock.js +1 -1
  134. package/dist/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  135. package/dist/lib/util/invariant.d.ts +6 -5
  136. package/dist/lib/util/invariant.js +1 -1
  137. package/dist/lib/util/invariant.js.map +1 -1
  138. package/dist/vite/config.js +6 -1
  139. package/dist/vite/config.js.map +1 -1
  140. package/dist/vite/dev-server.js +9 -1
  141. package/dist/vite/dev-server.js.map +1 -1
  142. package/dist/vite/mdx/remark-inject-filepath.d.ts +3 -0
  143. package/dist/vite/mdx/remark-inject-filepath.js +6 -0
  144. package/dist/vite/mdx/remark-inject-filepath.js.map +1 -0
  145. package/dist/vite/mdx/remark-link-rewrite.d.ts +2 -0
  146. package/dist/vite/mdx/remark-link-rewrite.js +20 -0
  147. package/dist/vite/mdx/remark-link-rewrite.js.map +1 -0
  148. package/dist/vite/mdx/remark-normalize-image-url.d.ts +2 -0
  149. package/dist/vite/mdx/remark-normalize-image-url.js +12 -0
  150. package/dist/vite/mdx/remark-normalize-image-url.js.map +1 -0
  151. package/dist/vite/{remarkStaticGeneration.d.ts → mdx/remark-static-generation.d.ts} +2 -2
  152. package/dist/vite/{remarkStaticGeneration.js → mdx/remark-static-generation.js} +1 -1
  153. package/dist/vite/mdx/remark-static-generation.js.map +1 -0
  154. package/dist/vite/plugin-config.d.ts +1 -1
  155. package/dist/vite/plugin-config.js +2 -1
  156. package/dist/vite/plugin-config.js.map +1 -1
  157. package/dist/vite/plugin-docs.js +18 -13
  158. package/dist/vite/plugin-docs.js.map +1 -1
  159. package/dist/vite/plugin-mdx.js +6 -23
  160. package/dist/vite/plugin-mdx.js.map +1 -1
  161. package/dist/vite/plugin-theme.js +80 -40
  162. package/dist/vite/plugin-theme.js.map +1 -1
  163. package/dist/vite/prerender/worker.js +5 -1
  164. package/dist/vite/prerender/worker.js.map +1 -1
  165. package/dist/vite/shadcn-registry.d.ts +4 -4
  166. package/dist/vite/sitemap.js +10 -9
  167. package/dist/vite/sitemap.js.map +1 -1
  168. package/lib/Button-B3o-2Xdf.js.map +1 -1
  169. package/lib/Card-CMDQUPM4.js.map +1 -1
  170. package/lib/CategoryHeading-DCpZu3yG.js +17 -0
  171. package/lib/CategoryHeading-DCpZu3yG.js.map +1 -0
  172. package/lib/ClientOnly-E7hGysn1.js.map +1 -1
  173. package/lib/CodeBlock-yJjjRwj-.js +98 -0
  174. package/lib/CodeBlock-yJjjRwj-.js.map +1 -0
  175. package/lib/{Command-C9AC5cf-.js → Command-CDn17s8X.js} +2 -2
  176. package/lib/{Command-C9AC5cf-.js.map → Command-CDn17s8X.js.map} +1 -1
  177. package/lib/Dialog-BrIjMmUK.js +114 -0
  178. package/lib/Dialog-BrIjMmUK.js.map +1 -0
  179. package/lib/{Drawer-DXGPOKPx.js → Drawer-DJ05s2pH.js} +86 -86
  180. package/lib/{Drawer-DXGPOKPx.js.map → Drawer-DJ05s2pH.js.map} +1 -1
  181. package/lib/{MdxPage-BI0vLjSn.js → MdxPage-BmOQ5m5g.js} +19 -18
  182. package/lib/{MdxPage-BI0vLjSn.js.map → MdxPage-BmOQ5m5g.js.map} +1 -1
  183. package/lib/OAuthErrorPage-Jv3r8wnL.js +150 -0
  184. package/lib/OAuthErrorPage-Jv3r8wnL.js.map +1 -0
  185. package/lib/{OasProvider-CK4C2QI3.js → OasProvider-CA_lpILt.js} +3 -3
  186. package/lib/{OasProvider-CK4C2QI3.js.map → OasProvider-CA_lpILt.js.map} +1 -1
  187. package/lib/{OperationList-DhA6x6qm.js → OperationList-C-TObVw6.js} +47 -44
  188. package/lib/OperationList-C-TObVw6.js.map +1 -0
  189. package/lib/{Pagination-YjKVdgm9.js → Pagination-CBiRGddW.js} +3 -3
  190. package/lib/{Pagination-YjKVdgm9.js.map → Pagination-CBiRGddW.js.map} +1 -1
  191. package/lib/RouteGuard-JLH6tCY8.js +56 -0
  192. package/lib/RouteGuard-JLH6tCY8.js.map +1 -0
  193. package/lib/RouterError-DcVonMP1.js +41 -0
  194. package/lib/RouterError-DcVonMP1.js.map +1 -0
  195. package/lib/{SchemaList-Cx9MS7Wf.js → SchemaList-BeYWvBC7.js} +15 -14
  196. package/lib/{SchemaList-Cx9MS7Wf.js.map → SchemaList-BeYWvBC7.js.map} +1 -1
  197. package/lib/{SchemaView-C6sTKWyS.js → SchemaView-CRcShewo.js} +4 -4
  198. package/lib/{SchemaView-C6sTKWyS.js.map → SchemaView-CRcShewo.js.map} +1 -1
  199. package/lib/Select-C3efYI1n.js +273 -0
  200. package/lib/Select-C3efYI1n.js.map +1 -0
  201. package/lib/{SignUp-DiDmVb3x.js → SignUp-CxBGHgba.js} +6 -6
  202. package/lib/{SignUp-DiDmVb3x.js.map → SignUp-CxBGHgba.js.map} +1 -1
  203. package/lib/{Slot-CrCBhP3G.js → Slot-DOtTvoyj.js} +2050 -2288
  204. package/lib/{Slot-CrCBhP3G.js.map → Slot-DOtTvoyj.js.map} +1 -1
  205. package/lib/Spinner-mNLZ6awP.js.map +1 -1
  206. package/lib/{SyntaxHighlight-CVe58ZSY.js → SyntaxHighlight-GR0eix_L.js} +411 -409
  207. package/lib/SyntaxHighlight-GR0eix_L.js.map +1 -0
  208. package/lib/{Toc-CpsFSXeD.js → Toc-BlcGIkXc.js} +2 -2
  209. package/lib/{Toc-CpsFSXeD.js.map → Toc-BlcGIkXc.js.map} +1 -1
  210. package/lib/ZudokuContext-BuJD7yIX.js +1286 -0
  211. package/lib/ZudokuContext-BuJD7yIX.js.map +1 -0
  212. package/lib/chunk-QMGIS6GS-DqecZ6nq.js +9204 -0
  213. package/lib/chunk-QMGIS6GS-DqecZ6nq.js.map +1 -0
  214. package/lib/{circular-OvXQH6UK.js → circular-CGTcsqA3.js} +2 -2
  215. package/lib/{circular-OvXQH6UK.js.map → circular-CGTcsqA3.js.map} +1 -1
  216. package/lib/cn-dYga0KKN.js.map +1 -1
  217. package/lib/{createServer-B5U_8E3S.js → createServer-DjgpuLne.js} +5 -5
  218. package/lib/{createServer-B5U_8E3S.js.map → createServer-DjgpuLne.js.map} +1 -1
  219. package/lib/errors-CrI3s7mR.js +45 -0
  220. package/lib/errors-CrI3s7mR.js.map +1 -0
  221. package/lib/hook-bv3iuX7X.js +247 -0
  222. package/lib/hook-bv3iuX7X.js.map +1 -0
  223. package/lib/index-CrcNWbel.js.map +1 -1
  224. package/lib/{index-BzcS9JBW.js → index-CvTWnHZF.js} +860 -938
  225. package/lib/index-CvTWnHZF.js.map +1 -0
  226. package/lib/index-DI5SPFK9.js.map +1 -1
  227. package/lib/index-DmNq2fbN.js.map +1 -1
  228. package/lib/index-DzO-Qh6S.js +1061 -0
  229. package/lib/index-DzO-Qh6S.js.map +1 -0
  230. package/lib/{index-4XtG1tlD.js → index-HarEI51d.js} +2 -2
  231. package/lib/{index-4XtG1tlD.js.map → index-HarEI51d.js.map} +1 -1
  232. package/lib/index.esm-BnYHxCYC.js +683 -0
  233. package/lib/index.esm-BnYHxCYC.js.map +1 -0
  234. package/lib/index.esm-CdzlRw50.js +1254 -0
  235. package/lib/index.esm-CdzlRw50.js.map +1 -0
  236. package/lib/{invariant-DAFpPywt.js → invariant-Bm-FVUQE.js} +2 -6
  237. package/lib/invariant-Bm-FVUQE.js.map +1 -0
  238. package/lib/jsx-runtime-C5mzlN2N.js.map +1 -1
  239. package/lib/mutation-Dy_5up8v.js +196 -0
  240. package/lib/mutation-Dy_5up8v.js.map +1 -0
  241. package/lib/processors/removeExtensions.js.map +1 -1
  242. package/lib/processors/removeParameters.js.map +1 -1
  243. package/lib/processors/removePaths.js.map +1 -1
  244. package/lib/processors/traverse.js.map +1 -1
  245. package/lib/ui/Accordion.js.map +1 -1
  246. package/lib/ui/ActionButton.js +9 -9
  247. package/lib/ui/ActionButton.js.map +1 -1
  248. package/lib/ui/Alert.js.map +1 -1
  249. package/lib/ui/AlertDialog.js.map +1 -1
  250. package/lib/ui/Badge.js.map +1 -1
  251. package/lib/ui/Breadcrumb.js.map +1 -1
  252. package/lib/ui/Button.js.map +1 -1
  253. package/lib/ui/Callout.js.map +1 -1
  254. package/lib/ui/Card.js.map +1 -1
  255. package/lib/ui/Carousel.js.map +1 -1
  256. package/lib/ui/Checkbox.js.map +1 -1
  257. package/lib/ui/CodeBlock.js +1 -1
  258. package/lib/ui/Command.js +1 -1
  259. package/lib/ui/Command.js.map +1 -1
  260. package/lib/ui/Dialog.js +56 -41
  261. package/lib/ui/Dialog.js.map +1 -1
  262. package/lib/ui/Drawer.js +1 -1
  263. package/lib/ui/DropdownMenu.js.map +1 -1
  264. package/lib/ui/EmbeddedCodeBlock.js +1 -1
  265. package/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  266. package/lib/ui/Form.js +1 -1
  267. package/lib/ui/Form.js.map +1 -1
  268. package/lib/ui/HoverCard.js.map +1 -1
  269. package/lib/ui/Input.js.map +1 -1
  270. package/lib/ui/Label.js.map +1 -1
  271. package/lib/ui/Pagination.js.map +1 -1
  272. package/lib/ui/Popover.js.map +1 -1
  273. package/lib/ui/Progress.js.map +1 -1
  274. package/lib/ui/RadioGroup.js.map +1 -1
  275. package/lib/ui/ScrollArea.js.map +1 -1
  276. package/lib/ui/Select.js.map +1 -1
  277. package/lib/ui/Skeleton.js.map +1 -1
  278. package/lib/ui/Slider.js.map +1 -1
  279. package/lib/ui/Stepper.js.map +1 -1
  280. package/lib/ui/Switch.js.map +1 -1
  281. package/lib/ui/SyntaxHighlight.js +4 -4
  282. package/lib/ui/Tabs.js.map +1 -1
  283. package/lib/ui/Textarea.js.map +1 -1
  284. package/lib/ui/Toggle.js.map +1 -1
  285. package/lib/ui/ToggleGroup.js.map +1 -1
  286. package/lib/ui/Tooltip.js.map +1 -1
  287. package/lib/useExposedProps-BH9aq4MD.js +113 -0
  288. package/lib/useExposedProps-BH9aq4MD.js.map +1 -0
  289. package/lib/useLatest-hmRS46UF.js +11 -0
  290. package/lib/useLatest-hmRS46UF.js.map +1 -0
  291. package/lib/zudoku.__internal.js +2965 -0
  292. package/lib/zudoku.__internal.js.map +1 -0
  293. package/lib/zudoku.auth-auth0.js +1 -1
  294. package/lib/zudoku.auth-auth0.js.map +1 -1
  295. package/lib/zudoku.auth-azureb2c.js +46 -9880
  296. package/lib/zudoku.auth-azureb2c.js.map +1 -1
  297. package/lib/zudoku.auth-clerk.js +25 -22
  298. package/lib/zudoku.auth-clerk.js.map +1 -1
  299. package/lib/zudoku.auth-openid.js +204 -195
  300. package/lib/zudoku.auth-openid.js.map +1 -1
  301. package/lib/zudoku.auth-supabase.js +97 -0
  302. package/lib/zudoku.auth-supabase.js.map +1 -0
  303. package/lib/zudoku.components.js +21 -28
  304. package/lib/zudoku.components.js.map +1 -1
  305. package/lib/zudoku.hooks.js +7 -7
  306. package/lib/zudoku.hooks.js.map +1 -1
  307. package/lib/zudoku.icons.js.map +1 -1
  308. package/lib/zudoku.plugin-api-catalog.js +23 -22
  309. package/lib/zudoku.plugin-api-catalog.js.map +1 -1
  310. package/lib/zudoku.plugin-api-keys.js +410 -295
  311. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  312. package/lib/zudoku.plugin-custom-pages.js +8 -5
  313. package/lib/zudoku.plugin-custom-pages.js.map +1 -1
  314. package/lib/zudoku.plugin-markdown.js +1 -1
  315. package/lib/zudoku.plugin-markdown.js.map +1 -1
  316. package/lib/zudoku.plugin-openapi.js +7 -6
  317. package/lib/zudoku.plugin-openapi.js.map +1 -1
  318. package/lib/zudoku.plugin-redirect.js +3 -3
  319. package/lib/zudoku.plugin-redirect.js.map +1 -1
  320. package/lib/zudoku.plugin-search-inkeep.js.map +1 -1
  321. package/lib/zudoku.plugin-search-pagefind.js +28 -27
  322. package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
  323. package/lib/zudoku.plugins.js.map +1 -1
  324. package/lib/zudoku.router.js +123 -0
  325. package/lib/zudoku.router.js.map +1 -0
  326. package/package.json +31 -23
  327. package/src/app/demo.tsx +1 -1
  328. package/src/app/entry.client.tsx +1 -1
  329. package/src/app/entry.server.tsx +1 -1
  330. package/src/app/main.css +22 -5
  331. package/src/app/main.tsx +23 -11
  332. package/src/app/standalone.tsx +1 -1
  333. package/src/lib/authentication/components/CallbackHandler.tsx +22 -15
  334. package/src/lib/authentication/components/OAuthErrorPage.tsx +171 -0
  335. package/src/lib/authentication/errors.ts +27 -13
  336. package/src/lib/authentication/hook.ts +2 -0
  337. package/src/lib/authentication/providers/azureb2c.tsx +8 -3
  338. package/src/lib/authentication/providers/clerk.tsx +4 -1
  339. package/src/lib/authentication/providers/openid.tsx +7 -1
  340. package/src/lib/components/BuildCheck.tsx +13 -3
  341. package/src/lib/components/Header.tsx +4 -3
  342. package/src/lib/components/Heading.tsx +1 -1
  343. package/src/lib/components/Layout.tsx +2 -21
  344. package/src/lib/components/Markdown.tsx +3 -3
  345. package/src/lib/components/Meta.tsx +32 -0
  346. package/src/lib/components/MobileTopNavigation.tsx +6 -3
  347. package/src/lib/components/NotFoundPage.tsx +3 -2
  348. package/src/lib/components/TopNavigation.tsx +4 -4
  349. package/src/lib/components/Typography.tsx +1 -1
  350. package/src/lib/components/context/ZudokuContext.ts +26 -19
  351. package/src/lib/components/index.ts +0 -18
  352. package/src/lib/components/navigation/NavigationCategory.tsx +1 -1
  353. package/src/lib/components/navigation/NavigationItem.tsx +13 -3
  354. package/src/lib/components/navigation/utils.ts +21 -15
  355. package/src/lib/core/RouteGuard.tsx +13 -13
  356. package/src/lib/core/ZudokuContext.ts +37 -5
  357. package/src/lib/core/__internal.tsx +30 -0
  358. package/src/lib/core/plugins.ts +2 -1
  359. package/src/lib/core/router.ts +1 -0
  360. package/src/lib/errors/ErrorAlert.tsx +5 -7
  361. package/src/lib/plugins/api-keys/CreateApiKey.tsx +17 -3
  362. package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +21 -3
  363. package/src/lib/plugins/api-keys/index.tsx +16 -11
  364. package/src/lib/plugins/custom-pages/index.tsx +3 -0
  365. package/src/lib/plugins/openapi/Sidecar.tsx +1 -1
  366. package/src/lib/plugins/openapi/SidecarExamples.tsx +1 -1
  367. package/src/lib/plugins/openapi/graphql/gql.ts +3 -3
  368. package/src/lib/plugins/openapi/graphql/graphql.ts +2 -0
  369. package/src/lib/plugins/openapi/index.tsx +66 -16
  370. package/src/lib/plugins/openapi/playground/PathParams.tsx +1 -1
  371. package/src/lib/plugins/openapi/playground/Playground.tsx +8 -2
  372. package/src/lib/shiki.ts +2 -0
  373. package/src/lib/ui/ActionButton.tsx +3 -1
  374. package/src/lib/ui/CodeBlock.tsx +38 -13
  375. package/src/lib/ui/Dialog.tsx +12 -3
  376. package/src/lib/ui/EmbeddedCodeBlock.tsx +1 -1
  377. package/src/lib/util/invariant.ts +7 -5
  378. package/src/shiki/langs/vue-vine.js +1 -0
  379. package/dist/vite/remarkStaticGeneration.js.map +0 -1
  380. package/lib/Alert-Cig_8hW6.js +0 -161
  381. package/lib/Alert-Cig_8hW6.js.map +0 -1
  382. package/lib/CodeBlock-BaBgX9Wy.js +0 -85
  383. package/lib/CodeBlock-BaBgX9Wy.js.map +0 -1
  384. package/lib/Dialog-DMWw1doX.js +0 -99
  385. package/lib/Dialog-DMWw1doX.js.map +0 -1
  386. package/lib/OperationList-DhA6x6qm.js.map +0 -1
  387. package/lib/RouteGuard-Vnlz_t51.js +0 -737
  388. package/lib/RouteGuard-Vnlz_t51.js.map +0 -1
  389. package/lib/SyntaxHighlight-CVe58ZSY.js.map +0 -1
  390. package/lib/chunk-DQRVZFIR-DHK7_Ilc.js +0 -1839
  391. package/lib/chunk-DQRVZFIR-DHK7_Ilc.js.map +0 -1
  392. package/lib/clerk-BDZ31hjU.js +0 -25190
  393. package/lib/clerk-BDZ31hjU.js.map +0 -1
  394. package/lib/errors-DOCWNkkS.js +0 -78
  395. package/lib/errors-DOCWNkkS.js.map +0 -1
  396. package/lib/hook-CZjW2buS.js +0 -1510
  397. package/lib/hook-CZjW2buS.js.map +0 -1
  398. package/lib/index-Bm35Tkgf.js +0 -107
  399. package/lib/index-Bm35Tkgf.js.map +0 -1
  400. package/lib/index-BzcS9JBW.js.map +0 -1
  401. package/lib/index-Sb7nQNHJ.js +0 -3980
  402. package/lib/index-Sb7nQNHJ.js.map +0 -1
  403. package/lib/index.esm-Cp4wkyud.js +0 -1236
  404. package/lib/index.esm-Cp4wkyud.js.map +0 -1
  405. package/lib/invariant-DAFpPywt.js.map +0 -1
  406. package/lib/useExposedProps-BIYjecPD.js +0 -9
  407. package/lib/useExposedProps-BIYjecPD.js.map +0 -1
@@ -1,15 +1,16 @@
1
1
  import { j as e } from "./jsx-runtime-C5mzlN2N.js";
2
2
  import { C as v } from "./ClientOnly-E7hGysn1.js";
3
3
  import { VisuallyHidden as I } from "@radix-ui/react-visually-hidden";
4
- import { j as k, u as N, d as j, l as C, m as L } from "./hook-CZjW2buS.js";
5
- import { useRef as S, useLayoutEffect as T, useState as E } from "react";
6
- import { B as R } from "./Button-B3o-2Xdf.js";
7
- import { ShieldAlertIcon as F, AlertTriangleIcon as q, InfoIcon as b, LightbulbIcon as z, BracketsIcon as A, FileTextIcon as P } from "lucide-react";
4
+ import { j as k, d as j, e as C, l as N } from "./ZudokuContext-BuJD7yIX.js";
5
+ import { useRef as S, useLayoutEffect as L, useState as T } from "react";
6
+ import { B as E } from "./Button-B3o-2Xdf.js";
7
+ import { ShieldAlertIcon as R, AlertTriangleIcon as F, InfoIcon as f, LightbulbIcon as P, BracketsIcon as q, FileTextIcon as z } from "lucide-react";
8
8
  import { c as u } from "./cn-dYga0KKN.js";
9
- import { C as $, a as f, b as h, c as D, d as B, e as O } from "./Command-C9AC5cf-.js";
10
- import { b as U } from "./Dialog-DMWw1doX.js";
11
- import { S as G } from "./RouteGuard-Vnlz_t51.js";
12
- import { a as H, L as p } from "./chunk-DQRVZFIR-DHK7_Ilc.js";
9
+ import { C as A, a as b, b as h, c as $, d as D, e as B } from "./Command-CDn17s8X.js";
10
+ import { c as O } from "./Dialog-BrIjMmUK.js";
11
+ import { u as U } from "./hook-bv3iuX7X.js";
12
+ import { S as G } from "./RouteGuard-JLH6tCY8.js";
13
+ import { aP as H, L as p } from "./chunk-QMGIS6GS-DqecZ6nq.js";
13
14
  const K = {
14
15
  note: {
15
16
  border: "border-gray-300 dark:border-zinc-800",
@@ -17,7 +18,7 @@ const K = {
17
18
  iconColor: "text-gray-600 dark:text-zinc-300",
18
19
  titleColor: "text-gray-600 dark:text-zinc-300",
19
20
  textColor: "text-gray-600 dark:text-zinc-300",
20
- Icon: b
21
+ Icon: f
21
22
  },
22
23
  tip: {
23
24
  border: "border-green-500 dark:border-green-800",
@@ -25,7 +26,7 @@ const K = {
25
26
  iconColor: "text-green-600 dark:text-green-200",
26
27
  titleColor: "text-green-700 dark:text-green-200",
27
28
  textColor: "text-green-600 dark:text-green-50",
28
- Icon: z
29
+ Icon: P
29
30
  },
30
31
  info: {
31
32
  border: "border-blue-400 dark:border-blue-900/60",
@@ -33,7 +34,7 @@ const K = {
33
34
  iconColor: "text-blue-400 dark:text-blue-200",
34
35
  titleColor: "text-blue-700 dark:text-blue-200",
35
36
  textColor: "text-blue-600 dark:text-blue-100",
36
- Icon: b
37
+ Icon: f
37
38
  },
38
39
  caution: {
39
40
  border: "border-yellow-400 dark:border-yellow-400/25",
@@ -41,7 +42,7 @@ const K = {
41
42
  iconColor: "text-yellow-500 dark:text-yellow-300",
42
43
  titleColor: "text-yellow-600 dark:text-yellow-300",
43
44
  textColor: "text-yellow-700 dark:text-yellow-200",
44
- Icon: q
45
+ Icon: F
45
46
  },
46
47
  danger: {
47
48
  border: "border-rose-400 dark:border-rose-800",
@@ -49,7 +50,7 @@ const K = {
49
50
  iconColor: "text-rose-400 dark:text-rose-300",
50
51
  titleColor: "text-rose-800 dark:text-rose-300",
51
52
  textColor: "text-rose-700 dark:text-rose-100",
52
- Icon: F
53
+ Icon: R
53
54
  }
54
55
  }, M = ({
55
56
  type: o,
@@ -152,22 +153,22 @@ const Q = (o, n) => {
152
153
  maxSubResults: a = 4
153
154
  }) => {
154
155
  const l = H(), i = S(null);
155
- T(() => {
156
+ L(() => {
156
157
  requestIdleCallback(() => {
157
158
  i.current?.scrollTo({ top: 0 });
158
159
  });
159
160
  }, [t]);
160
161
  const d = (r) => o && r.startsWith(o) ? k(r.slice(o.length)) : r;
161
- return /* @__PURE__ */ e.jsxs($, { className: "max-h-[450px]", ref: i, children: [
162
+ return /* @__PURE__ */ e.jsxs(A, { className: "max-h-[450px]", ref: i, children: [
162
163
  t && n.length > 0 && /* @__PURE__ */ e.jsx(
163
- f,
164
+ b,
164
165
  {
165
166
  className: "text-sm text-muted-foreground",
166
167
  heading: `${n.length} results for "${t}"`
167
168
  }
168
169
  ),
169
170
  t && n.map((r) => /* @__PURE__ */ e.jsxs(
170
- f,
171
+ b,
171
172
  {
172
173
  children: [
173
174
  /* @__PURE__ */ e.jsx(
@@ -180,7 +181,7 @@ const Q = (o, n) => {
180
181
  l(d(r.url)), s();
181
182
  },
182
183
  children: /* @__PURE__ */ e.jsxs(p, { to: d(r.url), children: [
183
- r.meta.section === "openapi" ? /* @__PURE__ */ e.jsx(A, {}) : /* @__PURE__ */ e.jsx(P, {}),
184
+ r.meta.section === "openapi" ? /* @__PURE__ */ e.jsx(q, {}) : /* @__PURE__ */ e.jsx(z, {}),
184
185
  r.meta.title
185
186
  ] })
186
187
  }
@@ -249,26 +250,26 @@ const Q = (o, n) => {
249
250
  onClose: n,
250
251
  options: t
251
252
  }) => {
252
- const { pagefind: s, error: a, isError: l } = J(t), [i, d] = E(""), r = N(), c = j(), m = S(null), { data: _ } = C({
253
+ const { pagefind: s, error: a, isError: l } = J(t), [i, d] = T(""), r = U(), c = j(), m = S(null), { data: _ } = C({
253
254
  queryKey: ["pagefind-search", i, r.isAuthenticated],
254
255
  queryFn: async () => {
255
256
  const w = r.isAuthenticated ? void 0 : { not: { section: G } }, g = await s?.search(i, { filters: w });
256
257
  return g ? V({ search: g, options: t, auth: r, context: c }) : [];
257
258
  },
258
- placeholderData: L,
259
+ placeholderData: N,
259
260
  enabled: !!s && !!i
260
261
  });
261
262
  return /* @__PURE__ */ e.jsxs(
262
- D,
263
+ $,
263
264
  {
264
265
  command: { shouldFilter: !1 },
265
266
  content: { className: "max-w-[750px]" },
266
267
  open: o,
267
268
  onOpenChange: n,
268
269
  children: [
269
- /* @__PURE__ */ e.jsx(I, { children: /* @__PURE__ */ e.jsx(U, { children: "Search" }) }),
270
+ /* @__PURE__ */ e.jsx(I, { children: /* @__PURE__ */ e.jsx(O, { children: "Search" }) }),
270
271
  /* @__PURE__ */ e.jsx(
271
- B,
272
+ D,
272
273
  {
273
274
  ref: m,
274
275
  placeholder: "Search...",
@@ -277,10 +278,10 @@ const Q = (o, n) => {
277
278
  disabled: l
278
279
  }
279
280
  ),
280
- /* @__PURE__ */ e.jsx(O, { children: i ? /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col items-center", children: [
281
+ /* @__PURE__ */ e.jsx(B, { children: i ? /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col items-center", children: [
281
282
  "No results found.",
282
283
  /* @__PURE__ */ e.jsx(
283
- R,
284
+ E,
284
285
  {
285
286
  variant: "link",
286
287
  onClick: () => {
@@ -315,10 +316,10 @@ const Q = (o, n) => {
315
316
  ]
316
317
  }
317
318
  );
318
- }, ue = (o) => ({
319
+ }, xe = (o) => ({
319
320
  renderSearch: ({ isOpen: n, onClose: t }) => /* @__PURE__ */ e.jsx(v, { children: /* @__PURE__ */ e.jsx(X, { isOpen: n, onClose: t, options: o }) })
320
321
  });
321
322
  export {
322
- ue as pagefindSearchPlugin
323
+ xe as pagefindSearchPlugin
323
324
  };
324
325
  //# sourceMappingURL=zudoku.plugin-search-pagefind.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zudoku.plugin-search-pagefind.js","sources":["../src/lib/ui/Callout.tsx","../src/lib/plugins/search-pagefind/get-results.tsx","../src/lib/plugins/search-pagefind/ResultList.tsx","../src/lib/plugins/search-pagefind/PagefindSearch.tsx","../src/lib/plugins/search-pagefind/index.tsx"],"sourcesContent":["import {\n AlertTriangleIcon,\n InfoIcon,\n LightbulbIcon,\n type LucideIcon,\n ShieldAlertIcon,\n} from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst stylesMap = {\n note: {\n border: \"border-gray-300 dark:border-zinc-800\",\n bg: \"bg-gray-100 dark:bg-zinc-800/50\",\n iconColor: \"text-gray-600 dark:text-zinc-300\",\n titleColor: \"text-gray-600 dark:text-zinc-300\",\n textColor: \"text-gray-600 dark:text-zinc-300\",\n Icon: InfoIcon as LucideIcon,\n },\n tip: {\n border: \"border-green-500 dark:border-green-800\",\n bg: \"bg-green-200/25 dark:bg-green-950/70\",\n iconColor: \"text-green-600 dark:text-green-200\",\n titleColor: \"text-green-700 dark:text-green-200\",\n textColor: \"text-green-600 dark:text-green-50\",\n Icon: LightbulbIcon as LucideIcon,\n },\n info: {\n border: \"border-blue-400 dark:border-blue-900/60\",\n bg: \"bg-blue-50 dark:bg-blue-950/40\",\n iconColor: \"text-blue-400 dark:text-blue-200\",\n titleColor: \"text-blue-700 dark:text-blue-200\",\n textColor: \"text-blue-600 dark:text-blue-100\",\n Icon: InfoIcon as LucideIcon,\n },\n caution: {\n border: \"border-yellow-400 dark:border-yellow-400/25\",\n bg: \"bg-yellow-100/60 dark:bg-yellow-400/10\",\n iconColor: \"text-yellow-500 dark:text-yellow-300\",\n titleColor: \"text-yellow-600 dark:text-yellow-300\",\n textColor: \"text-yellow-700 dark:text-yellow-200\",\n Icon: AlertTriangleIcon as LucideIcon,\n },\n danger: {\n border: \"border-rose-400 dark:border-rose-800\",\n bg: \"bg-rose-50 dark:bg-rose-950/40\",\n iconColor: \"text-rose-400 dark:text-rose-300\",\n titleColor: \"text-rose-800 dark:text-rose-300\",\n textColor: \"text-rose-700 dark:text-rose-100\",\n Icon: ShieldAlertIcon as LucideIcon,\n },\n} as const;\n\ntype CalloutProps = {\n type: keyof typeof stylesMap;\n title?: string;\n children: ReactNode;\n className?: string;\n icon?: boolean;\n};\n\nexport const Callout = ({\n type,\n children,\n title,\n className,\n icon = true,\n}: CalloutProps) => {\n const { border, bg, iconColor, titleColor, textColor, Icon } =\n stylesMap[type];\n\n return (\n <div\n className={cn(\n \"not-prose rounded-md border p-4 text-md my-2\",\n icon &&\n \"grid grid-cols-[min-content_1fr] items-baseline grid-rows-[fit-content_1fr] gap-x-4 gap-y-2\",\n !icon && title && \"flex flex-col gap-2\",\n \"[&_a]:underline [&_a]:decoration-current [&_a]:decoration-from-font [&_a]:underline-offset-4 hover:[&_a]:decoration-1\",\n \"[&_.code-block-wrapper]:border\",\n \"[&_ul]:list-disc [&_ol]:list-decimal [&_ul]:ps-4 [&_ul>li]:ps-1 [&_ul>li]:my-1\",\n icon && title && \"items-center\",\n border,\n bg,\n className,\n )}\n >\n {icon && (\n <Icon\n className={cn(!title ? \"translate-y-1\" : \"align-middle\", iconColor)}\n size={20}\n aria-hidden=\"true\"\n />\n )}\n {title && <h3 className={cn(\"font-medium\", titleColor)}>{title}</h3>}\n <div\n className={cn(\n icon && \"col-start-2\",\n !title && icon && \"row-start-1\",\n textColor,\n \"overflow-x-auto\",\n )}\n >\n {children}\n </div>\n </div>\n );\n};\n","import type { AuthState } from \"../../authentication/state.js\";\nimport type { ZudokuContext } from \"../../core/ZudokuContext.js\";\nimport type { PagefindOptions } from \"./index.js\";\nimport type { PagefindSearchFragment, PagefindSearchResults } from \"./types.js\";\n\nexport const getResults = async ({\n search,\n options,\n auth,\n context,\n}: {\n search: PagefindSearchResults;\n options: PagefindOptions;\n auth: AuthState;\n context: ZudokuContext;\n}) => {\n const maxResults = options.maxResults ?? 10;\n const transformFn = options.transformResults ?? (() => true);\n\n const transformedResults: PagefindSearchFragment[] = [];\n\n const generator = searchResultGenerator({\n search,\n transformFn,\n auth,\n context,\n });\n\n for await (const result of generator) {\n transformedResults.push(result);\n if (transformedResults.length >= maxResults) break;\n }\n\n return transformedResults;\n};\n\nasync function* searchResultGenerator({\n search,\n transformFn,\n auth,\n context,\n}: {\n search: PagefindSearchResults;\n transformFn: NonNullable<PagefindOptions[\"transformResults\"]>;\n auth: AuthState<unknown>;\n context: ZudokuContext;\n}) {\n const batchSize = 5;\n let processedCount = 0;\n\n while (processedCount < search.results.length) {\n const batch = search.results.slice(\n processedCount,\n processedCount + batchSize,\n );\n processedCount += batch.length;\n\n const batchData = await Promise.all(batch.map((result) => result.data()));\n\n for (const result of batchData) {\n const transformed = transformFn({ result, auth, context });\n\n if (transformed === false) {\n // Skip this result\n continue;\n } else if (transformed === true || transformed == null) {\n // Keep the original result\n yield result;\n } else {\n // Return the transformed result\n yield transformed;\n }\n }\n }\n}\n","import { BracketsIcon, FileTextIcon } from \"lucide-react\";\nimport { useLayoutEffect, useRef } from \"react\";\nimport { Link, useNavigate } from \"react-router\";\nimport { CommandGroup, CommandItem, CommandList } from \"zudoku/ui/Command.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport {\n type PagefindSearchFragment,\n type PagefindSubResult,\n} from \"./types.js\";\n\nconst sortSubResults = (a: PagefindSubResult, b: PagefindSubResult) => {\n const aScore = a.weighted_locations.reduce(\n (sum, loc) => sum + loc.balanced_score,\n 0,\n );\n const bScore = b.weighted_locations.reduce(\n (sum, loc) => sum + loc.balanced_score,\n 0,\n );\n return bScore - aScore;\n};\n\nconst hoverClassname = `cursor-pointer border border-transparent data-[selected=true]:border-border`;\n\nexport const ResultList = ({\n basePath,\n searchResults,\n searchTerm,\n onClose,\n maxSubResults = 4,\n}: {\n basePath?: string;\n searchResults: PagefindSearchFragment[];\n searchTerm: string;\n onClose: () => void;\n maxSubResults?: number;\n}) => {\n const navigate = useNavigate();\n const commandListRef = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n requestIdleCallback(() => {\n commandListRef.current?.scrollTo({ top: 0 });\n });\n }, [searchTerm]);\n\n const stripBasePath = (url: string) => {\n if (basePath && url.startsWith(basePath)) {\n return joinUrl(url.slice(basePath.length));\n }\n return url;\n };\n\n return (\n <CommandList className=\"max-h-[450px]\" ref={commandListRef}>\n {searchTerm && searchResults.length > 0 && (\n <CommandGroup\n className=\"text-sm text-muted-foreground\"\n heading={`${searchResults.length} results for \"${searchTerm}\"`}\n />\n )}\n {searchTerm &&\n searchResults.map((result) => (\n <CommandGroup\n key={[result.meta.title ?? result.excerpt, result.url].join(\"-\")}\n >\n <CommandItem\n asChild\n value={`${result.meta.title}-${result.url}`}\n className={hoverClassname}\n onSelect={() => {\n void navigate(stripBasePath(result.url));\n onClose();\n }}\n >\n <Link to={stripBasePath(result.url)}>\n {result.meta.section === \"openapi\" ? (\n <BracketsIcon />\n ) : (\n <FileTextIcon />\n )}\n {result.meta.title}\n </Link>\n </CommandItem>\n {result.sub_results\n .sort(sortSubResults)\n .slice(0, maxSubResults)\n .map((subResult) => (\n <CommandItem\n asChild\n key={`sub-${result.meta.title}-${subResult.url}`}\n value={`sub-${result.meta.title}-${subResult.url}`}\n className={hoverClassname}\n onSelect={() => {\n void navigate(stripBasePath(subResult.url));\n onClose();\n }}\n >\n <Link to={stripBasePath(subResult.url)} onClick={onClose}>\n <div className=\"flex flex-col items-start gap-2 ms-2.5 ps-5 border-l border-muted-foreground/50\">\n <span className=\"font-bold\">{subResult.title}</span>\n <span\n className=\"text-[13px] [&_mark]:bg-primary [&_mark]:text-primary-foreground\"\n dangerouslySetInnerHTML={{ __html: subResult.excerpt }}\n />\n </div>\n </Link>\n </CommandItem>\n ))}\n </CommandGroup>\n ))}\n </CommandList>\n );\n};\n","import { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { keepPreviousData, useQuery } from \"@tanstack/react-query\";\nimport { useRef, useState } from \"react\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport { Callout } from \"zudoku/ui/Callout.js\";\nimport {\n CommandDialog,\n CommandEmpty,\n CommandInput,\n} from \"zudoku/ui/Command.js\";\nimport { DialogTitle } from \"zudoku/ui/Dialog.js\";\nimport { useAuthState } from \"../../authentication/state.js\";\nimport { useZudoku } from \"../../components/context/ZudokuContext.js\";\nimport { SEARCH_PROTECTED_SECTION } from \"../../core/RouteGuard.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { getResults } from \"./get-results.js\";\nimport type { PagefindOptions } from \"./index.js\";\nimport { ResultList } from \"./ResultList.js\";\nimport type { Pagefind } from \"./types.js\";\n\nconst DEFAULT_RANKING = {\n // Slightly lower than default because API docs tend to have repetitive terms (parameter names, HTTP methods, etc.)\n termFrequency: 0.8,\n // Lower than default because API documentation pages tend to be longer due to comprehensive endpoint documentation\n pageLength: 0.6,\n // Slightly higher than default because in technical documentation, exact matches should be prioritized\n termSimilarity: 1.2,\n // Slightly lower than default because API docs might have legitimate repetition of terms\n termSaturation: 1.2,\n};\n\nconst importPagefind = (basePath?: string): Promise<Pagefind> =>\n import.meta.env.DEV\n ? // @ts-expect-error TypeScript can't resolve the import\n import(/* @vite-ignore */ \"/pagefind/pagefind.js\")\n : import(/* @vite-ignore */ joinUrl(basePath, \"/pagefind/pagefind.js\"));\n\nconst usePagefind = (options: PagefindOptions) => {\n const {\n options: { basePath },\n } = useZudoku();\n const { data: pagefind, ...result } = useQuery<Pagefind>({\n queryKey: [\"pagefind\", options.ranking],\n retry: false,\n queryFn: async () => {\n const pagefind = await importPagefind(basePath);\n await pagefind.init();\n await pagefind.options({\n ranking: {\n termFrequency:\n options.ranking?.termFrequency ?? DEFAULT_RANKING.termFrequency,\n pageLength: options.ranking?.pageLength ?? DEFAULT_RANKING.pageLength,\n termSimilarity:\n options.ranking?.termSimilarity ?? DEFAULT_RANKING.termSimilarity,\n termSaturation:\n options.ranking?.termSaturation ?? DEFAULT_RANKING.termSaturation,\n },\n });\n\n return pagefind;\n },\n enabled: typeof window !== \"undefined\",\n });\n\n if (result.isError && result.error.message !== \"NOT_BUILT_YET\") {\n // eslint-disable-next-line no-console\n console.error(result.error);\n }\n\n return { ...result, pagefind };\n};\n\nexport const PagefindSearch = ({\n isOpen,\n onClose,\n options,\n}: {\n isOpen: boolean;\n onClose: () => void;\n options: PagefindOptions;\n}) => {\n const { pagefind, error, isError } = usePagefind(options);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const auth = useAuthState();\n const context = useZudoku();\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { data: searchResults } = useQuery({\n queryKey: [\"pagefind-search\", searchTerm, auth.isAuthenticated],\n queryFn: async () => {\n const filters = auth.isAuthenticated\n ? undefined\n : { not: { section: SEARCH_PROTECTED_SECTION } };\n\n const search = await pagefind?.search(searchTerm, { filters });\n if (!search) return [];\n return getResults({ search, options, auth, context });\n },\n placeholderData: keepPreviousData,\n enabled: !!pagefind && !!searchTerm,\n });\n\n return (\n <CommandDialog\n command={{ shouldFilter: false }}\n content={{ className: \"max-w-[750px]\" }}\n open={isOpen}\n onOpenChange={onClose}\n >\n <VisuallyHidden>\n <DialogTitle>Search</DialogTitle>\n </VisuallyHidden>\n <CommandInput\n ref={inputRef}\n placeholder=\"Search...\"\n value={searchTerm}\n onValueChange={setSearchTerm}\n disabled={isError}\n />\n <CommandEmpty>\n {searchTerm ? (\n <div className=\"flex flex-col items-center\">\n No results found.\n <Button\n variant=\"link\"\n onClick={() => {\n setSearchTerm(\"\");\n inputRef.current?.focus();\n }}\n >\n Clear search\n </Button>\n </div>\n ) : (\n \"Start typing to search\"\n )}\n </CommandEmpty>\n {isError ? (\n <div className=\"p-4 text-sm\">\n {error.message === \"NOT_BUILT_YET\" ? (\n <Callout type=\"info\">\n Search is currently not available in development mode by default.\n <br />\n To still use search in development, run <code>\n zudoku build\n </code>{\" \"}\n and copy the <code>dist/pagefind</code> directory to your{\" \"}\n <code>public</code> directory.\n </Callout>\n ) : (\n \"An error occurred while loading search.\"\n )}\n </div>\n ) : (\n <ResultList\n basePath={context.options.basePath}\n searchResults={searchResults ?? []}\n searchTerm={searchTerm}\n onClose={onClose}\n maxSubResults={options.maxSubResults}\n />\n )}\n </CommandDialog>\n );\n};\n","import type { ZudokuConfig } from \"../../../config/validators/validate.js\";\nimport { ClientOnly } from \"../../components/ClientOnly.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\nimport { PagefindSearch } from \"./PagefindSearch.js\";\n\nexport type PagefindOptions = Extract<\n ZudokuConfig[\"search\"],\n { type: \"pagefind\" }\n>;\n\nexport const pagefindSearchPlugin = (\n options: PagefindOptions,\n): ZudokuPlugin => {\n return {\n renderSearch: ({ isOpen, onClose }) => (\n <ClientOnly>\n <PagefindSearch isOpen={isOpen} onClose={onClose} options={options} />\n </ClientOnly>\n ),\n };\n};\n"],"names":["stylesMap","InfoIcon","LightbulbIcon","AlertTriangleIcon","ShieldAlertIcon","Callout","type","children","title","className","icon","border","bg","iconColor","titleColor","textColor","Icon","jsxs","cn","jsx","getResults","search","options","auth","context","maxResults","transformFn","transformedResults","generator","searchResultGenerator","result","processedCount","batch","batchData","transformed","sortSubResults","a","b","aScore","sum","loc","hoverClassname","ResultList","basePath","searchResults","searchTerm","onClose","maxSubResults","navigate","useNavigate","commandListRef","useRef","useLayoutEffect","stripBasePath","url","joinUrl","CommandList","CommandGroup","CommandItem","Link","BracketsIcon","FileTextIcon","subResult","DEFAULT_RANKING","importPagefind","usePagefind","useZudoku","pagefind","useQuery","PagefindSearch","isOpen","error","isError","setSearchTerm","useState","useAuthState","inputRef","filters","SEARCH_PROTECTED_SECTION","keepPreviousData","CommandDialog","VisuallyHidden","DialogTitle","CommandInput","CommandEmpty","Button","pagefindSearchPlugin","ClientOnly"],"mappings":"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"}
1
+ {"version":3,"file":"zudoku.plugin-search-pagefind.js","sources":["../src/lib/ui/Callout.tsx","../src/lib/plugins/search-pagefind/get-results.tsx","../src/lib/plugins/search-pagefind/ResultList.tsx","../src/lib/plugins/search-pagefind/PagefindSearch.tsx","../src/lib/plugins/search-pagefind/index.tsx"],"sourcesContent":["import {\n AlertTriangleIcon,\n InfoIcon,\n LightbulbIcon,\n type LucideIcon,\n ShieldAlertIcon,\n} from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst stylesMap = {\n note: {\n border: \"border-gray-300 dark:border-zinc-800\",\n bg: \"bg-gray-100 dark:bg-zinc-800/50\",\n iconColor: \"text-gray-600 dark:text-zinc-300\",\n titleColor: \"text-gray-600 dark:text-zinc-300\",\n textColor: \"text-gray-600 dark:text-zinc-300\",\n Icon: InfoIcon as LucideIcon,\n },\n tip: {\n border: \"border-green-500 dark:border-green-800\",\n bg: \"bg-green-200/25 dark:bg-green-950/70\",\n iconColor: \"text-green-600 dark:text-green-200\",\n titleColor: \"text-green-700 dark:text-green-200\",\n textColor: \"text-green-600 dark:text-green-50\",\n Icon: LightbulbIcon as LucideIcon,\n },\n info: {\n border: \"border-blue-400 dark:border-blue-900/60\",\n bg: \"bg-blue-50 dark:bg-blue-950/40\",\n iconColor: \"text-blue-400 dark:text-blue-200\",\n titleColor: \"text-blue-700 dark:text-blue-200\",\n textColor: \"text-blue-600 dark:text-blue-100\",\n Icon: InfoIcon as LucideIcon,\n },\n caution: {\n border: \"border-yellow-400 dark:border-yellow-400/25\",\n bg: \"bg-yellow-100/60 dark:bg-yellow-400/10\",\n iconColor: \"text-yellow-500 dark:text-yellow-300\",\n titleColor: \"text-yellow-600 dark:text-yellow-300\",\n textColor: \"text-yellow-700 dark:text-yellow-200\",\n Icon: AlertTriangleIcon as LucideIcon,\n },\n danger: {\n border: \"border-rose-400 dark:border-rose-800\",\n bg: \"bg-rose-50 dark:bg-rose-950/40\",\n iconColor: \"text-rose-400 dark:text-rose-300\",\n titleColor: \"text-rose-800 dark:text-rose-300\",\n textColor: \"text-rose-700 dark:text-rose-100\",\n Icon: ShieldAlertIcon as LucideIcon,\n },\n} as const;\n\ntype CalloutProps = {\n type: keyof typeof stylesMap;\n title?: string;\n children: ReactNode;\n className?: string;\n icon?: boolean;\n};\n\nexport const Callout = ({\n type,\n children,\n title,\n className,\n icon = true,\n}: CalloutProps) => {\n const { border, bg, iconColor, titleColor, textColor, Icon } =\n stylesMap[type];\n\n return (\n <div\n className={cn(\n \"not-prose rounded-md border p-4 text-md my-2\",\n icon &&\n \"grid grid-cols-[min-content_1fr] items-baseline grid-rows-[fit-content_1fr] gap-x-4 gap-y-2\",\n !icon && title && \"flex flex-col gap-2\",\n \"[&_a]:underline [&_a]:decoration-current [&_a]:decoration-from-font [&_a]:underline-offset-4 hover:[&_a]:decoration-1\",\n \"[&_.code-block-wrapper]:border\",\n \"[&_ul]:list-disc [&_ol]:list-decimal [&_ul]:ps-4 [&_ul>li]:ps-1 [&_ul>li]:my-1\",\n icon && title && \"items-center\",\n border,\n bg,\n className,\n )}\n >\n {icon && (\n <Icon\n className={cn(!title ? \"translate-y-1\" : \"align-middle\", iconColor)}\n size={20}\n aria-hidden=\"true\"\n />\n )}\n {title && <h3 className={cn(\"font-medium\", titleColor)}>{title}</h3>}\n <div\n className={cn(\n icon && \"col-start-2\",\n !title && icon && \"row-start-1\",\n textColor,\n \"overflow-x-auto\",\n )}\n >\n {children}\n </div>\n </div>\n );\n};\n","import type { AuthState } from \"../../authentication/state.js\";\nimport type { ZudokuContext } from \"../../core/ZudokuContext.js\";\nimport type { PagefindOptions } from \"./index.js\";\nimport type { PagefindSearchFragment, PagefindSearchResults } from \"./types.js\";\n\nexport const getResults = async ({\n search,\n options,\n auth,\n context,\n}: {\n search: PagefindSearchResults;\n options: PagefindOptions;\n auth: AuthState;\n context: ZudokuContext;\n}) => {\n const maxResults = options.maxResults ?? 10;\n const transformFn = options.transformResults ?? (() => true);\n\n const transformedResults: PagefindSearchFragment[] = [];\n\n const generator = searchResultGenerator({\n search,\n transformFn,\n auth,\n context,\n });\n\n for await (const result of generator) {\n transformedResults.push(result);\n if (transformedResults.length >= maxResults) break;\n }\n\n return transformedResults;\n};\n\nasync function* searchResultGenerator({\n search,\n transformFn,\n auth,\n context,\n}: {\n search: PagefindSearchResults;\n transformFn: NonNullable<PagefindOptions[\"transformResults\"]>;\n auth: AuthState<unknown>;\n context: ZudokuContext;\n}) {\n const batchSize = 5;\n let processedCount = 0;\n\n while (processedCount < search.results.length) {\n const batch = search.results.slice(\n processedCount,\n processedCount + batchSize,\n );\n processedCount += batch.length;\n\n const batchData = await Promise.all(batch.map((result) => result.data()));\n\n for (const result of batchData) {\n const transformed = transformFn({ result, auth, context });\n\n if (transformed === false) {\n // Skip this result\n continue;\n } else if (transformed === true || transformed == null) {\n // Keep the original result\n yield result;\n } else {\n // Return the transformed result\n yield transformed;\n }\n }\n }\n}\n","import { BracketsIcon, FileTextIcon } from \"lucide-react\";\nimport { useLayoutEffect, useRef } from \"react\";\nimport { Link, useNavigate } from \"react-router\";\nimport { CommandGroup, CommandItem, CommandList } from \"zudoku/ui/Command.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport {\n type PagefindSearchFragment,\n type PagefindSubResult,\n} from \"./types.js\";\n\nconst sortSubResults = (a: PagefindSubResult, b: PagefindSubResult) => {\n const aScore = a.weighted_locations.reduce(\n (sum, loc) => sum + loc.balanced_score,\n 0,\n );\n const bScore = b.weighted_locations.reduce(\n (sum, loc) => sum + loc.balanced_score,\n 0,\n );\n return bScore - aScore;\n};\n\nconst hoverClassname = `cursor-pointer border border-transparent data-[selected=true]:border-border`;\n\nexport const ResultList = ({\n basePath,\n searchResults,\n searchTerm,\n onClose,\n maxSubResults = 4,\n}: {\n basePath?: string;\n searchResults: PagefindSearchFragment[];\n searchTerm: string;\n onClose: () => void;\n maxSubResults?: number;\n}) => {\n const navigate = useNavigate();\n const commandListRef = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n requestIdleCallback(() => {\n commandListRef.current?.scrollTo({ top: 0 });\n });\n }, [searchTerm]);\n\n const stripBasePath = (url: string) => {\n if (basePath && url.startsWith(basePath)) {\n return joinUrl(url.slice(basePath.length));\n }\n return url;\n };\n\n return (\n <CommandList className=\"max-h-[450px]\" ref={commandListRef}>\n {searchTerm && searchResults.length > 0 && (\n <CommandGroup\n className=\"text-sm text-muted-foreground\"\n heading={`${searchResults.length} results for \"${searchTerm}\"`}\n />\n )}\n {searchTerm &&\n searchResults.map((result) => (\n <CommandGroup\n key={[result.meta.title ?? result.excerpt, result.url].join(\"-\")}\n >\n <CommandItem\n asChild\n value={`${result.meta.title}-${result.url}`}\n className={hoverClassname}\n onSelect={() => {\n void navigate(stripBasePath(result.url));\n onClose();\n }}\n >\n <Link to={stripBasePath(result.url)}>\n {result.meta.section === \"openapi\" ? (\n <BracketsIcon />\n ) : (\n <FileTextIcon />\n )}\n {result.meta.title}\n </Link>\n </CommandItem>\n {result.sub_results\n .sort(sortSubResults)\n .slice(0, maxSubResults)\n .map((subResult) => (\n <CommandItem\n asChild\n key={`sub-${result.meta.title}-${subResult.url}`}\n value={`sub-${result.meta.title}-${subResult.url}`}\n className={hoverClassname}\n onSelect={() => {\n void navigate(stripBasePath(subResult.url));\n onClose();\n }}\n >\n <Link to={stripBasePath(subResult.url)} onClick={onClose}>\n <div className=\"flex flex-col items-start gap-2 ms-2.5 ps-5 border-l border-muted-foreground/50\">\n <span className=\"font-bold\">{subResult.title}</span>\n <span\n className=\"text-[13px] [&_mark]:bg-primary [&_mark]:text-primary-foreground\"\n dangerouslySetInnerHTML={{ __html: subResult.excerpt }}\n />\n </div>\n </Link>\n </CommandItem>\n ))}\n </CommandGroup>\n ))}\n </CommandList>\n );\n};\n","import { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { keepPreviousData, useQuery } from \"@tanstack/react-query\";\nimport { useRef, useState } from \"react\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport { Callout } from \"zudoku/ui/Callout.js\";\nimport {\n CommandDialog,\n CommandEmpty,\n CommandInput,\n} from \"zudoku/ui/Command.js\";\nimport { DialogTitle } from \"zudoku/ui/Dialog.js\";\nimport { useAuthState } from \"../../authentication/state.js\";\nimport { useZudoku } from \"../../components/context/ZudokuContext.js\";\nimport { SEARCH_PROTECTED_SECTION } from \"../../core/RouteGuard.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { getResults } from \"./get-results.js\";\nimport type { PagefindOptions } from \"./index.js\";\nimport { ResultList } from \"./ResultList.js\";\nimport type { Pagefind } from \"./types.js\";\n\nconst DEFAULT_RANKING = {\n // Slightly lower than default because API docs tend to have repetitive terms (parameter names, HTTP methods, etc.)\n termFrequency: 0.8,\n // Lower than default because API documentation pages tend to be longer due to comprehensive endpoint documentation\n pageLength: 0.6,\n // Slightly higher than default because in technical documentation, exact matches should be prioritized\n termSimilarity: 1.2,\n // Slightly lower than default because API docs might have legitimate repetition of terms\n termSaturation: 1.2,\n};\n\nconst importPagefind = (basePath?: string): Promise<Pagefind> =>\n import.meta.env.DEV\n ? // @ts-expect-error TypeScript can't resolve the import\n import(/* @vite-ignore */ \"/pagefind/pagefind.js\")\n : import(/* @vite-ignore */ joinUrl(basePath, \"/pagefind/pagefind.js\"));\n\nconst usePagefind = (options: PagefindOptions) => {\n const {\n options: { basePath },\n } = useZudoku();\n const { data: pagefind, ...result } = useQuery<Pagefind>({\n queryKey: [\"pagefind\", options.ranking],\n retry: false,\n queryFn: async () => {\n const pagefind = await importPagefind(basePath);\n await pagefind.init();\n await pagefind.options({\n ranking: {\n termFrequency:\n options.ranking?.termFrequency ?? DEFAULT_RANKING.termFrequency,\n pageLength: options.ranking?.pageLength ?? DEFAULT_RANKING.pageLength,\n termSimilarity:\n options.ranking?.termSimilarity ?? DEFAULT_RANKING.termSimilarity,\n termSaturation:\n options.ranking?.termSaturation ?? DEFAULT_RANKING.termSaturation,\n },\n });\n\n return pagefind;\n },\n enabled: typeof window !== \"undefined\",\n });\n\n if (result.isError && result.error.message !== \"NOT_BUILT_YET\") {\n // eslint-disable-next-line no-console\n console.error(result.error);\n }\n\n return { ...result, pagefind };\n};\n\nexport const PagefindSearch = ({\n isOpen,\n onClose,\n options,\n}: {\n isOpen: boolean;\n onClose: () => void;\n options: PagefindOptions;\n}) => {\n const { pagefind, error, isError } = usePagefind(options);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const auth = useAuthState();\n const context = useZudoku();\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { data: searchResults } = useQuery({\n queryKey: [\"pagefind-search\", searchTerm, auth.isAuthenticated],\n queryFn: async () => {\n const filters = auth.isAuthenticated\n ? undefined\n : { not: { section: SEARCH_PROTECTED_SECTION } };\n\n const search = await pagefind?.search(searchTerm, { filters });\n if (!search) return [];\n return getResults({ search, options, auth, context });\n },\n placeholderData: keepPreviousData,\n enabled: !!pagefind && !!searchTerm,\n });\n\n return (\n <CommandDialog\n command={{ shouldFilter: false }}\n content={{ className: \"max-w-[750px]\" }}\n open={isOpen}\n onOpenChange={onClose}\n >\n <VisuallyHidden>\n <DialogTitle>Search</DialogTitle>\n </VisuallyHidden>\n <CommandInput\n ref={inputRef}\n placeholder=\"Search...\"\n value={searchTerm}\n onValueChange={setSearchTerm}\n disabled={isError}\n />\n <CommandEmpty>\n {searchTerm ? (\n <div className=\"flex flex-col items-center\">\n No results found.\n <Button\n variant=\"link\"\n onClick={() => {\n setSearchTerm(\"\");\n inputRef.current?.focus();\n }}\n >\n Clear search\n </Button>\n </div>\n ) : (\n \"Start typing to search\"\n )}\n </CommandEmpty>\n {isError ? (\n <div className=\"p-4 text-sm\">\n {error.message === \"NOT_BUILT_YET\" ? (\n <Callout type=\"info\">\n Search is currently not available in development mode by default.\n <br />\n To still use search in development, run <code>\n zudoku build\n </code>{\" \"}\n and copy the <code>dist/pagefind</code> directory to your{\" \"}\n <code>public</code> directory.\n </Callout>\n ) : (\n \"An error occurred while loading search.\"\n )}\n </div>\n ) : (\n <ResultList\n basePath={context.options.basePath}\n searchResults={searchResults ?? []}\n searchTerm={searchTerm}\n onClose={onClose}\n maxSubResults={options.maxSubResults}\n />\n )}\n </CommandDialog>\n );\n};\n","import type { ZudokuConfig } from \"../../../config/validators/validate.js\";\nimport { ClientOnly } from \"../../components/ClientOnly.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\nimport { PagefindSearch } from \"./PagefindSearch.js\";\n\nexport type PagefindOptions = Extract<\n ZudokuConfig[\"search\"],\n { type: \"pagefind\" }\n>;\n\nexport const pagefindSearchPlugin = (\n options: PagefindOptions,\n): ZudokuPlugin => {\n return {\n renderSearch: ({ isOpen, onClose }) => (\n <ClientOnly>\n <PagefindSearch isOpen={isOpen} onClose={onClose} options={options} />\n </ClientOnly>\n ),\n };\n};\n"],"names":["stylesMap","InfoIcon","LightbulbIcon","AlertTriangleIcon","ShieldAlertIcon","Callout","type","children","title","className","icon","border","bg","iconColor","titleColor","textColor","Icon","jsxs","cn","jsx","getResults","search","options","auth","context","maxResults","transformFn","transformedResults","generator","searchResultGenerator","result","processedCount","batch","batchData","transformed","sortSubResults","a","b","aScore","sum","loc","hoverClassname","ResultList","basePath","searchResults","searchTerm","onClose","maxSubResults","navigate","useNavigate","commandListRef","useRef","useLayoutEffect","stripBasePath","url","joinUrl","CommandList","CommandGroup","CommandItem","Link","BracketsIcon","FileTextIcon","subResult","DEFAULT_RANKING","importPagefind","usePagefind","useZudoku","pagefind","useQuery","PagefindSearch","isOpen","error","isError","setSearchTerm","useState","useAuthState","inputRef","filters","SEARCH_PROTECTED_SECTION","keepPreviousData","CommandDialog","VisuallyHidden","DialogTitle","CommandInput","CommandEmpty","Button","pagefindSearchPlugin","ClientOnly"],"mappings":";;;;;;;;;;;;;AAUA,MAAMA,IAAY;AAAA,EAChB,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,MAAMC;AAAA,EAAA;AAAA,EAER,KAAK;AAAA,IACH,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,MAAMC;AAAA,EAAA;AAAA,EAER,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,MAAMD;AAAA,EAAA;AAAA,EAER,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,MAAME;AAAA,EAAA;AAAA,EAER,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,MAAMC;AAAA,EAAA;AAEV,GAUaC,IAAU,CAAC;AAAA,EACtB,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC,IAAO;AACT,MAAoB;AAClB,QAAM,EAAE,QAAAC,GAAQ,IAAAC,GAAI,WAAAC,GAAW,YAAAC,GAAY,WAAAC,GAAW,MAAAC,EAAA,IACpDhB,EAAUM,CAAI;AAEhB,SACEW,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAR,KACE;AAAA,QACF,CAACA,KAAQF,KAAS;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACAE,KAAQF,KAAS;AAAA,QACjBG;AAAA,QACAC;AAAA,QACAH;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAAC,KACCS,gBAAAA,EAAAA;AAAAA,UAACH;AAAA,UAAA;AAAA,YACC,WAAWE,EAAIV,IAA0B,iBAAlB,iBAAkCK,CAAS;AAAA,YAClE,MAAM;AAAA,YACN,eAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAGfL,2BAAU,MAAA,EAAG,WAAWU,EAAG,eAAeJ,CAAU,GAAI,UAAAN,GAAM;AAAA,QAC/DW,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAA,cACTR,KAAQ;AAAA,cACR,CAACF,KAASE,KAAQ;AAAA,cAClBK;AAAA,cACA;AAAA,YAAA;AAAA,YAGD,UAAAR;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN,GCtGaa,IAAa,OAAO;AAAA,EAC/B,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AACF,MAKM;AACJ,QAAMC,IAAaH,EAAQ,cAAc,IACnCI,IAAcJ,EAAQ,qBAAqB,MAAM,KAEjDK,IAA+C,CAAA,GAE/CC,IAAYC,EAAsB;AAAA,IACtC,QAAAR;AAAA,IACA,aAAAK;AAAA,IACA,MAAAH;AAAA,IACA,SAAAC;AAAA,EAAA,CACD;AAED,mBAAiBM,KAAUF;AAEzB,QADAD,EAAmB,KAAKG,CAAM,GAC1BH,EAAmB,UAAUF,EAAY;AAG/C,SAAOE;AACT;AAEA,gBAAgBE,EAAsB;AAAA,EACpC,QAAAR;AAAA,EACA,aAAAK;AAAA,EACA,MAAAH;AAAA,EACA,SAAAC;AACF,GAKG;AAED,MAAIO,IAAiB;AAErB,SAAOA,IAAiBV,EAAO,QAAQ,UAAQ;AAC7C,UAAMW,IAAQX,EAAO,QAAQ;AAAA,MAC3BU;AAAA,MACAA,IAAiB;AAAA,IAAA;AAEnB,IAAAA,KAAkBC,EAAM;AAExB,UAAMC,IAAY,MAAM,QAAQ,IAAID,EAAM,IAAI,CAACF,MAAWA,EAAO,KAAA,CAAM,CAAC;AAExE,eAAWA,KAAUG,GAAW;AAC9B,YAAMC,IAAcR,EAAY,EAAE,QAAAI,GAAQ,MAAAP,GAAM,SAAAC,GAAS;AAEzD,MAAIU,MAAgB,OAGTA,MAAgB,MAAQA,KAAe,OAEhD,MAAMJ,IAGN,MAAMI;AAAA,IAEV;AAAA,EACF;AACF;AChEA,MAAMC,IAAiB,CAACC,GAAsBC,MAAyB;AACrE,QAAMC,IAASF,EAAE,mBAAmB;AAAA,IAClC,CAACG,GAAKC,MAAQD,IAAMC,EAAI;AAAA,IACxB;AAAA,EAAA;AAMF,SAJeH,EAAE,mBAAmB;AAAA,IAClC,CAACE,GAAKC,MAAQD,IAAMC,EAAI;AAAA,IACxB;AAAA,EAAA,IAEcF;AAClB,GAEMG,IAAiB,+EAEVC,IAAa,CAAC;AAAA,EACzB,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC,IAAgB;AAClB,MAMM;AACJ,QAAMC,IAAWC,EAAA,GACXC,IAAiBC,EAA8B,IAAI;AAEzD,EAAAC,EAAgB,MAAM;AACpB,wBAAoB,MAAM;AACxB,MAAAF,EAAe,SAAS,SAAS,EAAE,KAAK,GAAG;AAAA,IAC7C,CAAC;AAAA,EACH,GAAG,CAACL,CAAU,CAAC;AAEf,QAAMQ,IAAgB,CAACC,MACjBX,KAAYW,EAAI,WAAWX,CAAQ,IAC9BY,EAAQD,EAAI,MAAMX,EAAS,MAAM,CAAC,IAEpCW;AAGT,SACErC,gBAAAA,EAAAA,KAACuC,GAAA,EAAY,WAAU,iBAAgB,KAAKN,GACzC,UAAA;AAAA,IAAAL,KAAcD,EAAc,SAAS,KACpCzB,gBAAAA,EAAAA;AAAAA,MAACsC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,GAAGb,EAAc,MAAM,iBAAiBC,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAG9DA,KACCD,EAAc,IAAI,CAACd,MACjBb,gBAAAA,EAAAA;AAAAA,MAACwC;AAAA,MAAA;AAAA,QAGC,UAAA;AAAA,UAAAtC,gBAAAA,EAAAA;AAAAA,YAACuC;AAAA,YAAA;AAAA,cACC,SAAO;AAAA,cACP,OAAO,GAAG5B,EAAO,KAAK,KAAK,IAAIA,EAAO,GAAG;AAAA,cACzC,WAAWW;AAAA,cACX,UAAU,MAAM;AACd,gBAAKO,EAASK,EAAcvB,EAAO,GAAG,CAAC,GACvCgB,EAAA;AAAA,cACF;AAAA,cAEA,iCAACa,GAAA,EAAK,IAAIN,EAAcvB,EAAO,GAAG,GAC/B,UAAA;AAAA,gBAAAA,EAAO,KAAK,YAAY,kCACtB8B,GAAA,CAAA,CAAa,0BAEbC,GAAA,EAAa;AAAA,gBAEf/B,EAAO,KAAK;AAAA,cAAA,EAAA,CACf;AAAA,YAAA;AAAA,UAAA;AAAA,UAEDA,EAAO,YACL,KAAKK,CAAc,EACnB,MAAM,GAAGY,CAAa,EACtB,IAAI,CAACe,MACJ3C,gBAAAA,EAAAA;AAAAA,YAACuC;AAAA,YAAA;AAAA,cACC,SAAO;AAAA,cAEP,OAAO,OAAO5B,EAAO,KAAK,KAAK,IAAIgC,EAAU,GAAG;AAAA,cAChD,WAAWrB;AAAA,cACX,UAAU,MAAM;AACd,gBAAKO,EAASK,EAAcS,EAAU,GAAG,CAAC,GAC1ChB,EAAA;AAAA,cACF;AAAA,cAEA,UAAA3B,gBAAAA,EAAAA,IAACwC,GAAA,EAAK,IAAIN,EAAcS,EAAU,GAAG,GAAG,SAAShB,GAC/C,UAAA7B,gBAAAA,OAAC,OAAA,EAAI,WAAU,mFACb,UAAA;AAAA,gBAAAE,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,aAAa,UAAA2C,EAAU,OAAM;AAAA,gBAC7C3C,gBAAAA,EAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,yBAAyB,EAAE,QAAQ2C,EAAU,QAAA;AAAA,kBAAQ;AAAA,gBAAA;AAAA,cACvD,EAAA,CACF,EAAA,CACF;AAAA,YAAA;AAAA,YAhBK,OAAOhC,EAAO,KAAK,KAAK,IAAIgC,EAAU,GAAG;AAAA,UAAA,CAkBjD;AAAA,QAAA;AAAA,MAAA;AAAA,MA5CE,CAAChC,EAAO,KAAK,SAASA,EAAO,SAASA,EAAO,GAAG,EAAE,KAAK,GAAG;AAAA,IAAA,CA8ClE;AAAA,EAAA,GACL;AAEJ,GC7FMiC,IAAkB;AAAA;AAAA,EAEtB,eAAe;AAAA;AAAA,EAEf,YAAY;AAAA;AAAA,EAEZ,gBAAgB;AAAA;AAAA,EAEhB,gBAAgB;AAClB,GAEMC,IAAiB,CAACrB,MAIlB;AAAA;AAAA,EAA0BY,EAAQZ,GAAU,uBAAuB;AAAA,GAEnEsB,IAAc,CAAC3C,MAA6B;AAChD,QAAM;AAAA,IACJ,SAAS,EAAE,UAAAqB,EAAA;AAAA,EAAS,IAClBuB,EAAA,GACE,EAAE,MAAMC,GAAU,GAAGrC,EAAA,IAAWsC,EAAmB;AAAA,IACvD,UAAU,CAAC,YAAY9C,EAAQ,OAAO;AAAA,IACtC,OAAO;AAAA,IACP,SAAS,YAAY;AACnB,YAAM6C,IAAW,MAAMH,EAAerB,CAAQ;AAC9C,mBAAMwB,EAAS,KAAA,GACf,MAAMA,EAAS,QAAQ;AAAA,QACrB,SAAS;AAAA,UACP,eACE7C,EAAQ,SAAS,iBAAiByC,EAAgB;AAAA,UACpD,YAAYzC,EAAQ,SAAS,cAAcyC,EAAgB;AAAA,UAC3D,gBACEzC,EAAQ,SAAS,kBAAkByC,EAAgB;AAAA,UACrD,gBACEzC,EAAQ,SAAS,kBAAkByC,EAAgB;AAAA,QAAA;AAAA,MACvD,CACD,GAEMI;AAAAA,IACT;AAAA,IACA,SAAS,OAAO,SAAW;AAAA,EAAA,CAC5B;AAED,SAAIrC,EAAO,WAAWA,EAAO,MAAM,YAAY,mBAE7C,QAAQ,MAAMA,EAAO,KAAK,GAGrB,EAAE,GAAGA,GAAQ,UAAAqC,EAAA;AACtB,GAEaE,IAAiB,CAAC;AAAA,EAC7B,QAAAC;AAAA,EACA,SAAAxB;AAAA,EACA,SAAAxB;AACF,MAIM;AACJ,QAAM,EAAE,UAAA6C,GAAU,OAAAI,GAAO,SAAAC,EAAA,IAAYP,EAAY3C,CAAO,GAClD,CAACuB,GAAY4B,CAAa,IAAIC,EAAS,EAAE,GACzCnD,IAAOoD,EAAA,GACPnD,IAAU0C,EAAA,GACVU,IAAWzB,EAAyB,IAAI,GAExC,EAAE,MAAMP,EAAA,IAAkBwB,EAAS;AAAA,IACvC,UAAU,CAAC,mBAAmBvB,GAAYtB,EAAK,eAAe;AAAA,IAC9D,SAAS,YAAY;AACnB,YAAMsD,IAAUtD,EAAK,kBACjB,SACA,EAAE,KAAK,EAAE,SAASuD,IAAyB,GAEzCzD,IAAS,MAAM8C,GAAU,OAAOtB,GAAY,EAAE,SAAAgC,GAAS;AAC7D,aAAKxD,IACED,EAAW,EAAE,QAAAC,GAAQ,SAAAC,GAAS,MAAAC,GAAM,SAAAC,GAAS,IADhC,CAAA;AAAA,IAEtB;AAAA,IACA,iBAAiBuD;AAAA,IACjB,SAAS,CAAC,CAACZ,KAAY,CAAC,CAACtB;AAAA,EAAA,CAC1B;AAED,SACE5B,gBAAAA,EAAAA;AAAAA,IAAC+D;AAAA,IAAA;AAAA,MACC,SAAS,EAAE,cAAc,GAAA;AAAA,MACzB,SAAS,EAAE,WAAW,gBAAA;AAAA,MACtB,MAAMV;AAAA,MACN,cAAcxB;AAAA,MAEd,UAAA;AAAA,QAAA3B,gBAAAA,MAAC8D,GAAA,EACC,UAAA9D,gBAAAA,EAAAA,IAAC+D,GAAA,EAAY,UAAA,SAAA,CAAM,GACrB;AAAA,QACA/D,gBAAAA,EAAAA;AAAAA,UAACgE;AAAA,UAAA;AAAA,YACC,KAAKP;AAAA,YACL,aAAY;AAAA,YACZ,OAAO/B;AAAA,YACP,eAAe4B;AAAA,YACf,UAAUD;AAAA,UAAA;AAAA,QAAA;AAAA,8BAEXY,GAAA,EACE,UAAAvC,2BACE,OAAA,EAAI,WAAU,8BAA6B,UAAA;AAAA,UAAA;AAAA,UAE1C1B,gBAAAA,EAAAA;AAAAA,YAACkE;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,SAAS,MAAM;AACb,gBAAAZ,EAAc,EAAE,GAChBG,EAAS,SAAS,MAAA;AAAA,cACpB;AAAA,cACD,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,EAAA,CACF,IAEA,0BAEJ;AAAA,QACCJ,IACCrD,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,eACZ,UAAAoD,EAAM,YAAY,kBACjBtD,gBAAAA,EAAAA,KAACZ,GAAA,EAAQ,MAAK,QAAO,UAAA;AAAA,UAAA;AAAA,gCAElB,MAAA,EAAG;AAAA,UAAE;AAAA,UACkCc,gBAAAA,EAAAA,IAAC,UAAK,UAAA,gBAE9C;AAAA,UAAQ;AAAA,UAAI;AAAA,UACCA,gBAAAA,EAAAA,IAAC,UAAK,UAAA,iBAAa;AAAA,UAAO;AAAA,UAAmB;AAAA,UAC1DA,gBAAAA,EAAAA,IAAC,UAAK,UAAA,UAAM;AAAA,UAAO;AAAA,QAAA,GACrB,IAEA,0CAAA,CAEJ,IAEAA,gBAAAA,EAAAA;AAAAA,UAACuB;AAAA,UAAA;AAAA,YACC,UAAUlB,EAAQ,QAAQ;AAAA,YAC1B,eAAeoB,KAAiB,CAAA;AAAA,YAChC,YAAAC;AAAA,YACA,SAAAC;AAAA,YACA,eAAexB,EAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACzB;AAAA,IAAA;AAAA,EAAA;AAIR,GC1JagE,KAAuB,CAClChE,OAEO;AAAA,EACL,cAAc,CAAC,EAAE,QAAAgD,GAAQ,SAAAxB,EAAA,MACvB3B,gBAAAA,EAAAA,IAACoE,GAAA,EACC,UAAApE,gBAAAA,EAAAA,IAACkD,GAAA,EAAe,QAAAC,GAAgB,SAAAxB,GAAkB,SAAAxB,GAAkB,EAAA,CACtE;AAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"zudoku.plugins.js","sources":["../src/lib/core/plugins.ts"],"sourcesContent":["import type { LucideIcon } from \"lucide-react\";\nimport type { ReactElement } from \"react\";\nimport type { Location, RouteObject } from \"react-router\";\nimport type { Navigation } from \"../../config/validators/NavigationSchema.js\";\nimport type { AuthenticationPlugin } from \"../authentication/authentication.js\";\nimport type { MdxComponentsType } from \"../util/MdxComponents.js\";\nimport type {\n ApiIdentity,\n ZudokuContext,\n ZudokuEvents,\n} from \"./ZudokuContext.js\";\n\nexport type ZudokuPlugin =\n | CommonPlugin\n | ProfileMenuPlugin\n | NavigationPlugin\n | ApiIdentityPlugin\n | SearchProviderPlugin\n | EventConsumerPlugin\n | AuthenticationPlugin;\n\nexport type { AuthenticationPlugin, RouteObject };\n\nexport interface NavigationPlugin {\n getRoutes: () => RouteObject[];\n getNavigation?: (path: string, context: ZudokuContext) => Promise<Navigation>;\n getProtectedRoutes?: () => string[];\n}\n\nexport const createApiIdentityPlugin = (\n plugin: ApiIdentityPlugin,\n): ApiIdentityPlugin => plugin;\n\nexport const createProfileMenuPlugin = (\n plugin: ProfileMenuPlugin,\n): ProfileMenuPlugin => plugin;\n\nexport interface ApiIdentityPlugin {\n getIdentities: (context: ZudokuContext) => Promise<ApiIdentity[]>;\n}\n\nexport interface SearchProviderPlugin {\n renderSearch: (o: {\n isOpen: boolean;\n onClose: () => void;\n }) => React.JSX.Element | null;\n}\n\nexport interface ProfileMenuPlugin {\n getProfileMenuItems: (context: ZudokuContext) => ProfileNavigationItem[];\n}\n\nexport type ProfileNavigationItem = {\n label: string;\n path?: string;\n weight?: number;\n category?: \"top\" | \"middle\" | \"bottom\";\n children?: ProfileNavigationItem[];\n icon?: LucideIcon;\n};\n\nexport interface CommonPlugin {\n initialize?: (\n context: ZudokuContext,\n ) => Promise<void | boolean> | void | boolean;\n getHead?: ({ location }: { location: Location }) => ReactElement | undefined;\n getMdxComponents?: () => MdxComponentsType;\n}\n\nexport type EventConsumerPlugin<Event extends ZudokuEvents = ZudokuEvents> = {\n events: { [K in keyof Event]?: Event[K] };\n};\n\nexport const isEventConsumerPlugin = (\n obj: ZudokuPlugin,\n): obj is EventConsumerPlugin =>\n \"events\" in obj && typeof obj.events === \"object\";\n\nexport const isProfileMenuPlugin = (\n obj: ZudokuPlugin,\n): obj is ProfileMenuPlugin =>\n \"getProfileMenuItems\" in obj && typeof obj.getProfileMenuItems === \"function\";\n\nexport const isNavigationPlugin = (\n obj: ZudokuPlugin,\n): obj is NavigationPlugin =>\n \"getRoutes\" in obj && typeof obj.getRoutes === \"function\";\n\nexport const isAuthenticationPlugin = (\n obj: ZudokuPlugin,\n): obj is AuthenticationPlugin =>\n \"signUp\" in obj && typeof obj.signUp === \"function\";\n\nexport const isSearchPlugin = (\n obj: ZudokuPlugin,\n): obj is SearchProviderPlugin =>\n \"renderSearch\" in obj && typeof obj.renderSearch === \"function\";\n\nexport const needsInitialization = (obj: ZudokuPlugin): obj is CommonPlugin =>\n \"initialize\" in obj && typeof obj.initialize === \"function\";\n\nexport const hasHead = (obj: ZudokuPlugin): obj is CommonPlugin =>\n \"getHead\" in obj && typeof obj.getHead === \"function\";\n\nexport const isMdxProviderPlugin = (obj: ZudokuPlugin): obj is CommonPlugin =>\n \"getMdxComponents\" in obj && typeof obj.getMdxComponents === \"function\";\n\nexport const isApiIdentityPlugin = (\n obj: ZudokuPlugin,\n): obj is ApiIdentityPlugin =>\n \"getIdentities\" in obj && typeof obj.getIdentities === \"function\";\n"],"names":["createApiIdentityPlugin","plugin","createProfileMenuPlugin","isEventConsumerPlugin","obj","isProfileMenuPlugin","isNavigationPlugin","isAuthenticationPlugin","isSearchPlugin","needsInitialization","hasHead","isMdxProviderPlugin","isApiIdentityPlugin"],"mappings":"AA6Ba,MAAAA,IAA0B,CACrCC,MACsBA,GAEXC,IAA0B,CACrCD,MACsBA,GAsCXE,IAAwB,CACnCC,MAEA,YAAYA,KAAO,OAAOA,EAAI,UAAW,UAE9BC,IAAsB,CACjCD,MAEA,yBAAyBA,KAAO,OAAOA,EAAI,uBAAwB,YAExDE,IAAqB,CAChCF,MAEA,eAAeA,KAAO,OAAOA,EAAI,aAAc,YAEpCG,IAAyB,CACpCH,MAEA,YAAYA,KAAO,OAAOA,EAAI,UAAW,YAE9BI,IAAiB,CAC5BJ,MAEA,kBAAkBA,KAAO,OAAOA,EAAI,gBAAiB,YAE1CK,IAAsB,CAACL,MAClC,gBAAgBA,KAAO,OAAOA,EAAI,cAAe,YAEtCM,IAAU,CAACN,MACtB,aAAaA,KAAO,OAAOA,EAAI,WAAY,YAEhCO,IAAsB,CAACP,MAClC,sBAAsBA,KAAO,OAAOA,EAAI,oBAAqB,YAElDQ,IAAsB,CACjCR,MAEA,mBAAmBA,KAAO,OAAOA,EAAI,iBAAkB;"}
1
+ {"version":3,"file":"zudoku.plugins.js","sources":["../src/lib/core/plugins.ts"],"sourcesContent":["import type { LucideIcon } from \"lucide-react\";\nimport type { ReactElement } from \"react\";\nimport type { Location, RouteObject } from \"react-router\";\nimport type { Navigation } from \"../../config/validators/NavigationSchema.js\";\nimport type { ProtectedRoutesInput } from \"../../config/validators/ProtectedRoutesSchema.js\";\nimport type { AuthenticationPlugin } from \"../authentication/authentication.js\";\nimport type { MdxComponentsType } from \"../util/MdxComponents.js\";\nimport type {\n ApiIdentity,\n ZudokuContext,\n ZudokuEvents,\n} from \"./ZudokuContext.js\";\n\nexport type ZudokuPlugin =\n | CommonPlugin\n | ProfileMenuPlugin\n | NavigationPlugin\n | ApiIdentityPlugin\n | SearchProviderPlugin\n | EventConsumerPlugin\n | AuthenticationPlugin;\n\nexport type { AuthenticationPlugin, RouteObject };\n\nexport interface NavigationPlugin {\n getRoutes: () => RouteObject[];\n getNavigation?: (path: string, context: ZudokuContext) => Promise<Navigation>;\n getProtectedRoutes?: () => ProtectedRoutesInput;\n}\n\nexport const createApiIdentityPlugin = (\n plugin: ApiIdentityPlugin,\n): ApiIdentityPlugin => plugin;\n\nexport const createProfileMenuPlugin = (\n plugin: ProfileMenuPlugin,\n): ProfileMenuPlugin => plugin;\n\nexport interface ApiIdentityPlugin {\n getIdentities: (context: ZudokuContext) => Promise<ApiIdentity[]>;\n}\n\nexport interface SearchProviderPlugin {\n renderSearch: (o: {\n isOpen: boolean;\n onClose: () => void;\n }) => React.JSX.Element | null;\n}\n\nexport interface ProfileMenuPlugin {\n getProfileMenuItems: (context: ZudokuContext) => ProfileNavigationItem[];\n}\n\nexport type ProfileNavigationItem = {\n label: string;\n path?: string;\n weight?: number;\n category?: \"top\" | \"middle\" | \"bottom\";\n children?: ProfileNavigationItem[];\n icon?: LucideIcon;\n};\n\nexport interface CommonPlugin {\n initialize?: (\n context: ZudokuContext,\n ) => Promise<void | boolean> | void | boolean;\n getHead?: ({ location }: { location: Location }) => ReactElement | undefined;\n getMdxComponents?: () => MdxComponentsType;\n}\n\nexport type EventConsumerPlugin<Event extends ZudokuEvents = ZudokuEvents> = {\n events: { [K in keyof Event]?: Event[K] };\n};\n\nexport const isEventConsumerPlugin = (\n obj: ZudokuPlugin,\n): obj is EventConsumerPlugin =>\n \"events\" in obj && typeof obj.events === \"object\";\n\nexport const isProfileMenuPlugin = (\n obj: ZudokuPlugin,\n): obj is ProfileMenuPlugin =>\n \"getProfileMenuItems\" in obj && typeof obj.getProfileMenuItems === \"function\";\n\nexport const isNavigationPlugin = (\n obj: ZudokuPlugin,\n): obj is NavigationPlugin =>\n \"getRoutes\" in obj && typeof obj.getRoutes === \"function\";\n\nexport const isAuthenticationPlugin = (\n obj: ZudokuPlugin,\n): obj is AuthenticationPlugin =>\n \"signUp\" in obj && typeof obj.signUp === \"function\";\n\nexport const isSearchPlugin = (\n obj: ZudokuPlugin,\n): obj is SearchProviderPlugin =>\n \"renderSearch\" in obj && typeof obj.renderSearch === \"function\";\n\nexport const needsInitialization = (obj: ZudokuPlugin): obj is CommonPlugin =>\n \"initialize\" in obj && typeof obj.initialize === \"function\";\n\nexport const hasHead = (obj: ZudokuPlugin): obj is CommonPlugin =>\n \"getHead\" in obj && typeof obj.getHead === \"function\";\n\nexport const isMdxProviderPlugin = (obj: ZudokuPlugin): obj is CommonPlugin =>\n \"getMdxComponents\" in obj && typeof obj.getMdxComponents === \"function\";\n\nexport const isApiIdentityPlugin = (\n obj: ZudokuPlugin,\n): obj is ApiIdentityPlugin =>\n \"getIdentities\" in obj && typeof obj.getIdentities === \"function\";\n"],"names":["createApiIdentityPlugin","plugin","createProfileMenuPlugin","isEventConsumerPlugin","obj","isProfileMenuPlugin","isNavigationPlugin","isAuthenticationPlugin","isSearchPlugin","needsInitialization","hasHead","isMdxProviderPlugin","isApiIdentityPlugin"],"mappings":"AA8BO,MAAMA,IAA0B,CACrCC,MACsBA,GAEXC,IAA0B,CACrCD,MACsBA,GAsCXE,IAAwB,CACnCC,MAEA,YAAYA,KAAO,OAAOA,EAAI,UAAW,UAE9BC,IAAsB,CACjCD,MAEA,yBAAyBA,KAAO,OAAOA,EAAI,uBAAwB,YAExDE,IAAqB,CAChCF,MAEA,eAAeA,KAAO,OAAOA,EAAI,aAAc,YAEpCG,IAAyB,CACpCH,MAEA,YAAYA,KAAO,OAAOA,EAAI,UAAW,YAE9BI,IAAiB,CAC5BJ,MAEA,kBAAkBA,KAAO,OAAOA,EAAI,gBAAiB,YAE1CK,IAAsB,CAACL,MAClC,gBAAgBA,KAAO,OAAOA,EAAI,cAAe,YAEtCM,IAAU,CAACN,MACtB,aAAaA,KAAO,OAAOA,EAAI,WAAY,YAEhCO,IAAsB,CAACP,MAClC,sBAAsBA,KAAO,OAAOA,EAAI,oBAAqB,YAElDQ,IAAsB,CACjCR,MAEA,mBAAmBA,KAAO,OAAOA,EAAI,iBAAkB;"}
@@ -0,0 +1,123 @@
1
+ import { A as s, B as t, F as r, H as o, I as u, a as i, b as n, L as S, c, M as R, d as F, N as E, e as N, f as _, O as A, P as l, R as U, g as d, h, i as m, S as C, j as v, k as P, l as g, m as p, D as y, n as x, E as H, o as L, p as k, q as D, r as b, s as w, t as M, u as O, v as B, V as T, w as I, x as f, y as V, z as W, C as q, G as z, J as G, K, Q as j, T as J, U as Q, W as X, X as Y, Y as Z, Z as $, _ as aa, $ as ea, a0 as sa, a1 as ta, a2 as ra, a3 as oa, a4 as ua, a5 as ia, a6 as na, a7 as Sa, a8 as ca, a9 as Ra, aa as Fa, ab as Ea, ac as Na, ad as _a, ae as Aa, af as la, ag as Ua, ah as da, ai as ha, aj as ma, ak as Ca, al as va, am as Pa, an as ga, ao as pa, ap as ya, aq as xa, ar as Ha, as as La, at as ka, au as Da, av as ba, aw as wa, ax as Ma, ay as Oa, az as Ba, aA as Ta, aB as Ia, aC as fa, aD as Va, aE as Wa, aF as qa, aG as za, aH as Ga, aI as Ka, aJ as ja, aK as Ja, aL as Qa, aM as Xa, aN as Ya, aO as Za, aP as $a, aQ as ae, aR as ee, aS as se, aT as te, aU as re, aV as oe, aW as ue, aX as ie, aY as ne, aZ as Se, a_ as ce, a$ as Re, b0 as Fe } from "./chunk-QMGIS6GS-DqecZ6nq.js";
2
+ export {
3
+ s as Await,
4
+ t as BrowserRouter,
5
+ r as Form,
6
+ o as HashRouter,
7
+ u as IDLE_BLOCKER,
8
+ i as IDLE_FETCHER,
9
+ n as IDLE_NAVIGATION,
10
+ S as Link,
11
+ c as Links,
12
+ R as MemoryRouter,
13
+ F as Meta,
14
+ E as NavLink,
15
+ N as Navigate,
16
+ _ as NavigationType,
17
+ A as Outlet,
18
+ l as PrefetchPageLinks,
19
+ U as Route,
20
+ d as Router,
21
+ h as RouterProvider,
22
+ m as Routes,
23
+ C as Scripts,
24
+ v as ScrollRestoration,
25
+ P as ServerRouter,
26
+ g as StaticRouter,
27
+ p as StaticRouterProvider,
28
+ y as UNSAFE_DataRouterContext,
29
+ x as UNSAFE_DataRouterStateContext,
30
+ H as UNSAFE_ErrorResponseImpl,
31
+ L as UNSAFE_FetchersContext,
32
+ k as UNSAFE_FrameworkContext,
33
+ D as UNSAFE_LocationContext,
34
+ b as UNSAFE_NavigationContext,
35
+ w as UNSAFE_RemixErrorBoundary,
36
+ M as UNSAFE_RouteContext,
37
+ O as UNSAFE_ServerMode,
38
+ B as UNSAFE_SingleFetchRedirectSymbol,
39
+ T as UNSAFE_ViewTransitionContext,
40
+ I as UNSAFE_createBrowserHistory,
41
+ f as UNSAFE_createClientRoutes,
42
+ V as UNSAFE_createClientRoutesWithHMRRevalidationOptOut,
43
+ W as UNSAFE_createRouter,
44
+ q as UNSAFE_decodeViaTurboStream,
45
+ z as UNSAFE_deserializeErrors,
46
+ G as UNSAFE_getHydrationData,
47
+ K as UNSAFE_getPatchRoutesOnNavigationFunction,
48
+ j as UNSAFE_getTurboStreamSingleFetchDataStrategy,
49
+ J as UNSAFE_hydrationRouteProperties,
50
+ Q as UNSAFE_invariant,
51
+ X as UNSAFE_mapRouteProperties,
52
+ Y as UNSAFE_shouldHydrateRouteLoader,
53
+ Z as UNSAFE_useFogOFWarDiscovery,
54
+ $ as UNSAFE_useScrollRestoration,
55
+ aa as UNSAFE_withComponentProps,
56
+ ea as UNSAFE_withErrorBoundaryProps,
57
+ sa as UNSAFE_withHydrateFallbackProps,
58
+ ta as createBrowserRouter,
59
+ ra as createCookie,
60
+ oa as createCookieSessionStorage,
61
+ ua as createHashRouter,
62
+ ia as createMemoryRouter,
63
+ na as createMemorySessionStorage,
64
+ Sa as createPath,
65
+ ca as createRequestHandler,
66
+ Ra as createRoutesFromChildren,
67
+ Fa as createRoutesFromElements,
68
+ Ea as createRoutesStub,
69
+ Na as createSearchParams,
70
+ _a as createSession,
71
+ Aa as createSessionStorage,
72
+ la as createStaticHandler,
73
+ Ua as createStaticRouter,
74
+ da as data,
75
+ ha as generatePath,
76
+ ma as href,
77
+ Ca as isCookie,
78
+ va as isRouteErrorResponse,
79
+ Pa as isSession,
80
+ ga as matchPath,
81
+ pa as matchRoutes,
82
+ ya as parsePath,
83
+ xa as redirect,
84
+ Ha as redirectDocument,
85
+ La as renderMatches,
86
+ ka as replace,
87
+ Da as resolvePath,
88
+ ba as unstable_HistoryRouter,
89
+ wa as unstable_RouterContextProvider,
90
+ Ma as unstable_createContext,
91
+ Oa as unstable_setDevServerHooks,
92
+ Ba as unstable_usePrompt,
93
+ Ta as useActionData,
94
+ Ia as useAsyncError,
95
+ fa as useAsyncValue,
96
+ Va as useBeforeUnload,
97
+ Wa as useBlocker,
98
+ qa as useFetcher,
99
+ za as useFetchers,
100
+ Ga as useFormAction,
101
+ Ka as useHref,
102
+ ja as useInRouterContext,
103
+ Ja as useLinkClickHandler,
104
+ Qa as useLoaderData,
105
+ Xa as useLocation,
106
+ Ya as useMatch,
107
+ Za as useMatches,
108
+ $a as useNavigate,
109
+ ae as useNavigation,
110
+ ee as useNavigationType,
111
+ se as useOutlet,
112
+ te as useOutletContext,
113
+ re as useParams,
114
+ oe as useResolvedPath,
115
+ ue as useRevalidator,
116
+ ie as useRouteError,
117
+ ne as useRouteLoaderData,
118
+ Se as useRoutes,
119
+ ce as useSearchParams,
120
+ Re as useSubmit,
121
+ Fe as useViewTransitionState
122
+ };
123
+ //# sourceMappingURL=zudoku.router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zudoku.router.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zudoku",
3
- "version": "0.0.0-fd0986c",
3
+ "version": "0.0.0-fdf886de",
4
4
  "type": "module",
5
5
  "homepage": "https://zudoku.dev",
6
6
  "repository": {
@@ -103,6 +103,14 @@
103
103
  "import": "./lib/zudoku.components.js",
104
104
  "types": "./dist/lib/components/index.d.ts"
105
105
  },
106
+ "./__internal": {
107
+ "import": "./lib/zudoku.__internal.js",
108
+ "types": "./dist/lib/__internal.d.ts"
109
+ },
110
+ "./router": {
111
+ "import": "./lib/zudoku.router.js",
112
+ "types": "./dist/lib/core/router.d.ts"
113
+ },
106
114
  "./processors/*": {
107
115
  "import": "./lib/processors/*.js",
108
116
  "types": "./dist/lib/plugins/openapi/processors/*.d.ts"
@@ -136,7 +144,7 @@
136
144
  "@envelop/core": "5.3.0",
137
145
  "@graphql-typed-document-node/core": "3.2.0",
138
146
  "@hookform/resolvers": "4.1.3",
139
- "@lekoarts/rehype-meta-as-attributes": "3.0.2",
147
+ "@lekoarts/rehype-meta-as-attributes": "3.0.3",
140
148
  "@mdx-js/react": "3.1.0",
141
149
  "@mdx-js/rollup": "3.1.0",
142
150
  "@pothos/core": "4.7.0",
@@ -162,21 +170,21 @@
162
170
  "@radix-ui/react-toggle-group": "1.1.10",
163
171
  "@radix-ui/react-tooltip": "1.2.7",
164
172
  "@radix-ui/react-visually-hidden": "1.2.3",
165
- "@scalar/openapi-parser": "0.10.17",
173
+ "@scalar/openapi-parser": "0.18.0",
166
174
  "@sentry/node": "9.26.0",
167
- "@shikijs/langs": "3.7.0",
168
- "@shikijs/rehype": "3.7.0",
169
- "@shikijs/themes": "3.7.0",
170
- "@shikijs/transformers": "3.7.0",
175
+ "@shikijs/langs": "3.8.1",
176
+ "@shikijs/rehype": "3.8.1",
177
+ "@shikijs/themes": "3.8.1",
178
+ "@shikijs/transformers": "3.8.1",
171
179
  "@sindresorhus/slugify": "2.2.1",
172
180
  "@stefanprobst/rehype-extract-toc": "3.0.0",
173
181
  "@tailwindcss/typography": "0.5.16",
174
- "@tailwindcss/vite": "4.1.7",
182
+ "@tailwindcss/vite": "4.1.11",
175
183
  "@tanem/react-nprogress": "5.0.55",
176
184
  "@tanstack/react-query": "5.81.5",
177
185
  "@types/react": "19.1.8",
178
186
  "@types/react-dom": "19.1.6",
179
- "@vitejs/plugin-react": "4.4.1",
187
+ "@vitejs/plugin-react": "4.6.0",
180
188
  "@zudoku/httpsnippet": "10.0.9",
181
189
  "@zudoku/react-helmet-async": "2.0.5",
182
190
  "allof-merge": "0.6.6",
@@ -203,10 +211,10 @@
203
211
  "http-terminator": "3.2.0",
204
212
  "json-schema-to-typescript-lite": "14.1.0",
205
213
  "loglevel": "1.9.2",
206
- "lru-cache": "11.0.2",
207
- "lucide-react": "0.515.0",
214
+ "lru-cache": "11.1.0",
215
+ "lucide-react": "0.525.0",
208
216
  "minimatch": "10.0.1",
209
- "motion": "12.18.1",
217
+ "motion": "12.23.3",
210
218
  "nanoevents": "^9.1.0",
211
219
  "next-themes": "0.4.6",
212
220
  "oauth4webapi": "2.17.0",
@@ -214,13 +222,13 @@
214
222
  "openapi-types": "12.1.3",
215
223
  "pagefind": "1.4.0-alpha.1",
216
224
  "picocolors": "1.1.1",
217
- "piscina": "5.1.1",
225
+ "piscina": "5.1.3",
218
226
  "posthog-node": "4.17.1",
219
227
  "react-error-boundary": "6.0.0",
220
- "react-hook-form": "7.57.0",
228
+ "react-hook-form": "7.60.0",
221
229
  "react-is": "19.1.0",
222
230
  "react-markdown": "10.1.0",
223
- "react-router": "7.6.1",
231
+ "react-router": "7.6.3",
224
232
  "rehype-mdx-import-media": "1.2.0",
225
233
  "rehype-raw": "7.0.0",
226
234
  "rehype-slug": "6.0.0",
@@ -232,9 +240,9 @@
232
240
  "remark-mdx-frontmatter": "5.2.0",
233
241
  "remark-parse": "^11.0.0",
234
242
  "remark-rehype": "^11.1.2",
235
- "rollup": "4.41.1",
243
+ "rollup": "4.45.0",
236
244
  "semver": "7.7.2",
237
- "shiki": "3.7.0",
245
+ "shiki": "3.8.1",
238
246
  "sitemap": "8.0.0",
239
247
  "spin-delay": "2.0.1",
240
248
  "strip-ansi": "7.1.0",
@@ -248,9 +256,9 @@
248
256
  "vite": "6.3.5",
249
257
  "yaml": "2.8.0",
250
258
  "yargs": "18.0.0",
251
- "zod": "3.25.67",
259
+ "zod": "3.25.74",
252
260
  "zod-to-ts": "1.2.0",
253
- "zustand": "5.0.5"
261
+ "zustand": "5.0.6"
254
262
  },
255
263
  "devDependencies": {
256
264
  "@graphql-codegen/cli": "5.0.7",
@@ -259,7 +267,7 @@
259
267
  "@testing-library/dom": "10.4.0",
260
268
  "@testing-library/jest-dom": "6.6.3",
261
269
  "@testing-library/react": "16.3.0",
262
- "@types/estree": "1.0.7",
270
+ "@types/estree": "1.0.8",
263
271
  "@types/express": "5.0.2",
264
272
  "@types/glob-parent": "5.1.3",
265
273
  "@types/har-format": "1.2.16",
@@ -274,15 +282,15 @@
274
282
  "@types/unist": "^3.0.3",
275
283
  "@types/yargs": "17.0.33",
276
284
  "@vitest/coverage-v8": "3.2.1",
277
- "esbuild": "0.25.1",
278
- "happy-dom": "17.5.6",
285
+ "esbuild": "0.25.6",
286
+ "happy-dom": "18.0.1",
279
287
  "mdast-util-mdx": "3.0.0",
280
288
  "react": "19.1.0",
281
289
  "react-dom": "19.1.0",
282
290
  "rollup-plugin-visualizer": "6.0.3",
283
291
  "tsx": "4.19.4",
284
292
  "typescript": "5.8.3",
285
- "vitest": "3.2.3"
293
+ "vitest": "3.2.4"
286
294
  },
287
295
  "peerDependencies": {
288
296
  "@azure/msal-browser": "^4.13.0",
package/src/app/demo.tsx CHANGED
@@ -1,7 +1,7 @@
1
1
  import logger from "loglevel";
2
2
  import { createRoot } from "react-dom/client";
3
3
  import { createBrowserRouter } from "react-router";
4
- import { Bootstrap } from "zudoku/components";
4
+ import { Bootstrap } from "zudoku/__internal";
5
5
  import type { ZudokuConfig } from "../config/validators/validate.js";
6
6
  import DemoAnnouncement from "../lib/demo/DemoAnnouncement.js";
7
7
  import { openApiPlugin } from "../lib/plugins/openapi/index.js";
@@ -6,7 +6,7 @@ import {
6
6
  } from "react-router";
7
7
  import config from "virtual:zudoku-config";
8
8
  import "vite/modulepreload-polyfill";
9
- import { Bootstrap } from "zudoku/components";
9
+ import { Bootstrap } from "zudoku/__internal";
10
10
  import { getRoutesByConfig } from "./main.js";
11
11
 
12
12
  const routes = getRoutesByConfig(config);
@@ -11,7 +11,7 @@ import {
11
11
  type RouteObject,
12
12
  } from "react-router";
13
13
  import "vite/modulepreload-polyfill";
14
- import { BootstrapStatic, ServerError } from "zudoku/components";
14
+ import { BootstrapStatic, ServerError } from "zudoku/__internal";
15
15
  import { NO_DEHYDRATE } from "../lib/components/cache.js";
16
16
  import type { PrerenderResponse } from "../vite/prerender/PrerenderResponse.js";
17
17
  import { getRoutesByConfig } from "./main.js";