zudoku 0.45.0 → 0.46.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 (533) hide show
  1. package/cli.js +8 -2
  2. package/dist/app/main.js +4 -23
  3. package/dist/app/main.js.map +1 -1
  4. package/dist/config/config.d.ts +2 -2
  5. package/dist/config/file-exists.d.ts +1 -0
  6. package/dist/config/file-exists.js +5 -0
  7. package/dist/config/file-exists.js.map +1 -0
  8. package/dist/config/loader.d.ts +19 -4
  9. package/dist/config/loader.js +94 -14
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/validators/validate.d.ts +3536 -743
  12. package/dist/config/validators/validate.js +396 -11
  13. package/dist/config/validators/validate.js.map +1 -1
  14. package/dist/index.d.ts +4 -2
  15. package/dist/index.js +2 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/lib/authentication/AuthenticationPlugin.d.ts +7 -2
  18. package/dist/lib/authentication/AuthenticationPlugin.js +13 -1
  19. package/dist/lib/authentication/AuthenticationPlugin.js.map +1 -1
  20. package/dist/lib/authentication/authentication.d.ts +2 -4
  21. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  22. package/dist/lib/authentication/providers/clerk.js +62 -43
  23. package/dist/lib/authentication/providers/clerk.js.map +1 -1
  24. package/dist/lib/authentication/providers/openid.d.ts +7 -12
  25. package/dist/lib/authentication/providers/openid.js +11 -22
  26. package/dist/lib/authentication/providers/openid.js.map +1 -1
  27. package/dist/lib/authentication/providers/supabase.js +3 -5
  28. package/dist/lib/authentication/providers/supabase.js.map +1 -1
  29. package/dist/lib/components/Autocomplete.js +1 -1
  30. package/dist/lib/components/Banner.js +1 -1
  31. package/dist/lib/components/Banner.js.map +1 -1
  32. package/dist/lib/components/ErrorPage.js +1 -1
  33. package/dist/lib/components/Footer.js +5 -5
  34. package/dist/lib/components/Footer.js.map +1 -1
  35. package/dist/lib/components/Header.js +16 -8
  36. package/dist/lib/components/Header.js.map +1 -1
  37. package/dist/lib/components/Heading.js +6 -1
  38. package/dist/lib/components/Heading.js.map +1 -1
  39. package/dist/lib/components/InlineCode.js +1 -1
  40. package/dist/lib/components/InlineCode.js.map +1 -1
  41. package/dist/lib/components/Layout.js +2 -2
  42. package/dist/lib/components/Layout.js.map +1 -1
  43. package/dist/lib/components/Main.js +2 -2
  44. package/dist/lib/components/Main.js.map +1 -1
  45. package/dist/lib/components/Markdown.js +8 -3
  46. package/dist/lib/components/Markdown.js.map +1 -1
  47. package/dist/lib/components/MobileTopNavigation.js +3 -2
  48. package/dist/lib/components/MobileTopNavigation.js.map +1 -1
  49. package/dist/lib/components/NotFoundPage.js +1 -1
  50. package/dist/lib/components/Pagination.js +1 -1
  51. package/dist/lib/components/Pagination.js.map +1 -1
  52. package/dist/lib/components/Search.js +1 -1
  53. package/dist/lib/components/Search.js.map +1 -1
  54. package/dist/lib/components/Slot.d.ts +17 -0
  55. package/dist/lib/components/Slot.js +24 -0
  56. package/dist/lib/components/Slot.js.map +1 -0
  57. package/dist/lib/components/Slot.test.js +168 -0
  58. package/dist/lib/components/Slot.test.js.map +1 -0
  59. package/dist/lib/components/TopNavigation.d.ts +1 -4
  60. package/dist/lib/components/TopNavigation.js +3 -11
  61. package/dist/lib/components/TopNavigation.js.map +1 -1
  62. package/dist/lib/components/Zudoku.js +2 -2
  63. package/dist/lib/components/Zudoku.js.map +1 -1
  64. package/dist/lib/components/context/SlotProvider.d.ts +26 -0
  65. package/dist/lib/components/context/SlotProvider.js +83 -0
  66. package/dist/lib/components/context/SlotProvider.js.map +1 -0
  67. package/dist/lib/components/context/ZudokuContext.d.ts +1 -1
  68. package/dist/lib/components/context/ZudokuProvider.js +2 -1
  69. package/dist/lib/components/context/ZudokuProvider.js.map +1 -1
  70. package/dist/lib/components/index.d.ts +29 -23
  71. package/dist/lib/components/index.js +13 -7
  72. package/dist/lib/components/index.js.map +1 -1
  73. package/dist/lib/components/navigation/PoweredByZudoku.js +1 -1
  74. package/dist/lib/components/navigation/Sidebar.js +3 -3
  75. package/dist/lib/components/navigation/Sidebar.js.map +1 -1
  76. package/dist/lib/components/navigation/SidebarBadge.js +1 -1
  77. package/dist/lib/components/navigation/SidebarBadge.js.map +1 -1
  78. package/dist/lib/components/navigation/SidebarCategory.js +3 -3
  79. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
  80. package/dist/lib/components/navigation/SidebarItem.d.ts +0 -5
  81. package/dist/lib/components/navigation/SidebarItem.js +19 -23
  82. package/dist/lib/components/navigation/SidebarItem.js.map +1 -1
  83. package/dist/lib/components/navigation/SidebarWrapper.js +1 -1
  84. package/dist/lib/components/navigation/Toc.js +1 -1
  85. package/dist/lib/components/navigation/Toc.js.map +1 -1
  86. package/dist/lib/components/navigation/utils.d.ts +8 -0
  87. package/dist/lib/components/navigation/utils.js +34 -6
  88. package/dist/lib/components/navigation/utils.js.map +1 -1
  89. package/dist/lib/core/ZudokuContext.d.ts +12 -8
  90. package/dist/lib/core/ZudokuContext.js +6 -5
  91. package/dist/lib/core/ZudokuContext.js.map +1 -1
  92. package/dist/lib/core/plugins.d.ts +5 -2
  93. package/dist/lib/core/plugins.js +1 -0
  94. package/dist/lib/core/plugins.js.map +1 -1
  95. package/dist/lib/errors/ErrorAlert.js +1 -1
  96. package/dist/lib/hooks/index.d.ts +19 -0
  97. package/dist/lib/hooks/index.js +11 -0
  98. package/dist/lib/hooks/index.js.map +1 -1
  99. package/dist/lib/plugins/api-catalog/Catalog.js +1 -1
  100. package/dist/lib/plugins/api-keys/CreateApiKey.d.ts +3 -2
  101. package/dist/lib/plugins/api-keys/CreateApiKey.js +8 -4
  102. package/dist/lib/plugins/api-keys/CreateApiKey.js.map +1 -1
  103. package/dist/lib/plugins/api-keys/SettingsApiKeys.d.ts +1 -1
  104. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +54 -23
  105. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
  106. package/dist/lib/plugins/api-keys/index.d.ts +18 -9
  107. package/dist/lib/plugins/api-keys/index.js +49 -34
  108. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  109. package/dist/lib/plugins/custom-pages/index.d.ts +1 -1
  110. package/dist/lib/plugins/markdown/MdxPage.js +1 -1
  111. package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
  112. package/dist/lib/plugins/markdown/index.d.ts +1 -1
  113. package/dist/lib/plugins/markdown/resolver.d.ts +1 -1
  114. package/dist/lib/plugins/markdown/resolver.js.map +1 -1
  115. package/dist/lib/plugins/openapi/CollapsibleCode.js +1 -1
  116. package/dist/lib/plugins/openapi/ColorizedParam.js +1 -1
  117. package/dist/lib/plugins/openapi/ColorizedParam.js.map +1 -1
  118. package/dist/lib/plugins/openapi/OperationList.js +1 -1
  119. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  120. package/dist/lib/plugins/openapi/OperationListItem.js +2 -3
  121. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  122. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js +5 -1
  123. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js.map +1 -1
  124. package/dist/lib/plugins/openapi/ResponsesSidecarBox.d.ts +2 -4
  125. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +1 -4
  126. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
  127. package/dist/lib/plugins/openapi/SchemaList.js +6 -5
  128. package/dist/lib/plugins/openapi/SchemaList.js.map +1 -1
  129. package/dist/lib/plugins/openapi/Sidecar.js +1 -1
  130. package/dist/lib/plugins/openapi/SidecarExamples.js +8 -0
  131. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
  132. package/dist/lib/plugins/openapi/components/EnumValues.js +1 -1
  133. package/dist/lib/plugins/openapi/components/EnumValues.js.map +1 -1
  134. package/dist/lib/plugins/openapi/components/ResponseContent.d.ts +12 -0
  135. package/dist/lib/plugins/openapi/components/ResponseContent.js +21 -0
  136. package/dist/lib/plugins/openapi/components/ResponseContent.js.map +1 -0
  137. package/dist/lib/plugins/openapi/playground/Playground.js +2 -0
  138. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  139. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +1 -1
  140. package/dist/lib/plugins/openapi/playground/SubmitButton.js +7 -10
  141. package/dist/lib/plugins/openapi/playground/SubmitButton.js.map +1 -1
  142. package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js +2 -2
  143. package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js.map +1 -1
  144. package/dist/lib/plugins/openapi/schema/SchemaView.d.ts +2 -1
  145. package/dist/lib/plugins/openapi/schema/SchemaView.js +3 -3
  146. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  147. package/dist/lib/plugins/redirect/index.d.ts +1 -1
  148. package/dist/lib/ui/Badge.d.ts +2 -2
  149. package/dist/lib/ui/Badge.js +1 -1
  150. package/dist/lib/ui/Badge.js.map +1 -1
  151. package/dist/lib/ui/Button.d.ts +2 -2
  152. package/dist/lib/ui/Button.js +8 -6
  153. package/dist/lib/ui/Button.js.map +1 -1
  154. package/dist/lib/ui/Callout.js +1 -1
  155. package/dist/lib/ui/Callout.js.map +1 -1
  156. package/dist/lib/ui/Card.js +1 -1
  157. package/dist/lib/ui/Checkbox.js +1 -1
  158. package/dist/lib/ui/Checkbox.js.map +1 -1
  159. package/dist/lib/ui/Command.d.ts +2 -2
  160. package/dist/lib/ui/Command.js +3 -3
  161. package/dist/lib/ui/Command.js.map +1 -1
  162. package/dist/lib/ui/Dialog.js +1 -1
  163. package/dist/lib/ui/Dialog.js.map +1 -1
  164. package/dist/lib/ui/DropdownMenu.js +4 -4
  165. package/dist/lib/ui/DropdownMenu.js.map +1 -1
  166. package/dist/lib/ui/HoverCard.js +1 -1
  167. package/dist/lib/ui/HoverCard.js.map +1 -1
  168. package/dist/lib/ui/Input.js +1 -1
  169. package/dist/lib/ui/Input.js.map +1 -1
  170. package/dist/lib/ui/Popover.js +1 -1
  171. package/dist/lib/ui/Popover.js.map +1 -1
  172. package/dist/lib/ui/RadioGroup.js +1 -1
  173. package/dist/lib/ui/RadioGroup.js.map +1 -1
  174. package/dist/lib/ui/Select.js +2 -2
  175. package/dist/lib/ui/Select.js.map +1 -1
  176. package/dist/lib/ui/Slider.js +1 -1
  177. package/dist/lib/ui/Slider.js.map +1 -1
  178. package/dist/lib/ui/Switch.js +1 -1
  179. package/dist/lib/ui/Switch.js.map +1 -1
  180. package/dist/lib/ui/Tabs.js +2 -2
  181. package/dist/lib/ui/Tabs.js.map +1 -1
  182. package/dist/lib/ui/Textarea.js +1 -1
  183. package/dist/lib/ui/Textarea.js.map +1 -1
  184. package/dist/lib/ui/Toggle.js +1 -1
  185. package/dist/lib/ui/Toggle.js.map +1 -1
  186. package/dist/lib/ui/Tooltip.d.ts +2 -1
  187. package/dist/lib/ui/Tooltip.js +2 -1
  188. package/dist/lib/ui/Tooltip.js.map +1 -1
  189. package/dist/lib/util/useExposedProps.d.ts +8 -1
  190. package/dist/lib/util/useExposedProps.js.map +1 -1
  191. package/dist/vite/api/SchemaManager.js +16 -1
  192. package/dist/vite/api/SchemaManager.js.map +1 -1
  193. package/dist/vite/build.js +44 -6
  194. package/dist/vite/build.js.map +1 -1
  195. package/dist/vite/config.d.ts +2 -9
  196. package/dist/vite/config.js +6 -95
  197. package/dist/vite/config.js.map +1 -1
  198. package/dist/vite/config.test.js +1 -1
  199. package/dist/vite/config.test.js.map +1 -1
  200. package/dist/vite/css/plugin.d.ts +1 -2
  201. package/dist/vite/css/plugin.js +3 -2
  202. package/dist/vite/css/plugin.js.map +1 -1
  203. package/dist/vite/dev-server.d.ts +0 -1
  204. package/dist/vite/dev-server.js +10 -12
  205. package/dist/vite/dev-server.js.map +1 -1
  206. package/dist/vite/html.d.ts +2 -2
  207. package/dist/vite/html.js +5 -2
  208. package/dist/vite/html.js.map +1 -1
  209. package/dist/vite/plugin-api-keys.d.ts +1 -2
  210. package/dist/vite/plugin-api-keys.js +9 -3
  211. package/dist/vite/plugin-api-keys.js.map +1 -1
  212. package/dist/vite/plugin-api.d.ts +1 -2
  213. package/dist/vite/plugin-api.js +5 -4
  214. package/dist/vite/plugin-api.js.map +1 -1
  215. package/dist/vite/plugin-auth.d.ts +1 -2
  216. package/dist/vite/plugin-auth.js +3 -2
  217. package/dist/vite/plugin-auth.js.map +1 -1
  218. package/dist/vite/plugin-component.d.ts +1 -2
  219. package/dist/vite/plugin-component.js +3 -2
  220. package/dist/vite/plugin-component.js.map +1 -1
  221. package/dist/vite/plugin-config-reload.d.ts +1 -2
  222. package/dist/vite/plugin-config-reload.js +21 -22
  223. package/dist/vite/plugin-config-reload.js.map +1 -1
  224. package/dist/vite/plugin-config.d.ts +1 -2
  225. package/dist/vite/plugin-config.js +4 -3
  226. package/dist/vite/plugin-config.js.map +1 -1
  227. package/dist/vite/plugin-configure-tailwind.d.ts +2 -0
  228. package/dist/vite/plugin-configure-tailwind.js +38 -0
  229. package/dist/vite/plugin-configure-tailwind.js.map +1 -0
  230. package/dist/vite/plugin-custom-pages.d.ts +1 -2
  231. package/dist/vite/plugin-custom-pages.js +3 -2
  232. package/dist/vite/plugin-custom-pages.js.map +1 -1
  233. package/dist/vite/plugin-docs.d.ts +1 -2
  234. package/dist/vite/plugin-docs.js +4 -3
  235. package/dist/vite/plugin-docs.js.map +1 -1
  236. package/dist/vite/plugin-frontmatter.d.ts +1 -2
  237. package/dist/vite/plugin-frontmatter.js +3 -2
  238. package/dist/vite/plugin-frontmatter.js.map +1 -1
  239. package/dist/vite/plugin-mdx.d.ts +1 -2
  240. package/dist/vite/plugin-mdx.js +3 -2
  241. package/dist/vite/plugin-mdx.js.map +1 -1
  242. package/dist/vite/plugin-redirect.d.ts +1 -2
  243. package/dist/vite/plugin-redirect.js +3 -2
  244. package/dist/vite/plugin-redirect.js.map +1 -1
  245. package/dist/vite/plugin-search.d.ts +1 -2
  246. package/dist/vite/plugin-search.js +3 -2
  247. package/dist/vite/plugin-search.js.map +1 -1
  248. package/dist/vite/plugin-shiki-register.d.ts +1 -2
  249. package/dist/vite/plugin-shiki-register.js +2 -1
  250. package/dist/vite/plugin-shiki-register.js.map +1 -1
  251. package/dist/vite/plugin-sidebar.d.ts +1 -2
  252. package/dist/vite/plugin-sidebar.js +3 -2
  253. package/dist/vite/plugin-sidebar.js.map +1 -1
  254. package/dist/vite/plugin-theme-css.d.ts +1 -2
  255. package/dist/vite/plugin-theme-css.js +20 -60
  256. package/dist/vite/plugin-theme-css.js.map +1 -1
  257. package/dist/vite/plugin.d.ts +1 -2
  258. package/dist/vite/plugin.js +22 -21
  259. package/dist/vite/plugin.js.map +1 -1
  260. package/dist/vite/sitemap.d.ts +1 -1
  261. package/dist/zuplo/with-zuplo.d.ts +2 -2
  262. package/dist/zuplo/with-zuplo.js.map +1 -1
  263. package/lib/Button-BE9IVkWV.js +51 -0
  264. package/lib/Button-BE9IVkWV.js.map +1 -0
  265. package/lib/{Callout-XadUe37J.js → Callout-BkgOUkoZ.js} +9 -8
  266. package/lib/Callout-BkgOUkoZ.js.map +1 -0
  267. package/lib/{Card-BlCYNw5W.js → Card-DPhGbYUM.js} +3 -3
  268. package/lib/{Card-BlCYNw5W.js.map → Card-DPhGbYUM.js.map} +1 -1
  269. package/lib/{CategoryHeading-DZi-Szor.js → CategoryHeading-Cu2RwgjC.js} +2 -2
  270. package/lib/{CategoryHeading-DZi-Szor.js.map → CategoryHeading-Cu2RwgjC.js.map} +1 -1
  271. package/lib/{Dialog-CNf2oWXG.js → Dialog-Du6WMcIA.js} +8 -7
  272. package/lib/Dialog-Du6WMcIA.js.map +1 -0
  273. package/lib/{Drawer-BPBxzel2.js → Drawer-BzkOKwgC.js} +2 -2
  274. package/lib/{Drawer-BPBxzel2.js.map → Drawer-BzkOKwgC.js.map} +1 -1
  275. package/lib/Markdown-BRAyzyUJ.js +15348 -0
  276. package/lib/Markdown-BRAyzyUJ.js.map +1 -0
  277. package/lib/{MdxPage-Sjv6y3cA.js → MdxPage-B3v1BSKr.js} +11 -11
  278. package/lib/MdxPage-B3v1BSKr.js.map +1 -0
  279. package/lib/{OasProvider-CzRXrs_-.js → OasProvider-5jrFuhVk.js} +3 -3
  280. package/lib/{OasProvider-CzRXrs_-.js.map → OasProvider-5jrFuhVk.js.map} +1 -1
  281. package/lib/{OperationList-DefCF3ZI.js → OperationList-BmoMLQPO.js} +1039 -1005
  282. package/lib/OperationList-BmoMLQPO.js.map +1 -0
  283. package/lib/Pagination-Cr0fWZS3.js +36 -0
  284. package/lib/Pagination-Cr0fWZS3.js.map +1 -0
  285. package/lib/RouteGuard-PrSVLbSr.js +55 -0
  286. package/lib/RouteGuard-PrSVLbSr.js.map +1 -0
  287. package/lib/{SchemaList-zHQ2Ekyw.js → SchemaList-B4riYLoP.js} +61 -47
  288. package/lib/SchemaList-B4riYLoP.js.map +1 -0
  289. package/lib/{SchemaView-CqF4oMU-.js → SchemaView-CPZ6RgsF.js} +100 -95
  290. package/lib/SchemaView-CPZ6RgsF.js.map +1 -0
  291. package/lib/{AuthenticationPlugin-UNaAuxNo.js → SignUp-CWaiH0tY.js} +23 -50
  292. package/lib/SignUp-CWaiH0tY.js.map +1 -0
  293. package/lib/Slot-Bo6K4tnb.js +160 -0
  294. package/lib/Slot-Bo6K4tnb.js.map +1 -0
  295. package/lib/{SyntaxHighlight-UxOF1xNb.js → SyntaxHighlight-DedRjJNr.js} +233 -212
  296. package/lib/{SyntaxHighlight-UxOF1xNb.js.map → SyntaxHighlight-DedRjJNr.js.map} +1 -1
  297. package/lib/{Toc-Ax54Pw8S.js → Toc-lL3fzNkl.js} +5 -5
  298. package/lib/Toc-lL3fzNkl.js.map +1 -0
  299. package/lib/{circular-B_TODp4H.js → circular-oB4auIIg.js} +2 -2
  300. package/lib/{circular-B_TODp4H.js.map → circular-oB4auIIg.js.map} +1 -1
  301. package/lib/clsx-OuTLNxxd.js +17 -0
  302. package/lib/clsx-OuTLNxxd.js.map +1 -0
  303. package/lib/{cn-CwJPJKOE.js → cn-wvCW-ho6.js} +1015 -562
  304. package/lib/cn-wvCW-ho6.js.map +1 -0
  305. package/lib/{createServer-CXd8q7nF.js → createServer-DCB82j2t.js} +81 -81
  306. package/lib/{createServer-CXd8q7nF.js.map → createServer-DCB82j2t.js.map} +1 -1
  307. package/lib/{hook-BwOB_iZo.js → hook-DawSLaZr.js} +323 -300
  308. package/lib/hook-DawSLaZr.js.map +1 -0
  309. package/lib/{index-BY8J3gEh.js → index-BXYvD5-7.js} +868 -758
  310. package/lib/index-BXYvD5-7.js.map +1 -0
  311. package/lib/{index-Z13x6tPX.js → index-DI5SPFK9.js} +2 -2
  312. package/lib/{index-Z13x6tPX.js.map → index-DI5SPFK9.js.map} +1 -1
  313. package/lib/index-QzXzw_ra.js +24 -0
  314. package/lib/index-QzXzw_ra.js.map +1 -0
  315. package/lib/{RouteGuard-lkdEJoDV.js → index.esm-BFcSKCe-.js} +232 -281
  316. package/lib/index.esm-BFcSKCe-.js.map +1 -0
  317. package/lib/{index.esm-D2ZUREQN.js → index.esm-DSfX_eMP.js} +3 -3
  318. package/lib/{index.esm-D2ZUREQN.js.map → index.esm-DSfX_eMP.js.map} +1 -1
  319. package/lib/joinPath-B7kNnUX4.js +8 -0
  320. package/lib/joinPath-B7kNnUX4.js.map +1 -0
  321. package/lib/{mutation-CL2MCRQL.js → mutation-oxMvODNQ.js} +2 -2
  322. package/lib/{mutation-CL2MCRQL.js.map → mutation-oxMvODNQ.js.map} +1 -1
  323. package/lib/ui/Accordion.js +1 -1
  324. package/lib/ui/ActionButton.js +2 -2
  325. package/lib/ui/Alert.js +2 -2
  326. package/lib/ui/AlertDialog.js +1 -1
  327. package/lib/ui/Badge.js +3 -3
  328. package/lib/ui/Badge.js.map +1 -1
  329. package/lib/ui/Breadcrumb.js +1 -1
  330. package/lib/ui/Button.js +20 -18
  331. package/lib/ui/Button.js.map +1 -1
  332. package/lib/ui/Callout.js +6 -5
  333. package/lib/ui/Callout.js.map +1 -1
  334. package/lib/ui/Card.js +8 -8
  335. package/lib/ui/Card.js.map +1 -1
  336. package/lib/ui/Carousel.js +1 -1
  337. package/lib/ui/Checkbox.js +7 -7
  338. package/lib/ui/Checkbox.js.map +1 -1
  339. package/lib/ui/CodeBlock.js +1 -1
  340. package/lib/ui/Command.js +43 -43
  341. package/lib/ui/Command.js.map +1 -1
  342. package/lib/ui/Dialog.js +2 -2
  343. package/lib/ui/Dialog.js.map +1 -1
  344. package/lib/ui/Drawer.js +2 -2
  345. package/lib/ui/DropdownMenu.js +34 -34
  346. package/lib/ui/DropdownMenu.js.map +1 -1
  347. package/lib/ui/Form.js +2 -2
  348. package/lib/ui/HoverCard.js +5 -5
  349. package/lib/ui/HoverCard.js.map +1 -1
  350. package/lib/ui/Input.js +2 -2
  351. package/lib/ui/Input.js.map +1 -1
  352. package/lib/ui/Label.js +2 -2
  353. package/lib/ui/Pagination.js +1 -1
  354. package/lib/ui/Popover.js +2 -2
  355. package/lib/ui/Popover.js.map +1 -1
  356. package/lib/ui/Progress.js +1 -1
  357. package/lib/ui/RadioGroup.js +10 -10
  358. package/lib/ui/RadioGroup.js.map +1 -1
  359. package/lib/ui/ScrollArea.js +1 -1
  360. package/lib/ui/Select.js +31 -31
  361. package/lib/ui/Select.js.map +1 -1
  362. package/lib/ui/Skeleton.js +1 -1
  363. package/lib/ui/Slider.js +5 -5
  364. package/lib/ui/Slider.js.map +1 -1
  365. package/lib/ui/Switch.js +5 -5
  366. package/lib/ui/Switch.js.map +1 -1
  367. package/lib/ui/SyntaxHighlight.js +2 -2
  368. package/lib/ui/Tabs.js +16 -16
  369. package/lib/ui/Tabs.js.map +1 -1
  370. package/lib/ui/Textarea.js +5 -5
  371. package/lib/ui/Textarea.js.map +1 -1
  372. package/lib/ui/Toggle.js +7 -7
  373. package/lib/ui/Toggle.js.map +1 -1
  374. package/lib/ui/ToggleGroup.js +1 -1
  375. package/lib/ui/Tooltip.js +15 -8
  376. package/lib/ui/Tooltip.js.map +1 -1
  377. package/lib/ui/util.js +1 -1
  378. package/lib/useExposedProps-DG8J6ewJ.js.map +1 -1
  379. package/lib/useMutation-C_j3dA_L.js +97 -0
  380. package/lib/useMutation-C_j3dA_L.js.map +1 -0
  381. package/lib/zudoku.auth-auth0.js +1 -1
  382. package/lib/zudoku.auth-auth0.js.map +1 -1
  383. package/lib/zudoku.auth-clerk.js +99 -82
  384. package/lib/zudoku.auth-clerk.js.map +1 -1
  385. package/lib/zudoku.auth-openid.js +246 -216
  386. package/lib/zudoku.auth-openid.js.map +1 -1
  387. package/lib/zudoku.components.js +4957 -33
  388. package/lib/zudoku.components.js.map +1 -1
  389. package/lib/zudoku.hooks.js +21 -12
  390. package/lib/zudoku.hooks.js.map +1 -1
  391. package/lib/zudoku.plugin-api-catalog.js +8 -8
  392. package/lib/zudoku.plugin-api-catalog.js.map +1 -1
  393. package/lib/zudoku.plugin-api-keys.js +5022 -214
  394. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  395. package/lib/zudoku.plugin-custom-pages.js +2 -2
  396. package/lib/zudoku.plugin-custom-pages.js.map +1 -1
  397. package/lib/zudoku.plugin-markdown.js +1 -1
  398. package/lib/zudoku.plugin-markdown.js.map +1 -1
  399. package/lib/zudoku.plugin-openapi.js +3 -3
  400. package/lib/zudoku.plugin-redirect.js.map +1 -1
  401. package/lib/zudoku.plugin-search-pagefind.js +5 -5
  402. package/lib/zudoku.plugins.js +7 -6
  403. package/lib/zudoku.plugins.js.map +1 -1
  404. package/package.json +15 -16
  405. package/src/app/defaultTheme.css +54 -0
  406. package/src/app/font.geist.css +73 -0
  407. package/src/app/main.css +113 -156
  408. package/src/app/main.tsx +4 -28
  409. package/src/lib/authentication/AuthenticationPlugin.tsx +18 -4
  410. package/src/lib/authentication/authentication.ts +2 -5
  411. package/src/lib/authentication/providers/auth0.tsx +8 -2
  412. package/src/lib/authentication/providers/clerk.tsx +72 -48
  413. package/src/lib/authentication/providers/openid.tsx +19 -26
  414. package/src/lib/authentication/providers/supabase.tsx +7 -7
  415. package/src/lib/components/Autocomplete.tsx +1 -1
  416. package/src/lib/components/Banner.tsx +1 -1
  417. package/src/lib/components/ErrorPage.tsx +1 -1
  418. package/src/lib/components/Footer.tsx +7 -10
  419. package/src/lib/components/Header.tsx +29 -29
  420. package/src/lib/components/Heading.tsx +9 -5
  421. package/src/lib/components/InlineCode.tsx +1 -1
  422. package/src/lib/components/Layout.tsx +3 -3
  423. package/src/lib/components/Main.tsx +4 -4
  424. package/src/lib/components/Markdown.tsx +14 -4
  425. package/src/lib/components/MobileTopNavigation.tsx +3 -2
  426. package/src/lib/components/NotFoundPage.tsx +1 -1
  427. package/src/lib/components/Pagination.tsx +3 -9
  428. package/src/lib/components/Search.tsx +1 -1
  429. package/src/lib/components/Slot.test.tsx +465 -0
  430. package/src/lib/components/Slot.tsx +64 -0
  431. package/src/lib/components/TopNavigation.tsx +5 -17
  432. package/src/lib/components/Zudoku.tsx +9 -9
  433. package/src/lib/components/context/SlotProvider.tsx +149 -0
  434. package/src/lib/components/context/ZudokuProvider.tsx +2 -1
  435. package/src/lib/components/index.ts +14 -10
  436. package/src/lib/components/navigation/PoweredByZudoku.tsx +1 -1
  437. package/src/lib/components/navigation/Sidebar.tsx +3 -3
  438. package/src/lib/components/navigation/SidebarBadge.tsx +1 -1
  439. package/src/lib/components/navigation/SidebarCategory.tsx +3 -3
  440. package/src/lib/components/navigation/SidebarItem.tsx +57 -30
  441. package/src/lib/components/navigation/SidebarWrapper.tsx +2 -2
  442. package/src/lib/components/navigation/Toc.tsx +2 -2
  443. package/src/lib/components/navigation/utils.ts +42 -6
  444. package/src/lib/core/ZudokuContext.ts +24 -12
  445. package/src/lib/core/plugins.ts +10 -2
  446. package/src/lib/errors/ErrorAlert.tsx +1 -1
  447. package/src/lib/hooks/index.ts +11 -0
  448. package/src/lib/plugins/api-catalog/Catalog.tsx +1 -1
  449. package/src/lib/plugins/api-keys/CreateApiKey.tsx +54 -42
  450. package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +292 -112
  451. package/src/lib/plugins/api-keys/index.tsx +101 -55
  452. package/src/lib/plugins/custom-pages/index.tsx +1 -1
  453. package/src/lib/plugins/markdown/MdxPage.tsx +2 -2
  454. package/src/lib/plugins/markdown/index.tsx +2 -2
  455. package/src/lib/plugins/markdown/resolver.ts +4 -2
  456. package/src/lib/plugins/openapi/CollapsibleCode.tsx +1 -1
  457. package/src/lib/plugins/openapi/ColorizedParam.tsx +2 -2
  458. package/src/lib/plugins/openapi/OperationList.tsx +2 -2
  459. package/src/lib/plugins/openapi/OperationListItem.tsx +6 -34
  460. package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +7 -1
  461. package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +5 -16
  462. package/src/lib/plugins/openapi/SchemaList.tsx +20 -8
  463. package/src/lib/plugins/openapi/Sidecar.tsx +1 -1
  464. package/src/lib/plugins/openapi/SidecarExamples.tsx +6 -0
  465. package/src/lib/plugins/openapi/components/EnumValues.tsx +1 -1
  466. package/src/lib/plugins/openapi/components/ResponseContent.tsx +104 -0
  467. package/src/lib/plugins/openapi/playground/Playground.tsx +7 -1
  468. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +1 -1
  469. package/src/lib/plugins/openapi/playground/SubmitButton.tsx +24 -29
  470. package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +2 -2
  471. package/src/lib/plugins/openapi/schema/SchemaView.tsx +7 -3
  472. package/src/lib/plugins/redirect/index.tsx +1 -1
  473. package/src/lib/ui/Badge.tsx +2 -2
  474. package/src/lib/ui/Button.tsx +9 -6
  475. package/src/lib/ui/Callout.tsx +1 -0
  476. package/src/lib/ui/Card.tsx +1 -1
  477. package/src/lib/ui/Checkbox.tsx +1 -1
  478. package/src/lib/ui/Command.tsx +5 -5
  479. package/src/lib/ui/Dialog.tsx +1 -1
  480. package/src/lib/ui/DropdownMenu.tsx +4 -4
  481. package/src/lib/ui/HoverCard.tsx +1 -1
  482. package/src/lib/ui/Input.tsx +1 -1
  483. package/src/lib/ui/Popover.tsx +1 -1
  484. package/src/lib/ui/RadioGroup.tsx +1 -1
  485. package/src/lib/ui/Select.tsx +3 -3
  486. package/src/lib/ui/Slider.tsx +1 -1
  487. package/src/lib/ui/Switch.tsx +1 -1
  488. package/src/lib/ui/Tabs.tsx +2 -2
  489. package/src/lib/ui/Textarea.tsx +1 -1
  490. package/src/lib/ui/Toggle.tsx +1 -1
  491. package/src/lib/ui/Tooltip.tsx +16 -1
  492. package/src/lib/util/useExposedProps.tsx +12 -1
  493. package/dist/app/tailwind.d.ts +0 -4
  494. package/dist/app/tailwind.js +0 -97
  495. package/dist/app/tailwind.js.map +0 -1
  496. package/dist/config/common.d.ts +0 -10
  497. package/dist/config/common.js +0 -2
  498. package/dist/config/common.js.map +0 -1
  499. package/dist/config/validators/common.d.ts +0 -8001
  500. package/dist/config/validators/common.js +0 -414
  501. package/dist/config/validators/common.js.map +0 -1
  502. package/dist/lib/components/SlotletProvider.d.ts +0 -17
  503. package/dist/lib/components/SlotletProvider.js +0 -18
  504. package/dist/lib/components/SlotletProvider.js.map +0 -1
  505. package/dist/vite/plugin-docs.test.js +0 -22
  506. package/dist/vite/plugin-docs.test.js.map +0 -1
  507. package/lib/AuthenticationPlugin-UNaAuxNo.js.map +0 -1
  508. package/lib/Button-Bdk_Ij3U.js +0 -49
  509. package/lib/Button-Bdk_Ij3U.js.map +0 -1
  510. package/lib/Callout-XadUe37J.js.map +0 -1
  511. package/lib/Dialog-CNf2oWXG.js.map +0 -1
  512. package/lib/Markdown-D96AphCL.js +0 -7691
  513. package/lib/Markdown-D96AphCL.js.map +0 -1
  514. package/lib/MdxPage-Sjv6y3cA.js.map +0 -1
  515. package/lib/OperationList-DefCF3ZI.js.map +0 -1
  516. package/lib/Pagination-B89j9KJS.js +0 -48
  517. package/lib/Pagination-B89j9KJS.js.map +0 -1
  518. package/lib/RouteGuard-lkdEJoDV.js.map +0 -1
  519. package/lib/SchemaList-zHQ2Ekyw.js.map +0 -1
  520. package/lib/SchemaView-CqF4oMU-.js.map +0 -1
  521. package/lib/Select-HTio1oSE.js +0 -211
  522. package/lib/Select-HTio1oSE.js.map +0 -1
  523. package/lib/SlotletProvider-CTgIBRWg.js +0 -257
  524. package/lib/SlotletProvider-CTgIBRWg.js.map +0 -1
  525. package/lib/Toc-Ax54Pw8S.js.map +0 -1
  526. package/lib/cn-CwJPJKOE.js.map +0 -1
  527. package/lib/hook-BwOB_iZo.js.map +0 -1
  528. package/lib/index-BY8J3gEh.js.map +0 -1
  529. package/lib/index-CT2PstvH.js +0 -4982
  530. package/lib/index-CT2PstvH.js.map +0 -1
  531. package/src/app/tailwind.ts +0 -103
  532. package/src/lib/components/SlotletProvider.tsx +0 -55
  533. /package/dist/{vite/plugin-docs.test.d.ts → lib/components/Slot.test.d.ts} +0 -0
@@ -3,12 +3,12 @@ import type { ReactNode } from "react";
3
3
  import type { Location } from "react-router";
4
4
  import type { BundledTheme, HighlighterCore } from "shiki";
5
5
  import type { z } from "zod";
6
- import type { FooterSchema, TopNavigationItem } from "../../config/validators/common.js";
7
6
  import type { SidebarConfig } from "../../config/validators/SidebarSchema.js";
8
- import type { AuthenticationProvider } from "../authentication/authentication.js";
7
+ import type { FooterSchema, TopNavigationItem } from "../../config/validators/validate.js";
8
+ import type { AuthenticationPlugin } from "../authentication/authentication.js";
9
9
  import { type AuthState } from "../authentication/state.js";
10
10
  import type { ComponentsContextType } from "../components/context/ComponentsContext.js";
11
- import type { Slotlets } from "../components/SlotletProvider.js";
11
+ import type { SlotType } from "../components/context/SlotProvider.js";
12
12
  import type { MdxComponentsType } from "../util/MdxComponents.js";
13
13
  import { type ZudokuPlugin } from "./plugins.js";
14
14
  export interface ZudokuEvents {
@@ -68,11 +68,15 @@ export type ZudokuContextOptions = {
68
68
  canonicalUrlOrigin?: string;
69
69
  metadata?: Metadata;
70
70
  page?: Page;
71
- authentication?: AuthenticationProvider;
71
+ authentication?: AuthenticationPlugin;
72
72
  topNavigation?: TopNavigationItem[];
73
73
  sidebars?: SidebarConfig;
74
74
  plugins?: ZudokuPlugin[];
75
- slotlets?: Slotlets;
75
+ slots?: Record<string, SlotType>;
76
+ /**
77
+ * @deprecated Use `slots` instead
78
+ */
79
+ UNSAFE_slotlets?: Record<string, SlotType>;
76
80
  mdx?: {
77
81
  components?: MdxComponentsType;
78
82
  };
@@ -87,14 +91,14 @@ export type ZudokuContextOptions = {
87
91
  };
88
92
  };
89
93
  export declare class ZudokuContext {
90
- readonly options: ZudokuContextOptions;
91
- readonly queryClient: QueryClient;
92
94
  plugins: NonNullable<ZudokuContextOptions["plugins"]>;
93
95
  sidebars: SidebarConfig;
94
96
  topNavigation: NonNullable<ZudokuContextOptions["topNavigation"]>;
95
97
  meta: ZudokuContextOptions["metadata"];
96
98
  page: ZudokuContextOptions["page"];
97
- authentication?: ZudokuContextOptions["authentication"];
99
+ readonly authentication?: ZudokuContextOptions["authentication"];
100
+ readonly queryClient: QueryClient;
101
+ readonly options: ZudokuContextOptions;
98
102
  private readonly navigationPlugins;
99
103
  private emitter;
100
104
  constructor(options: ZudokuContextOptions, queryClient: QueryClient);
@@ -2,26 +2,27 @@ import { createNanoEvents } from "nanoevents";
2
2
  import { useAuthState } from "../authentication/state.js";
3
3
  import { joinPath } from "../util/joinPath.js";
4
4
  import { objectEntries } from "../util/objectEntries.js";
5
- import { isApiIdentityPlugin, isEventConsumerPlugin, isNavigationPlugin, needsInitialization, } from "./plugins.js";
5
+ import { isApiIdentityPlugin, isAuthenticationPlugin, isEventConsumerPlugin, isNavigationPlugin, needsInitialization, } from "./plugins.js";
6
6
  export class ZudokuContext {
7
- options;
8
- queryClient;
9
7
  plugins;
10
8
  sidebars;
11
9
  topNavigation;
12
10
  meta;
13
11
  page;
14
12
  authentication;
13
+ queryClient;
14
+ options;
15
15
  navigationPlugins;
16
16
  emitter = createNanoEvents();
17
17
  constructor(options, queryClient) {
18
- this.options = options;
18
+ const protectedRoutes = (options.protectedRoutes ?? []).concat(options.plugins?.flatMap((plugin) => isNavigationPlugin(plugin) ? (plugin.getProtectedRoutes?.() ?? []) : []) ?? []);
19
19
  this.queryClient = queryClient;
20
+ this.options = { ...options, protectedRoutes };
20
21
  this.plugins = options.plugins ?? [];
21
22
  this.topNavigation = options.topNavigation ?? [];
22
23
  this.sidebars = options.sidebars ?? {};
23
24
  this.navigationPlugins = this.plugins.filter(isNavigationPlugin);
24
- this.authentication = options.authentication;
25
+ this.authentication = this.plugins.find(isAuthenticationPlugin);
25
26
  this.meta = options.metadata;
26
27
  this.page = options.page;
27
28
  this.plugins.forEach((plugin) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../src/lib/core/ZudokuContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../src/lib/core/ZudokuContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAW9C,OAAO,EAAkB,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAElB,mBAAmB,GAEpB,MAAM,cAAc,CAAC;AA8EtB,MAAM,OAAO,aAAa;IACjB,OAAO,CAA+C;IACtD,QAAQ,CAAgB;IACxB,aAAa,CAAqD;IAClE,IAAI,CAAmC;IACvC,IAAI,CAA+B;IAC1B,cAAc,CAA0C;IACxD,WAAW,CAAc;IACzB,OAAO,CAAuB;IAC7B,iBAAiB,CAAqB;IAC/C,OAAO,GAAG,gBAAgB,EAAgB,CAAC;IAEnD,YAAY,OAA6B,EAAE,WAAwB;QACjE,MAAM,eAAe,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAC5D,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAClC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CACxE,IAAI,EAAE,CACR,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9B,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;gBAAE,OAAO;YAE3C,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE;gBACxD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAQ,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;gBACrB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,KAAK;aACZ,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU,GAAG,KAAK,IAAmB,EAAE;QACrC,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAC9C,CAAC;IACJ,CAAC,CAAC;IAEF,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,gBAAgB,CACd,KAAQ,EACR,QAAyB;QAEzB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,GAAG,CACV,KAAQ,EACR,GAAG,IAAiC,EACpC,EAAE;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,gBAAgB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACxC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAC1C,CACF,CAAC;QAEF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,WAAW,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC;CACH"}
@@ -2,13 +2,15 @@ import type { LucideIcon } from "lucide-react";
2
2
  import type { ReactElement } from "react";
3
3
  import type { Location, RouteObject } from "react-router";
4
4
  import type { Sidebar } from "../../config/validators/SidebarSchema.js";
5
+ import type { AuthenticationPlugin } from "../authentication/authentication.js";
5
6
  import type { MdxComponentsType } from "../util/MdxComponents.js";
6
7
  import type { ApiIdentity, ZudokuContext, ZudokuEvents } from "./ZudokuContext.js";
7
- export type ZudokuPlugin = CommonPlugin | ProfileMenuPlugin | NavigationPlugin | ApiIdentityPlugin | SearchProviderPlugin | EventConsumerPlugin;
8
- export type { RouteObject };
8
+ export type ZudokuPlugin = CommonPlugin | ProfileMenuPlugin | NavigationPlugin | ApiIdentityPlugin | SearchProviderPlugin | EventConsumerPlugin | AuthenticationPlugin;
9
+ export type { AuthenticationPlugin, RouteObject };
9
10
  export interface NavigationPlugin {
10
11
  getRoutes: () => RouteObject[];
11
12
  getSidebar?: (path: string, context: ZudokuContext) => Promise<Sidebar>;
13
+ getProtectedRoutes?: () => string[];
12
14
  }
13
15
  export declare const createApiIdentityPlugin: (plugin: ApiIdentityPlugin) => ApiIdentityPlugin;
14
16
  export declare const createProfileMenuPlugin: (plugin: ProfileMenuPlugin) => ProfileMenuPlugin;
@@ -47,6 +49,7 @@ export type EventConsumerPlugin<Event extends ZudokuEvents = ZudokuEvents> = {
47
49
  export declare const isEventConsumerPlugin: (obj: ZudokuPlugin) => obj is EventConsumerPlugin;
48
50
  export declare const isProfileMenuPlugin: (obj: ZudokuPlugin) => obj is ProfileMenuPlugin;
49
51
  export declare const isNavigationPlugin: (obj: ZudokuPlugin) => obj is NavigationPlugin;
52
+ export declare const isAuthenticationPlugin: (obj: ZudokuPlugin) => obj is AuthenticationPlugin;
50
53
  export declare const isSearchPlugin: (obj: ZudokuPlugin) => obj is SearchProviderPlugin;
51
54
  export declare const needsInitialization: (obj: ZudokuPlugin) => obj is CommonPlugin;
52
55
  export declare const hasHead: (obj: ZudokuPlugin) => obj is CommonPlugin;
@@ -3,6 +3,7 @@ export const createProfileMenuPlugin = (plugin) => plugin;
3
3
  export const isEventConsumerPlugin = (obj) => "events" in obj && typeof obj.events === "object";
4
4
  export const isProfileMenuPlugin = (obj) => "getProfileMenuItems" in obj && typeof obj.getProfileMenuItems === "function";
5
5
  export const isNavigationPlugin = (obj) => "getRoutes" in obj && typeof obj.getRoutes === "function";
6
+ export const isAuthenticationPlugin = (obj) => "signUp" in obj && typeof obj.signUp === "function";
6
7
  export const isSearchPlugin = (obj) => "renderSearch" in obj && typeof obj.renderSearch === "function";
7
8
  export const needsInitialization = (obj) => "initialize" in obj && typeof obj.initialize === "function";
8
9
  export const hasHead = (obj) => "getHead" in obj && typeof obj.getHead === "function";
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/lib/core/plugins.ts"],"names":[],"mappings":"AA0BA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,MAAyB,EACN,EAAE,CAAC,MAAM,CAAC;AAE/B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,MAAyB,EACN,EAAE,CAAC,MAAM,CAAC;AAsC/B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,GAAiB,EACW,EAAE,CAC9B,QAAQ,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;AAEpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAAiB,EACS,EAAE,CAC5B,qBAAqB,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,mBAAmB,KAAK,UAAU,CAAC;AAEhF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,GAAiB,EACQ,EAAE,CAC3B,WAAW,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,UAAU,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAiB,EACY,EAAE,CAC/B,cAAc,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC;AAElE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAiB,EAAuB,EAAE,CAC5E,YAAY,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU,CAAC;AAE9D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAiB,EAAuB,EAAE,CAChE,SAAS,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAiB,EAAuB,EAAE,CAC5E,kBAAkB,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAAiB,EACS,EAAE,CAC5B,eAAe,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,UAAU,CAAC"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/lib/core/plugins.ts"],"names":[],"mappings":"AA6BA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,MAAyB,EACN,EAAE,CAAC,MAAM,CAAC;AAE/B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,MAAyB,EACN,EAAE,CAAC,MAAM,CAAC;AAsC/B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,GAAiB,EACW,EAAE,CAC9B,QAAQ,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;AAEpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAAiB,EACS,EAAE,CAC5B,qBAAqB,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,mBAAmB,KAAK,UAAU,CAAC;AAEhF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,GAAiB,EACQ,EAAE,CAC3B,WAAW,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,UAAU,CAAC;AAE5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,GAAiB,EACY,EAAE,CAC/B,QAAQ,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAiB,EACY,EAAE,CAC/B,cAAc,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC;AAElE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAiB,EAAuB,EAAE,CAC5E,YAAY,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU,CAAC;AAE9D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAiB,EAAuB,EAAE,CAChE,SAAS,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAiB,EAAuB,EAAE,CAC5E,kBAAkB,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAAiB,EACS,EAAE,CAC5B,eAAe,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,UAAU,CAAC"}
@@ -13,6 +13,6 @@ export function ErrorAlert({ error }) {
13
13
  const stack = error instanceof Error ? error.stack : undefined;
14
14
  const cause = error instanceof Error ? error.cause : undefined;
15
15
  const stringError = cause instanceof Error ? String(cause.stack) : stack;
16
- return (_jsxs("div", { className: cn(ProseClasses, "grid grid-cols-1 !max-w-none pt-[--padding-content-top]"), children: [_jsx(Heading, { level: 1, children: title }), "Error: ", message, hint && _jsx(DeveloperHint, { className: "mb-4", children: hint }), stringError && (_jsx("div", { children: _jsx(SyntaxHighlight, { className: "max-h-[400px] border mt-2", language: "js", code: stringError }) }))] }));
16
+ return (_jsxs("div", { className: cn(ProseClasses, "grid grid-cols-1 !max-w-none pt-(--padding-content-top)"), children: [_jsx(Heading, { level: 1, children: title }), "Error: ", message, hint && _jsx(DeveloperHint, { className: "mb-4", children: hint }), stringError && (_jsx("div", { children: _jsx(SyntaxHighlight, { className: "max-h-[400px] border mt-2", language: "js", code: stringError }) }))] }));
17
17
  }
18
18
  //# sourceMappingURL=ErrorAlert.js.map
@@ -1,3 +1,22 @@
1
+ import { useMDXComponents as useMDXComponentsImport } from "@mdx-js/react";
2
+ import { CACHE_KEYS } from "../components/cache.js";
1
3
  import { useEvent as useEventImport } from "./useEvent.js";
2
4
  export declare const useEvent: typeof useEventImport;
3
5
  export declare const useTheme: () => import("next-themes").UseThemeProps;
6
+ export declare const useExposedProps: () => import("../util/useExposedProps.js").ExposedComponentProps;
7
+ export declare const useMDXComponents: typeof useMDXComponentsImport;
8
+ export declare const useAuth: () => {
9
+ login: () => Promise<void>;
10
+ logout: () => Promise<void>;
11
+ signup: () => Promise<void>;
12
+ isAuthenticated: boolean;
13
+ isPending: boolean;
14
+ profile: import("../authentication/state.js").UserProfile | null;
15
+ providerData: unknown;
16
+ isAuthEnabled: boolean;
17
+ };
18
+ export declare const useZudoku: () => import("../core/ZudokuContext.js").ZudokuContext;
19
+ export declare const useCache: () => {
20
+ invalidateCache: (key: keyof typeof CACHE_KEYS) => Promise<void>;
21
+ };
22
+ export { CACHE_KEYS };
@@ -1,5 +1,16 @@
1
+ import { useMDXComponents as useMDXComponentsImport } from "@mdx-js/react";
1
2
  import { useTheme as useThemeImport } from "next-themes";
3
+ import { useAuth as useAuthImport } from "../authentication/hook.js";
4
+ import { CACHE_KEYS, useCache as useCacheImport } from "../components/cache.js";
5
+ import { useZudoku as useZudokuImport } from "../components/context/ZudokuContext.js";
6
+ import { useExposedProps as useExposedPropsImport } from "../util/useExposedProps.js";
2
7
  import { useEvent as useEventImport } from "./useEvent.js";
3
8
  export const useEvent = /*@__PURE__*/ useEventImport;
4
9
  export const useTheme = /*@__PURE__*/ useThemeImport;
10
+ export const useExposedProps = /*@__PURE__*/ useExposedPropsImport;
11
+ export const useMDXComponents = /*@__PURE__*/ useMDXComponentsImport;
12
+ export const useAuth = /*@__PURE__*/ useAuthImport;
13
+ export const useZudoku = /*@__PURE__*/ useZudokuImport;
14
+ export const useCache = /*@__PURE__*/ useCacheImport;
15
+ export { CACHE_KEYS };
5
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC,cAAc,CAAC;AACrD,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC,cAAc,CAAC;AACrD,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC,cAAc,CAAC;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC,qBAAqB,CAAC;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC,sBAAsB,CAAC;AACrE,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAC,eAAe,CAAC;AACvD,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC,cAAc,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -18,7 +18,7 @@ export const Catalog = ({ items, filterCatalogItems = (items) => items, label =
18
18
  });
19
19
  // Only index the overview page, ignore the rest
20
20
  const dataSet = activeCategory ? { "data-pagefind-ignore": "all" } : {};
21
- return (_jsxs("section", { className: "pt-[--padding-content-top]", ...dataSet, children: [_jsx(Helmet, { children: _jsxs("title", { children: [categoryLabel ? `${categoryLabel} - ` : "", label] }) }), _jsxs("div", { className: "grid gap-4", children: [_jsxs(Heading, { level: 2, children: [label, categoryLabel && ` - ${categoryLabel}`] }), _jsx("div", { className: "grid grid-cols-2 gap-4", children: catalogItems.data
21
+ return (_jsxs("section", { className: "pt-(--padding-content-top)", ...dataSet, children: [_jsx(Helmet, { children: _jsxs("title", { children: [categoryLabel ? `${categoryLabel} - ` : "", label] }) }), _jsxs("div", { className: "grid gap-4", children: [_jsxs(Heading, { level: 2, children: [label, categoryLabel && ` - ${categoryLabel}`] }), _jsx("div", { className: "grid grid-cols-2 gap-4", children: catalogItems.data
22
22
  .filter((api) => !activeCategory ||
23
23
  api.categories.find((c) => c.tags.find((t) => getKey(c.label, t) === activeCategory)))
24
24
  .map((api) => (_jsx(Link, { to: joinUrl(api.path), className: "no-underline hover:!text-foreground", children: _jsxs("div", { className: "border h-full rounded-lg p-4 flex flex-col gap-2 cursor-pointer hover:bg-border/20 font-normal", children: [_jsx("span", { className: "font-semibold", children: api.label }), _jsx(Markdown, { className: "text-sm whitespace-pre-wrap mb-6 line-clamp-2", content: api.description })] }) }, api.path))) })] })] }));
@@ -1,4 +1,5 @@
1
- import { ApiKeyService } from "./index.js";
2
- export declare const CreateApiKey: ({ service }: {
1
+ import { type ApiKeyService } from "./index.js";
2
+ export declare const CreateApiKey: ({ service, onOpenChange, }: {
3
3
  service: ApiKeyService;
4
+ onOpenChange: (open: boolean) => void;
4
5
  }) => import("react/jsx-runtime").JSX.Element | null;
@@ -1,12 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useMutation, useQueryClient } from "@tanstack/react-query";
3
3
  import { useForm } from "react-hook-form";
4
- import { Link, useNavigate } from "react-router";
4
+ import { useNavigate } from "react-router";
5
+ import { ActionButton } from "zudoku/ui/ActionButton.js";
6
+ import { DialogClose, DialogFooter } from "zudoku/ui/Dialog.js";
5
7
  import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from "zudoku/ui/Select.js";
6
8
  import { useZudoku } from "../../components/context/ZudokuContext.js";
7
9
  import { Button } from "../../ui/Button.js";
8
10
  import { Input } from "../../ui/Input.js";
9
- export const CreateApiKey = ({ service }) => {
11
+ export const CreateApiKey = ({ service, onOpenChange, }) => {
10
12
  const context = useZudoku();
11
13
  const queryClient = useQueryClient();
12
14
  const navigate = useNavigate();
@@ -21,7 +23,7 @@ export const CreateApiKey = ({ service }) => {
21
23
  throw new Error("createKey not implemented");
22
24
  }
23
25
  const expiresOnDate = expiresOn !== "never" ? addDaysToDate(Number(expiresOn)) : undefined;
24
- return service.createKey({ description: description, expiresOn: expiresOnDate }, context);
26
+ return service.createKey({ description: description || "Secret Key", expiresOn: expiresOnDate }, context);
25
27
  },
26
28
  onSuccess: async () => {
27
29
  await queryClient.invalidateQueries({ queryKey: ["api-keys"] });
@@ -31,7 +33,9 @@ export const CreateApiKey = ({ service }) => {
31
33
  if (!service.createKey) {
32
34
  return null;
33
35
  }
34
- return (_jsxs("div", { className: "max-w-screen-lg pt-[--padding-content-top] pb-[--padding-content-bottom]", children: [_jsx("div", { className: "flex justify-between mb-4 border-b pb-1", children: _jsx("h1", { className: "font-medium text-2xl", children: "New API Key" }) }), _jsx("form", { onSubmit: form.handleSubmit((data) => createKeyMutation.mutate(data)), children: _jsxs("div", { className: "flex gap-2 flex-col", children: ["Note", _jsx(Input, { ...form.register("description") }), "Expiration", _jsxs(Select, { onValueChange: (value) => form.setValue("expiresOn", value), defaultValue: form.getValues("expiresOn"), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: _jsxs(SelectGroup, { children: [[7, 30, 60, 90].map((option) => (_jsxs(SelectItem, { value: String(option), children: [option, " days"] }, option))), _jsx(SelectItem, { value: "never", children: "Never" })] }) })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { children: "Generate Key" }), _jsx(Button, { variant: "outline", asChild: true, children: _jsx(Link, { to: "/settings/api-keys/", children: "Cancel" }) })] })] }) })] }));
36
+ return (_jsx("form", { onSubmit: form.handleSubmit((data) => createKeyMutation.mutate({ ...data }, {
37
+ onSuccess: () => onOpenChange(false),
38
+ })), children: _jsxs("div", { className: "flex gap-2 flex-col text-sm font-medium", children: ["Name", _jsx(Input, { ...form.register("description") }), "Expiration", _jsxs(Select, { onValueChange: (value) => form.setValue("expiresOn", value), defaultValue: form.getValues("expiresOn"), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: _jsxs(SelectGroup, { children: [[7, 30, 60, 90].map((option) => (_jsxs(SelectItem, { value: String(option), children: [option, " days"] }, option))), _jsx(SelectItem, { value: "never", children: "Never" })] }) })] }), _jsxs(DialogFooter, { children: [_jsx(DialogClose, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Cancel" }) }), _jsx(ActionButton, { isPending: createKeyMutation.isPending, children: "Generate Key" })] })] }) }));
35
39
  };
36
40
  const addDaysToDate = (days) => {
37
41
  const date = new Date();
@@ -1 +1 @@
1
- {"version":3,"file":"CreateApiKey.js","sourceRoot":"","sources":["../../../../src/lib/plugins/api-keys/CreateApiKey.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreateApiKey.js","sourceRoot":"","sources":["../../../../src/lib/plugins/api-keys/CreateApiKey.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK1C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,OAAO,EACP,YAAY,GAIb,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAe;QACjC,aAAa,EAAE;YACb,SAAS,EAAE,IAAI;SAChB;KACF,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;QACpC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAgB,EAAE,EAAE;YACvD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,aAAa,GACjB,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEvE,OAAO,OAAO,CAAC,SAAS,CACtB,EAAE,WAAW,EAAE,WAAW,IAAI,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,EACtE,OAAO,CACR,CAAC;QACJ,CAAC;QACD,SAAS,EAAE,KAAK,IAAI,EAAE;YACpB,MAAM,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAChE,MAAM,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QACxC,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,eACE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CACnC,iBAAiB,CAAC,MAAM,CACtB,EAAE,GAAG,IAAI,EAAE,EACX;YACE,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;SACrC,CACF,CACF,YAED,eAAK,SAAS,EAAC,yCAAyC,qBAEtD,KAAC,KAAK,OAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAI,gBAE3C,MAAC,MAAM,IACL,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,EAC3D,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAEzC,KAAC,aAAa,cACZ,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACZ,MAAC,WAAW,eACT,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,MAAC,UAAU,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAC9B,MAAM,cAD+B,MAAM,CAEjC,CACd,CAAC,EACF,KAAC,UAAU,IAAC,KAAK,EAAC,OAAO,sBAAmB,IAChC,GACA,IACT,EACT,MAAC,YAAY,eACX,KAAC,WAAW,IAAC,OAAO,kBAClB,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,uBAAgB,GAC7B,EACd,KAAC,YAAY,IAAC,SAAS,EAAE,iBAAiB,CAAC,SAAS,6BAErC,IACF,IACX,GACD,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE;IAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ApiKeyService } from "./index.js";
1
+ import { type ApiKeyService } from "./index.js";
2
2
  export declare const SettingsApiKeys: ({ service }: {
3
3
  service: ApiKeyService;
4
4
  }) => import("react/jsx-runtime").JSX.Element;
@@ -1,26 +1,29 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useMutation, useQueryClient, useSuspenseQuery, } from "@tanstack/react-query";
3
- import { CheckIcon, CopyIcon, EyeIcon, EyeOffIcon, RotateCwIcon, TrashIcon, } from "lucide-react";
3
+ import { AnimatePresence, motion } from "framer-motion";
4
+ import { CheckIcon, CopyIcon, EyeIcon, EyeOffIcon, LoaderPinwheelIcon, RotateCwIcon, TrashIcon, } from "lucide-react";
4
5
  import { useState } from "react";
5
6
  import { Link } from "react-router";
7
+ import { Card, CardHeader } from "zudoku/ui/Card.js";
8
+ import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "zudoku/ui/Dialog.js";
6
9
  import { useZudoku } from "../../components/context/ZudokuContext.js";
7
- import { Slotlet } from "../../components/SlotletProvider.js";
10
+ import { Slot } from "../../components/Slot.js";
8
11
  import { Button } from "../../ui/Button.js";
9
12
  import { cn } from "../../util/cn.js";
10
13
  export const SettingsApiKeys = ({ service }) => {
11
14
  const context = useZudoku();
12
15
  const queryClient = useQueryClient();
13
16
  const { data } = useSuspenseQuery({
14
- queryFn: () => service.getKeys(context),
17
+ queryFn: () => service.getConsumers(context),
15
18
  queryKey: ["api-keys"],
16
19
  retry: false,
17
20
  });
18
21
  const deleteKeyMutation = useMutation({
19
- mutationFn: (id) => {
22
+ mutationFn: ({ consumerId, keyId, }) => {
20
23
  if (!service.deleteKey) {
21
24
  throw new Error("deleteKey not implemented");
22
25
  }
23
- return service.deleteKey(id, context);
26
+ return service.deleteKey(consumerId, keyId, context);
24
27
  },
25
28
  onSuccess: () => {
26
29
  void queryClient.invalidateQueries({ queryKey: ["api-keys"] });
@@ -35,26 +38,54 @@ export const SettingsApiKeys = ({ service }) => {
35
38
  },
36
39
  onSuccess: () => queryClient.invalidateQueries({ queryKey: ["api-keys"] }),
37
40
  });
38
- return (_jsxs("div", { className: "max-w-screen-lg h-full pt-[--padding-content-top] pb-[--padding-content-bottom]", children: [_jsx(Slotlet, { name: "api-keys-list-page" }), _jsxs("div", { className: "flex justify-between mb-4 border-b pb-3", children: [_jsx("h1", { className: "font-medium text-2xl", children: "API Keys" }), service.createKey && (_jsx(Button, { asChild: true, children: _jsx(Link, { to: "/settings/api-keys/new", children: "Create API Key" }) }))] }), _jsx(Slotlet, { name: "api-keys-list-page-before-keys" }), data.length === 0 ? (_jsxs("div", { className: "flex flex-col justify-center gap-4 items-center p-8 border rounded bg-muted/30 text-muted-foreground", children: [_jsxs("p", { className: "text-center", children: ["No API keys created yet.", _jsx("br", {}), "Get started and create your first key."] }), service.createKey && (_jsx(Button, { asChild: true, variant: "outline", children: _jsx(Link, { to: "/settings/api-keys/new", children: "Create API Key" }) }))] })) : (_jsx("ul", { className: cn("grid grid-cols-1 rounded border divide-y divide-border", "lg:grid-cols-[minmax(250px,min-content)_1fr_min-content]"), children: data.map((key) => (_jsxs("li", { className: "p-5 grid grid-cols-subgrid col-span-full gap-2 items-center", children: [_jsxs("div", { className: "flex flex-col gap-1 text-sm", children: [key.description ?? key.id, _jsxs("div", { className: "text-muted-foreground text-xs", children: [key.createdOn && (_jsxs("div", { children: ["Created on ", new Date(key.createdOn).toLocaleDateString()] })), key.expiresOn && (_jsxs("div", { children: ["Expires on ", new Date(key.expiresOn).toLocaleDateString()] }))] })] }), _jsx("div", { className: "items-center flex lg:justify-center", children: _jsx(RevealApiKey, { apiKey: key.key }) }), _jsxs("div", { className: "flex gap-2", children: [service.rollKey && (_jsx(Button, { size: "icon", title: "Roll this key", variant: "ghost", onClick: () => {
39
- if (!confirm("Do you want to roll this key?")) {
40
- return;
41
- }
42
- rollKeyMutation.mutate(key.id);
43
- }, children: _jsx(RotateCwIcon, { size: 16 }) })), service.deleteKey && (_jsx(Button, { variant: "ghost", size: "icon", onClick: () => {
44
- if (!confirm("Do you want to delete this key?")) {
45
- return;
46
- }
47
- deleteKeyMutation.mutate(key.id);
48
- }, disabled: deleteKeyMutation.isPending, children: _jsx(TrashIcon, { size: 16 }) }))] })] }, key.id))) }))] }));
41
+ return (_jsxs("div", { className: "max-w-screen-lg h-full pt-(--padding-content-top) pb-(--padding-content-bottom)", children: [_jsx(Slot.Target, { name: "api-keys-list-page" }), _jsxs("div", { className: "flex justify-between pb-3", children: [_jsx("h1", { className: "font-medium text-2xl", children: "API Keys" }), service.createKey && (_jsx(Button, { asChild: true, children: _jsx(Link, { to: "/settings/api-keys/new", children: "Create API Key" }) }))] }), _jsx("p", { children: "Create, manage, and monitor your API keys" }), _jsx(Slot.Target, { name: "api-keys-list-page-before-keys" }), _jsx("div", { className: "h-8" }), _jsx("div", { className: "grid grid-cols-8", children: data.length === 0 ? (_jsxs("div", { className: "flex flex-col justify-center gap-4 items-center p-8 border rounded-sm bg-muted/30 text-muted-foreground", children: [_jsxs("p", { className: "text-center", children: ["No API keys created yet.", _jsx("br", {}), "Get started and create your first key."] }), service.createKey && (_jsx(Button, { asChild: true, variant: "outline", children: _jsx(Link, { to: "/settings/api-keys/new", children: "Create API Key" }) }))] })) : (_jsx("ul", { className: cn("grid grid-cols-1 divide-y divide-border col-span-6", "lg:grid-cols-[1fr_min-content]"), children: data.map((consumers) => (_jsxs(Card, { className: "grid grid-cols-subgrid col-span-full items-center mb-4", children: [_jsxs(CardHeader, { className: "border-b col-span-full grid-cols-subgrid grid", children: [_jsxs("div", { className: "flex flex-col text-sm justify-center", children: [_jsxs("div", { className: "font-medium text-lg", children: [consumers.name ?? consumers.id, _jsx("div", { className: "text-muted-foreground text-xs", children: consumers.createdOn })] }), _jsxs("div", { className: "text-muted-foreground text-xs", children: [consumers.createdOn && (_jsxs("div", { children: ["Created on", " ", new Date(consumers.createdOn).toLocaleDateString()] })), consumers.expiresOn && (_jsxs("div", { children: ["Expires on", " ", new Date(consumers.expiresOn).toLocaleDateString()] }))] })] }), _jsx("div", { className: "flex justify-end", children: service.rollKey && (_jsxs(Dialog, { children: [_jsx(DialogTrigger, { asChild: true, children: _jsx(Button, { size: "icon", title: "Roll this key", variant: "ghost", disabled: rollKeyMutation.isPending, children: _jsx(RotateCwIcon, { size: 16 }) }) }), _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Roll API Key" }), _jsx(DialogDescription, { children: "Are you sure you want to roll this API key?" })] }), _jsxs(DialogFooter, { children: [_jsx(DialogClose, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Cancel" }) }), _jsx(DialogClose, { asChild: true, children: _jsx(Button, { onClick: () => {
42
+ rollKeyMutation.mutate(consumers.id);
43
+ }, children: "Roll Key" }) })] })] })] })) })] }), _jsx("div", { className: "divide-y col-span-full grid-cols-subgrid grid", children: _jsxs(AnimatePresence, { children: [rollKeyMutation.isPending && (_jsxs(motion.div, { className: cn("flex col-span-full items-center gap-2 px-6 py-1 text-xs bg-muted/30 font-medium"), initial: { opacity: 0, y: 0 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: 0 }, transition: { duration: 0.3 }, children: [_jsx(LoaderPinwheelIcon, { size: 16, className: "animate-spin opacity-80" }), "Rolling key..."] })), consumers.apiKeys.map((apiKey) => (_jsx(RevealApiKey, { apiKey: apiKey, onDeleteKey: () => {
44
+ deleteKeyMutation.mutate({
45
+ consumerId: consumers.id,
46
+ keyId: apiKey.id,
47
+ });
48
+ } }, apiKey.id)))] }) })] }, consumers.id))) })) })] }));
49
+ };
50
+ const getTimeAgo = (date) => {
51
+ const now = new Date();
52
+ const created = new Date(date);
53
+ const diffInSeconds = Math.floor((now.getTime() - created.getTime()) / 1000);
54
+ const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
55
+ if (diffInSeconds < 60)
56
+ return rtf.format(-diffInSeconds, "second");
57
+ if (diffInSeconds < 3600)
58
+ return rtf.format(-Math.floor(diffInSeconds / 60), "minute");
59
+ if (diffInSeconds < 86400)
60
+ return rtf.format(-Math.floor(diffInSeconds / 3600), "hour");
61
+ if (diffInSeconds < 2592000)
62
+ return rtf.format(-Math.floor(diffInSeconds / 86400), "day");
63
+ if (diffInSeconds < 31536000)
64
+ return rtf.format(-Math.floor(diffInSeconds / 2592000), "month");
65
+ return rtf.format(-Math.floor(diffInSeconds / 31536000), "year");
49
66
  };
50
- const RevealApiKey = ({ apiKey }) => {
67
+ const RevealApiKey = ({ apiKey, onDeleteKey, }) => {
51
68
  const [revealed, setRevealed] = useState(false);
52
69
  const [copied, setCopied] = useState(false);
53
- return (_jsxs("div", { className: "flex gap-2 items-center text-sm", children: [_jsx("div", { className: "border rounded bg-gray-100 dark:bg-gray-950 p-1 font-mono truncate h-9 items-center flex px-2", children: revealed ? apiKey : "•".repeat(apiKey.length) }), _jsx(Button, { variant: "outline", onClick: () => setRevealed((prev) => !prev), size: "icon", children: revealed ? _jsx(EyeOffIcon, { size: 16 }) : _jsx(EyeIcon, { size: 16 }) }), _jsx(Button, { variant: "outline", onClick: () => {
54
- void navigator.clipboard.writeText(apiKey).then(() => {
55
- setCopied(true);
56
- setTimeout(() => setCopied(false), 2000);
57
- });
58
- }, size: "icon", children: copied ? _jsx(CheckIcon, { size: 16 }) : _jsx(CopyIcon, { size: 16 }) })] }));
70
+ const { key, createdOn, expiresOn } = apiKey;
71
+ const isExpired = expiresOn && new Date(expiresOn) < new Date();
72
+ const daysUntilExpiry = expiresOn
73
+ ? Math.ceil((new Date(expiresOn).getTime() - new Date().getTime()) /
74
+ (1000 * 60 * 60 * 24))
75
+ : Infinity;
76
+ const expiresSoon = daysUntilExpiry <= 7 && !isExpired;
77
+ return (_jsxs(motion.div, { className: "grid col-span-full grid-cols-subgrid p-6", initial: { opacity: 0, y: 0 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: 0 }, transition: { duration: 0.3 }, children: [_jsxs("div", { className: "flex flex-col gap-1", children: [_jsxs("div", { className: "flex gap-2 items-center text-sm border rounded-md w-fit px-1", children: [_jsxs("div", { className: "font-mono truncate h-9 items-center flex px-2 text-xs gap-2", children: [_jsx("div", { className: cn("rounded-full w-2 h-2 bg-emerald-400 mr-2", (expiresSoon || isExpired) && "bg-neutral-200") }), _jsxs("span", { children: [_jsx("span", { className: revealed ? "" : "opacity-20", children: revealed
78
+ ? key.slice(0, -5)
79
+ : "**** ".repeat(key.slice(0, -5).length / 5) +
80
+ "*".repeat(key.slice(0, -5).length % 5) }), _jsx("span", { children: key.slice(-5) })] })] }), _jsx(Button, { variant: "ghost", onClick: () => setRevealed((prev) => !prev), size: "icon", children: revealed ? _jsx(EyeOffIcon, { size: 16 }) : _jsx(EyeIcon, { size: 16 }) }), _jsx(Button, { variant: "ghost", onClick: () => {
81
+ void navigator.clipboard.writeText(key).then(() => {
82
+ setCopied(true);
83
+ setTimeout(() => setCopied(false), 2000);
84
+ });
85
+ }, size: "icon", children: copied ? _jsx(CheckIcon, { size: 16 }) : _jsx(CopyIcon, { size: 16 }) })] }), _jsxs("div", { className: "flex gap-1 mt-0.5 text-nowrap", children: [createdOn && (_jsxs("span", { className: "text-xs text-muted-foreground", children: ["Created ", getTimeAgo(createdOn), "."] })), " ", expiresOn && expiresSoon && (_jsxs("span", { className: "text-xs text-primary", children: ["Expires in ", daysUntilExpiry, " ", daysUntilExpiry === 1 ? "day" : "days", "."] })), expiresOn && isExpired && (_jsxs("span", { className: "text-xs text-primary", children: ["Expired", " ", daysUntilExpiry === 0
86
+ ? "today."
87
+ : `${daysUntilExpiry * -1} days ago.`] }))] })] }), _jsx("div", { className: "flex justify-end", children: isExpired && onDeleteKey && (_jsxs(Dialog, { children: [_jsx(DialogTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", children: _jsx(TrashIcon, { size: 16 }) }) }), _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Delete API Key" }), _jsx(DialogDescription, { children: "Are you sure you want to delete this API key?" })] }), _jsxs(DialogFooter, { children: [_jsx(DialogClose, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Cancel" }) }), _jsx(DialogClose, { asChild: true, children: _jsx(Button, { onClick: () => {
88
+ onDeleteKey();
89
+ }, children: "Delete" }) })] })] })] })) })] }));
59
90
  };
60
91
  //# sourceMappingURL=SettingsApiKeys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsApiKeys.js","sourceRoot":"","sources":["../../../../src/lib/plugins/api-keys/SettingsApiKeys.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SettingsApiKeys.js","sourceRoot":"","sources":["../../../../src/lib/plugins/api-keys/SettingsApiKeys.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { ZudokuContext } from "../../core/ZudokuContext.js";
2
- import { type ApiIdentityPlugin, type ZudokuPlugin, ProfileMenuPlugin } from "../../core/plugins.js";
1
+ import { type ZudokuContext } from "../../core/ZudokuContext.js";
2
+ import { type ApiIdentityPlugin, type ProfileMenuPlugin, type ZudokuPlugin } from "../../core/plugins.js";
3
3
  export type ApiKeyService = {
4
- getKeys: (context: ZudokuContext) => Promise<ApiKey[]>;
5
- rollKey?: (id: string, context: ZudokuContext) => Promise<void>;
6
- deleteKey?: (id: string, context: ZudokuContext) => Promise<void>;
4
+ getConsumers: (context: ZudokuContext) => Promise<ApiConsumer[]>;
5
+ rollKey?: (consumerId: string, context: ZudokuContext) => Promise<void>;
6
+ deleteKey?: (consumerId: string, keyId: string, context: ZudokuContext) => Promise<void>;
7
7
  updateKeyDescription?: (apiKey: {
8
8
  id: string;
9
9
  description: string;
@@ -14,10 +14,9 @@ export type ApiKeyService = {
14
14
  expiresOn?: string;
15
15
  }, context: ZudokuContext) => Promise<void>;
16
16
  };
17
- export type GetApiKeysOptions = ApiKeyService | {
18
- endpoint: string;
19
- } | object;
20
- export type ApiKeyPluginOptions = object & GetApiKeysOptions;
17
+ export type ApiKeyPluginOptions = ApiKeyService | ({
18
+ deploymentName: string;
19
+ } & Partial<ApiKeyService>);
21
20
  export interface ApiKey {
22
21
  id: string;
23
22
  description?: string;
@@ -26,5 +25,15 @@ export interface ApiKey {
26
25
  expiresOn?: string;
27
26
  key: string;
28
27
  }
28
+ export interface ApiConsumer {
29
+ id: string;
30
+ name: string;
31
+ apiKeys: ApiKey[];
32
+ description?: string;
33
+ createdOn?: string;
34
+ updatedOn?: string;
35
+ expiresOn?: string;
36
+ key?: ApiKey;
37
+ }
29
38
  export declare const createApiKeyService: <T extends ApiKeyService>(service: T) => T;
30
39
  export declare const apiKeyPlugin: (options: ApiKeyPluginOptions) => ZudokuPlugin & ApiIdentityPlugin & ProfileMenuPlugin;