zudoku 0.0.0-z6bcd96da → 0.0.0-z6e949a6d

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 (212) hide show
  1. package/dist/config/loader.js +3 -1
  2. package/dist/config/loader.js.map +1 -1
  3. package/dist/config/validators/InputNavigationSchema.d.ts +170 -120
  4. package/dist/config/validators/InputNavigationSchema.js +17 -0
  5. package/dist/config/validators/InputNavigationSchema.js.map +1 -1
  6. package/dist/config/validators/NavigationSchema.d.ts +10 -2
  7. package/dist/config/validators/NavigationSchema.js +6 -0
  8. package/dist/config/validators/NavigationSchema.js.map +1 -1
  9. package/dist/config/validators/ProtectedRoutesSchema.d.ts +1 -1
  10. package/dist/config/validators/validate.d.ts +7 -7
  11. package/dist/flat-config.d.ts +35 -24
  12. package/dist/lib/components/Heading.d.ts +1 -1
  13. package/dist/lib/components/MobileTopNavigation.js +2 -1
  14. package/dist/lib/components/MobileTopNavigation.js.map +1 -1
  15. package/dist/lib/components/TopNavigation.d.ts +7 -1
  16. package/dist/lib/components/TopNavigation.js +7 -2
  17. package/dist/lib/components/TopNavigation.js.map +1 -1
  18. package/dist/lib/components/context/ZudokuContext.d.ts +8 -1
  19. package/dist/lib/components/context/ZudokuContext.js +2 -0
  20. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  21. package/dist/lib/components/index.d.ts +18 -74
  22. package/dist/lib/components/index.js +19 -36
  23. package/dist/lib/components/index.js.map +1 -1
  24. package/dist/lib/components/navigation/Navigation.js +4 -3
  25. package/dist/lib/components/navigation/Navigation.js.map +1 -1
  26. package/dist/lib/components/navigation/NavigationCategory.js +8 -0
  27. package/dist/lib/components/navigation/NavigationCategory.js.map +1 -1
  28. package/dist/lib/components/navigation/NavigationFilterContext.d.ts +8 -0
  29. package/dist/lib/components/navigation/NavigationFilterContext.js +12 -0
  30. package/dist/lib/components/navigation/NavigationFilterContext.js.map +1 -0
  31. package/dist/lib/components/navigation/NavigationFilterInput.d.ts +3 -0
  32. package/dist/lib/components/navigation/NavigationFilterInput.js +9 -0
  33. package/dist/lib/components/navigation/NavigationFilterInput.js.map +1 -0
  34. package/dist/lib/components/navigation/NavigationItem.js +11 -1
  35. package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
  36. package/dist/lib/components/navigation/utils.d.ts +2 -1
  37. package/dist/lib/components/navigation/utils.js +22 -1
  38. package/dist/lib/components/navigation/utils.js.map +1 -1
  39. package/dist/lib/core/plugins.d.ts +11 -1
  40. package/dist/lib/core/plugins.js +1 -0
  41. package/dist/lib/core/plugins.js.map +1 -1
  42. package/dist/lib/core/transform-config.d.ts +2 -0
  43. package/dist/lib/core/transform-config.js +22 -0
  44. package/dist/lib/core/transform-config.js.map +1 -0
  45. package/dist/lib/hooks/index.d.ts +7 -30
  46. package/dist/lib/hooks/index.js +7 -15
  47. package/dist/lib/hooks/index.js.map +1 -1
  48. package/dist/lib/oas/graphql/circular.d.ts +1 -1
  49. package/dist/lib/oas/graphql/circular.js +18 -35
  50. package/dist/lib/oas/graphql/circular.js.map +1 -1
  51. package/dist/lib/oas/graphql/circular.test.js +33 -2
  52. package/dist/lib/oas/graphql/circular.test.js.map +1 -1
  53. package/dist/lib/oas/parser/index.js +14 -5
  54. package/dist/lib/oas/parser/index.js.map +1 -1
  55. package/dist/lib/plugins/openapi/playground/fileUtils.d.ts +1 -0
  56. package/dist/lib/plugins/openapi/playground/fileUtils.js +3 -0
  57. package/dist/lib/plugins/openapi/playground/fileUtils.js.map +1 -1
  58. package/dist/lib/plugins/openapi/playground/result-panel/AudioPlayer.d.ts +6 -0
  59. package/dist/lib/plugins/openapi/playground/result-panel/AudioPlayer.js +20 -0
  60. package/dist/lib/plugins/openapi/playground/result-panel/AudioPlayer.js.map +1 -0
  61. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +7 -2
  62. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
  63. package/dist/lib/ui/Command.d.ts +3 -3
  64. package/dist/lib/ui/InputGroup.d.ts +16 -0
  65. package/dist/lib/ui/InputGroup.js +65 -0
  66. package/dist/lib/ui/InputGroup.js.map +1 -0
  67. package/dist/lib/util/flattenAllOf.d.ts +0 -2
  68. package/dist/lib/util/flattenAllOf.js +0 -46
  69. package/dist/lib/util/flattenAllOf.js.map +1 -1
  70. package/dist/lib/util/flattenAllOf.test.js +2 -1
  71. package/dist/lib/util/flattenAllOf.test.js.map +1 -1
  72. package/dist/lib/util/flattenAllOfProcessor.d.ts +2 -0
  73. package/dist/lib/util/flattenAllOfProcessor.js +48 -0
  74. package/dist/lib/util/flattenAllOfProcessor.js.map +1 -0
  75. package/dist/lib/util/readFrontmatter.js +2 -1
  76. package/dist/lib/util/readFrontmatter.js.map +1 -1
  77. package/dist/vite/api/SchemaManager.js +1 -1
  78. package/dist/vite/api/SchemaManager.js.map +1 -1
  79. package/dist/vite/api/SchemaManager.test.js +1 -1
  80. package/dist/vite/api/SchemaManager.test.js.map +1 -1
  81. package/dist/vite/build.js +91 -73
  82. package/dist/vite/build.js.map +1 -1
  83. package/dist/vite/mdx/remark-inject-filepath.js +5 -1
  84. package/dist/vite/mdx/remark-inject-filepath.js.map +1 -1
  85. package/dist/vite/mdx/remark-link-rewrite.js +3 -2
  86. package/dist/vite/mdx/remark-link-rewrite.js.map +1 -1
  87. package/dist/vite/plugin-docs.js +9 -7
  88. package/dist/vite/plugin-docs.js.map +1 -1
  89. package/dist/vite/plugin-markdown-export.js +4 -2
  90. package/dist/vite/plugin-markdown-export.js.map +1 -1
  91. package/lib/{ClaudeLogo-DJ9bU-sO.js → ClaudeLogo-OpUSMQJe.js} +26 -22
  92. package/lib/{ClaudeLogo-DJ9bU-sO.js.map → ClaudeLogo-OpUSMQJe.js.map} +1 -1
  93. package/lib/{MdxPage-stpAoBtx.js → MdxPage-dzCPGdvD.js} +8 -8
  94. package/lib/{MdxPage-stpAoBtx.js.map → MdxPage-dzCPGdvD.js.map} +1 -1
  95. package/lib/{Mermaid-Koc3z8mU.js → Mermaid-JEnWyK0s.js} +3 -2
  96. package/lib/{Mermaid-Koc3z8mU.js.map → Mermaid-JEnWyK0s.js.map} +1 -1
  97. package/lib/{OAuthErrorPage-DJ811Bn_.js → OAuthErrorPage-D7n-_cqN.js} +20 -18
  98. package/lib/{OAuthErrorPage-DJ811Bn_.js.map → OAuthErrorPage-D7n-_cqN.js.map} +1 -1
  99. package/lib/{OasProvider-CS_ASmBB.js → OasProvider-DPPdikt_.js} +3 -3
  100. package/lib/{OasProvider-CS_ASmBB.js.map → OasProvider-DPPdikt_.js.map} +1 -1
  101. package/lib/{OperationList-Dq_AB4W9.js → OperationList-cEveQ_l5.js} +948 -946
  102. package/lib/OperationList-cEveQ_l5.js.map +1 -0
  103. package/lib/{RouteGuard--A04ESy8.js → RouteGuard-BMbu_Yb7.js} +5 -5
  104. package/lib/{RouteGuard--A04ESy8.js.map → RouteGuard-BMbu_Yb7.js.map} +1 -1
  105. package/lib/{SchemaList-BJZJv1gD.js → SchemaList-CRC8n5co.js} +7 -7
  106. package/lib/{SchemaList-BJZJv1gD.js.map → SchemaList-CRC8n5co.js.map} +1 -1
  107. package/lib/{SchemaView-U4JMYB3N.js → SchemaView-BR6dtnPg.js} +3 -3
  108. package/lib/{SchemaView-U4JMYB3N.js.map → SchemaView-BR6dtnPg.js.map} +1 -1
  109. package/lib/{SignUp-DCBViNUi.js → SignUp-ChqXj9vd.js} +31 -26
  110. package/lib/{SignUp-DCBViNUi.js.map → SignUp-ChqXj9vd.js.map} +1 -1
  111. package/lib/{SyntaxHighlight-Dshjn3Zf.js → SyntaxHighlight-O-IZOPLg.js} +3 -3
  112. package/lib/{SyntaxHighlight-Dshjn3Zf.js.map → SyntaxHighlight-O-IZOPLg.js.map} +1 -1
  113. package/lib/{Toc-Cgz6CPiE.js → Toc-DQF7trHT.js} +2 -2
  114. package/lib/{Toc-Cgz6CPiE.js.map → Toc-DQF7trHT.js.map} +1 -1
  115. package/lib/{index-CL8eDnQW.js → Zudoku-DA1yA-te.js} +2609 -2452
  116. package/lib/Zudoku-DA1yA-te.js.map +1 -0
  117. package/lib/{ZudokuContext-BZB1TWdT.js → ZudokuContext-C6wlLMUH.js} +137 -135
  118. package/lib/{ZudokuContext-BZB1TWdT.js.map → ZudokuContext-C6wlLMUH.js.map} +1 -1
  119. package/lib/{circular-BmMJjG1v.js → circular-C4l1Kj1N.js} +1327 -1346
  120. package/lib/{circular-BmMJjG1v.js.map → circular-C4l1Kj1N.js.map} +1 -1
  121. package/lib/createServer-DoRZ6tMa.js +13036 -0
  122. package/lib/createServer-DoRZ6tMa.js.map +1 -0
  123. package/lib/{errors-b9I-fAOY.js → errors-CYLN8SNc.js} +3 -3
  124. package/lib/{errors-b9I-fAOY.js.map → errors-CYLN8SNc.js.map} +1 -1
  125. package/lib/{firebase-BCXX7Qv5.js → firebase-DF-VVKB7.js} +14 -14
  126. package/lib/firebase-DF-VVKB7.js.map +1 -0
  127. package/lib/{hook-BGlHBdET.js → hook-C35h0YhF.js} +2 -2
  128. package/lib/{hook-BGlHBdET.js.map → hook-C35h0YhF.js.map} +1 -1
  129. package/lib/{index-O9RHI87z.js → index-Ck4TmzTO.js} +574 -538
  130. package/lib/index-Ck4TmzTO.js.map +1 -0
  131. package/lib/index-DAWHN3cH.js +86 -0
  132. package/lib/index-DAWHN3cH.js.map +1 -0
  133. package/lib/{index-UOLtazB8.js → index-DrAVvbXa.js} +2 -2
  134. package/lib/{index-UOLtazB8.js.map → index-DrAVvbXa.js.map} +1 -1
  135. package/lib/{index.esm-C5CBsVzN.js → index.esm-B2cLXwjS.js} +2 -2
  136. package/lib/index.esm-B2cLXwjS.js.map +1 -0
  137. package/lib/{index.esm-B_0dvNjB.js → index.esm-Ca5zvoff.js} +20 -20
  138. package/lib/{index.esm-B_0dvNjB.js.map → index.esm-Ca5zvoff.js.map} +1 -1
  139. package/lib/{invariant-BJAl77rw.js → invariant-B_t_F2s_.js} +3 -3
  140. package/lib/{invariant-BJAl77rw.js.map → invariant-B_t_F2s_.js.map} +1 -1
  141. package/lib/ui/InputGroup.js +155 -0
  142. package/lib/ui/InputGroup.js.map +1 -0
  143. package/lib/ui/SyntaxHighlight.js +3 -3
  144. package/lib/useExposedProps-CzTDfXfq.js +30 -0
  145. package/lib/useExposedProps-CzTDfXfq.js.map +1 -0
  146. package/lib/zudoku.__internal.js +1493 -1031
  147. package/lib/zudoku.__internal.js.map +1 -1
  148. package/lib/zudoku.auth-auth0.js +1 -1
  149. package/lib/zudoku.auth-azureb2c.js +4 -4
  150. package/lib/zudoku.auth-clerk.js +2 -2
  151. package/lib/zudoku.auth-firebase.js +5 -5
  152. package/lib/zudoku.auth-openid.js +5 -5
  153. package/lib/zudoku.auth-supabase.js +4 -4
  154. package/lib/zudoku.components.js +31 -29
  155. package/lib/zudoku.components.js.map +1 -1
  156. package/lib/zudoku.hooks.js +24 -11
  157. package/lib/zudoku.hooks.js.map +1 -1
  158. package/lib/zudoku.mermaid.js +4 -3
  159. package/lib/zudoku.mermaid.js.map +1 -1
  160. package/lib/zudoku.plugin-api-catalog.js +36 -32
  161. package/lib/zudoku.plugin-api-catalog.js.map +1 -1
  162. package/lib/zudoku.plugin-api-keys.js +131 -130
  163. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  164. package/lib/zudoku.plugin-custom-pages.js +1 -1
  165. package/lib/zudoku.plugin-markdown.js +1 -1
  166. package/lib/zudoku.plugin-openapi.js +2 -2
  167. package/lib/zudoku.plugin-search-pagefind.js +2 -2
  168. package/lib/zudoku.plugins.js +9 -8
  169. package/lib/zudoku.plugins.js.map +1 -1
  170. package/package.json +6 -4
  171. package/src/lib/components/MobileTopNavigation.tsx +13 -8
  172. package/src/lib/components/TopNavigation.tsx +25 -7
  173. package/src/lib/components/context/ZudokuContext.ts +1 -0
  174. package/src/lib/components/index.ts +19 -39
  175. package/src/lib/components/navigation/Navigation.tsx +4 -3
  176. package/src/lib/components/navigation/NavigationCategory.tsx +9 -0
  177. package/src/lib/components/navigation/NavigationFilterContext.tsx +28 -0
  178. package/src/lib/components/navigation/NavigationFilterInput.tsx +35 -0
  179. package/src/lib/components/navigation/NavigationItem.tsx +17 -1
  180. package/src/lib/components/navigation/utils.ts +32 -1
  181. package/src/lib/core/plugins.ts +21 -1
  182. package/src/lib/core/transform-config.ts +29 -0
  183. package/src/lib/hooks/index.ts +7 -16
  184. package/src/lib/oas/graphql/circular.test.ts +37 -2
  185. package/src/lib/oas/graphql/circular.ts +25 -51
  186. package/src/lib/oas/parser/index.ts +17 -6
  187. package/src/lib/plugins/openapi/playground/fileUtils.ts +4 -0
  188. package/src/lib/plugins/openapi/playground/result-panel/AudioPlayer.tsx +50 -0
  189. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +33 -17
  190. package/src/lib/ui/InputGroup.tsx +168 -0
  191. package/src/lib/util/flattenAllOf.test.ts +2 -1
  192. package/src/lib/util/flattenAllOf.ts +0 -57
  193. package/src/lib/util/flattenAllOfProcessor.ts +58 -0
  194. package/src/lib/util/readFrontmatter.ts +2 -1
  195. package/src/zuplo/enrich-with-zuplo-mcp.ts +168 -0
  196. package/src/zuplo/enrich-with-zuplo.ts +254 -0
  197. package/src/zuplo/policy-types.ts +46 -0
  198. package/src/zuplo/with-zuplo-processors.ts +35 -0
  199. package/src/zuplo/with-zuplo.ts +14 -0
  200. package/lib/OperationList-Dq_AB4W9.js.map +0 -1
  201. package/lib/Separator-BXt1LYnm.js +0 -27
  202. package/lib/Separator-BXt1LYnm.js.map +0 -1
  203. package/lib/___vite-browser-external_commonjs-proxy-BttVsNON.js +0 -9
  204. package/lib/___vite-browser-external_commonjs-proxy-BttVsNON.js.map +0 -1
  205. package/lib/createServer-CLSZ7hWJ.js +0 -16693
  206. package/lib/createServer-CLSZ7hWJ.js.map +0 -1
  207. package/lib/firebase-BCXX7Qv5.js.map +0 -1
  208. package/lib/index-CL8eDnQW.js.map +0 -1
  209. package/lib/index-DBjOT2H1.js +0 -133
  210. package/lib/index-DBjOT2H1.js.map +0 -1
  211. package/lib/index-O9RHI87z.js.map +0 -1
  212. package/lib/index.esm-C5CBsVzN.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { u as r, j as a } from "./ZudokuContext-BZB1TWdT.js";
1
+ import { b as r, j as a } from "./ZudokuContext-C6wlLMUH.js";
2
2
  import { OpenIDAuthenticationProvider as p } from "./zudoku.auth-openid.js";
3
3
  class d extends p {
4
4
  options;
@@ -1,10 +1,10 @@
1
1
  import { j as n } from "./jsx-runtime-BzflLqGi.js";
2
2
  import { PublicClientApplication as A, EventType as f } from "@azure/msal-browser";
3
- import { E as I } from "./index-CL8eDnQW.js";
3
+ import { E as I } from "./Zudoku-DA1yA-te.js";
4
4
  import { C as T } from "./ClientOnly-E7hGysn1.js";
5
- import { j as S, u as h } from "./ZudokuContext-BZB1TWdT.js";
6
- import { C, A as c } from "./errors-b9I-fAOY.js";
7
- import { C as k, O as w } from "./OAuthErrorPage-DJ811Bn_.js";
5
+ import { j as S, b as h } from "./ZudokuContext-C6wlLMUH.js";
6
+ import { C, A as c } from "./errors-CYLN8SNc.js";
7
+ import { C as k, O as w } from "./OAuthErrorPage-D7n-_cqN.js";
8
8
  const u = "/oauth/callback";
9
9
  class y extends C {
10
10
  msalInstance;
@@ -1,7 +1,7 @@
1
1
  import { j as a } from "./jsx-runtime-BzflLqGi.js";
2
2
  import { LogOutIcon as m } from "lucide-react";
3
- import { S as p, a as f, b as h } from "./SignUp-DCBViNUi.js";
4
- import { u as r } from "./ZudokuContext-BZB1TWdT.js";
3
+ import { S as p, a as f, b as h } from "./SignUp-ChqXj9vd.js";
4
+ import { b as r } from "./ZudokuContext-C6wlLMUH.js";
5
5
  const R = ({
6
6
  clerkPubKey: u,
7
7
  jwtTemplateName: c,
@@ -1,9 +1,9 @@
1
1
  import "./jsx-runtime-BzflLqGi.js";
2
- import { y as e } from "./firebase-BCXX7Qv5.js";
3
- import "./invariant-BJAl77rw.js";
4
- import "./errors-b9I-fAOY.js";
5
- import "./SignUp-DCBViNUi.js";
6
- import "./ZudokuContext-BZB1TWdT.js";
2
+ import { y as e } from "./firebase-DF-VVKB7.js";
3
+ import "./invariant-B_t_F2s_.js";
4
+ import "./errors-CYLN8SNc.js";
5
+ import "./SignUp-ChqXj9vd.js";
6
+ import "./ZudokuContext-C6wlLMUH.js";
7
7
  export {
8
8
  e as default
9
9
  };
@@ -1,10 +1,10 @@
1
1
  import { j as D } from "./jsx-runtime-BzflLqGi.js";
2
- import { a as Le } from "./invariant-BJAl77rw.js";
3
- import { E as Ue } from "./index-CL8eDnQW.js";
2
+ import { g as Le } from "./invariant-B_t_F2s_.js";
3
+ import { E as Ue } from "./Zudoku-DA1yA-te.js";
4
4
  import { C as xe } from "./ClientOnly-E7hGysn1.js";
5
- import { j as Ce, u as S } from "./ZudokuContext-BZB1TWdT.js";
6
- import { C as Ie, O as re, A as R } from "./errors-b9I-fAOY.js";
7
- import { C as je, O as Oe } from "./OAuthErrorPage-DJ811Bn_.js";
5
+ import { j as Ce, b as S } from "./ZudokuContext-C6wlLMUH.js";
6
+ import { C as Ie, O as re, A as R } from "./errors-CYLN8SNc.js";
7
+ import { C as je, O as Oe } from "./OAuthErrorPage-D7n-_cqN.js";
8
8
  var J = { exports: {} }, De = J.exports, oe;
9
9
  function Je() {
10
10
  return oe || (oe = 1, (function(t) {
@@ -1,12 +1,12 @@
1
1
  import { j as a } from "./jsx-runtime-BzflLqGi.js";
2
2
  import { createClient as g } from "@supabase/supabase-js";
3
- import { C as m, A as h } from "./errors-b9I-fAOY.js";
4
- import { S as f } from "./SignUp-DCBViNUi.js";
5
- import { u } from "./ZudokuContext-BZB1TWdT.js";
3
+ import { C as m, A as h } from "./errors-CYLN8SNc.js";
4
+ import { S as f } from "./SignUp-ChqXj9vd.js";
5
+ import { b as u } from "./ZudokuContext-C6wlLMUH.js";
6
6
  import { Auth as v } from "@supabase/auth-ui-react";
7
7
  import { ThemeSupa as S } from "@supabase/auth-ui-shared";
8
8
  import { b as T } from "./chunk-EPOLDU6W-C6C8jAwd.js";
9
- import { H as A } from "./index-CL8eDnQW.js";
9
+ import { H as A } from "./Zudoku-DA1yA-te.js";
10
10
  const c = ({
11
11
  client: i,
12
12
  config: e,
@@ -1,32 +1,34 @@
1
- import "./index.esm-B_0dvNjB.js";
2
- import "./index-DBjOT2H1.js";
3
- import "./chunk-EPOLDU6W-C6C8jAwd.js";
4
- import "./hook-BGlHBdET.js";
5
- import "./ui/Button.js";
6
- import "./ui/Callout.js";
7
- import "./invariant-BJAl77rw.js";
8
- import "./ClientOnly-E7hGysn1.js";
9
- import "./ZudokuContext-BZB1TWdT.js";
10
- import { B as d, F as k, C as l, r as h, p as y, q as S, L as Z, o as E, v as H, S as g, t as w, Z as x, w as A, y as B, z as L, x as M, G as T, a as c } from "./index-CL8eDnQW.js";
11
- import "./Spinner-CI6bRyZw.js";
1
+ import { H as a } from "./index.esm-Ca5zvoff.js";
2
+ import { Button as s } from "./ui/Button.js";
3
+ import { Callout as u } from "./ui/Callout.js";
4
+ import { Z as m } from "./invariant-B_t_F2s_.js";
5
+ import { C as x } from "./ClientOnly-E7hGysn1.js";
6
+ import { H as C, M as d, S, a as h, T as k, Z as l } from "./Zudoku-DA1yA-te.js";
7
+ import { S as Z } from "./Spinner-CI6bRyZw.js";
8
+ import { z as y } from "./index-DAWHN3cH.js";
9
+ import { u as M } from "./hook-C35h0YhF.js";
10
+ import { C as c, u as g, a as A } from "./ZudokuContext-C6wlLMUH.js";
11
+ import { L as w } from "./chunk-EPOLDU6W-C6C8jAwd.js";
12
+ import { u as B } from "./useExposedProps-CzTDfXfq.js";
12
13
  export {
13
- d as Button,
14
- k as CACHE_KEYS,
15
- l as Callout,
16
- h as ClientOnly,
17
- y as Head,
18
- S as Heading,
19
- Z as Link,
20
- E as Markdown,
21
- H as Slot,
22
- g as Spinner,
23
- w as Typography,
24
- x as Zudoku,
25
- A as ZudokuError,
26
- B as useAuth,
27
- L as useCache,
28
- M as useMDXComponents,
29
- T as useTheme,
30
- c as useZudoku
14
+ s as Button,
15
+ c as CACHE_KEYS,
16
+ u as Callout,
17
+ x as ClientOnly,
18
+ a as Head,
19
+ C as Heading,
20
+ w as Link,
21
+ d as Markdown,
22
+ S as Search,
23
+ h as Slot,
24
+ Z as Spinner,
25
+ k as Typography,
26
+ l as Zudoku,
27
+ m as ZudokuError,
28
+ M as useAuth,
29
+ g as useCache,
30
+ B as useMDXComponents,
31
+ y as useTheme,
32
+ A as useZudoku
31
33
  };
32
34
  //# sourceMappingURL=zudoku.components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zudoku.components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
1
+ {"version":3,"file":"zudoku.components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,14 +1,27 @@
1
- import { b as o, h as u, e as p, f as r, g as t, a as m, c as C } from "./index-DBjOT2H1.js";
2
- import "./hook-BGlHBdET.js";
3
- import { C as E } from "./ZudokuContext-BZB1TWdT.js";
1
+ import { z as C } from "./index-DAWHN3cH.js";
2
+ import { u as D } from "./hook-C35h0YhF.js";
3
+ import { a as n } from "./ZudokuContext-C6wlLMUH.js";
4
+ import { C as z, u as A } from "./ZudokuContext-C6wlLMUH.js";
5
+ import { a as S, u as v } from "./useExposedProps-CzTDfXfq.js";
6
+ import { useState as f, useEffect as m } from "react";
7
+ function E(t, e) {
8
+ const s = n(), [r, o] = f();
9
+ return m(() => s.addEventListener(t, ((...u) => {
10
+ if (e) {
11
+ const a = e(...u);
12
+ o(a);
13
+ } else
14
+ o(u);
15
+ })), [s, t, e]), r;
16
+ }
4
17
  export {
5
- E as CACHE_KEYS,
6
- o as useAuth,
7
- u as useCache,
8
- p as useEvent,
9
- r as useExposedProps,
10
- t as useMDXComponents,
11
- m as useTheme,
12
- C as useZudoku
18
+ z as CACHE_KEYS,
19
+ D as useAuth,
20
+ A as useCache,
21
+ E as useEvent,
22
+ S as useExposedProps,
23
+ v as useMDXComponents,
24
+ C as useTheme,
25
+ n as useZudoku
13
26
  };
14
27
  //# sourceMappingURL=zudoku.hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zudoku.hooks.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"zudoku.hooks.js","sources":["../src/lib/hooks/useEvent.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useZudoku } from \"../components/context/ZudokuContext.js\";\nimport type { ZudokuEvents } from \"../core/ZudokuContext.js\";\n\ntype EventParameters<Event extends keyof ZudokuEvents> = Parameters<\n ZudokuEvents[Event]\n>;\n\n/**\n * Hook to subscribe to Zudoku events with automatic cleanup\n * @param event The event to subscribe to\n * @param callback Optional callback to be called when the event is emitted\n * @returns The latest event data if no callback is provided, or the callback's return value if it returns something\n */\nexport function useEvent<E extends keyof ZudokuEvents>(\n event: E,\n): EventParameters<E>;\nexport function useEvent<E extends keyof ZudokuEvents, R>(\n event: E,\n callback: (...args: EventParameters<E>) => R,\n): R;\nexport function useEvent<E extends keyof ZudokuEvents, R>(\n event: E,\n callback?: (...args: EventParameters<E>) => R,\n) {\n const zudoku = useZudoku();\n const [latestData, setLatestData] = useState<R | EventParameters<E>>();\n\n useEffect(() => {\n return zudoku.addEventListener(event, ((...args: EventParameters<E>) => {\n if (callback) {\n const result = callback(...args);\n setLatestData(result);\n } else {\n setLatestData(args);\n }\n }) as ZudokuEvents[E]);\n }, [zudoku, event, callback]);\n\n return latestData;\n}\n"],"names":["useEvent","event","callback","zudoku","useZudoku","latestData","setLatestData","useState","useEffect","args","result"],"mappings":";;;;;;AAqBO,SAASA,EACdC,GACAC,GACA;AACA,QAAMC,IAASC,EAAA,GACT,CAACC,GAAYC,CAAa,IAAIC,EAAA;AAEpC,SAAAC,EAAU,MACDL,EAAO,iBAAiBF,IAAQ,IAAIQ,MAA6B;AACtE,QAAIP,GAAU;AACZ,YAAMQ,IAASR,EAAS,GAAGO,CAAI;AAC/B,MAAAH,EAAcI,CAAM;AAAA,IACtB;AACE,MAAAJ,EAAcG,CAAI;AAAA,EAEtB,EAAA,GACC,CAACN,GAAQF,GAAOC,CAAQ,CAAC,GAErBG;AACT;"}
@@ -1,10 +1,11 @@
1
1
  import "./jsx-runtime-BzflLqGi.js";
2
2
  import "./useSuspenseQuery-CSB_rVek.js";
3
3
  import "react";
4
- import { M as e } from "./Mermaid-Koc3z8mU.js";
5
- import "./index-DBjOT2H1.js";
4
+ import { M } from "./Mermaid-JEnWyK0s.js";
5
+ import "./index-DAWHN3cH.js";
6
+ import "./ZudokuContext-C6wlLMUH.js";
6
7
  import "./Spinner-CI6bRyZw.js";
7
8
  export {
8
- e as Mermaid
9
+ M as Mermaid
9
10
  };
10
11
  //# sourceMappingURL=zudoku.mermaid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zudoku.mermaid.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"zudoku.mermaid.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1,38 +1,42 @@
1
1
  import { j as t } from "./jsx-runtime-BzflLqGi.js";
2
- import { s as f } from "./index-UOLtazB8.js";
3
- import { c as b, m as j } from "./chunk-EPOLDU6W-C6C8jAwd.js";
4
- import { u as x, j as d } from "./ZudokuContext-BZB1TWdT.js";
5
- import { u as v } from "./useSuspenseQuery-CSB_rVek.js";
6
- import { H as y } from "./index.esm-B_0dvNjB.js";
7
- import { H as N, L as k, M as S } from "./index-CL8eDnQW.js";
2
+ import { s as f } from "./index-DrAVvbXa.js";
3
+ import { c as b, L as j, m as x } from "./chunk-EPOLDU6W-C6C8jAwd.js";
4
+ import { b as v, j as p } from "./ZudokuContext-C6wlLMUH.js";
5
+ import { u as y } from "./useSuspenseQuery-CSB_rVek.js";
6
+ import { H as N } from "./index.esm-Ca5zvoff.js";
7
+ import "./ui/Button.js";
8
+ import "lucide-react";
9
+ import "react";
10
+ import { H as k, M as S } from "./Zudoku-DA1yA-te.js";
11
+ import "./index-DAWHN3cH.js";
8
12
  const w = ({
9
- items: o,
13
+ items: n,
10
14
  filterCatalogItems: r = (i) => i,
11
15
  label: c = "API Library",
12
16
  categoryLabel: s
13
17
  }) => {
14
- const i = x(), a = b({ path: "/catalog/:category" })?.params.category, l = v({
15
- queryFn: () => r(o, { auth: i }),
18
+ const i = v(), a = b({ path: "/catalog/:category" })?.params.category, o = y({
19
+ queryFn: () => r(n, { auth: i }),
16
20
  queryKey: ["catalogItems", i]
17
21
  }), m = a ? { "data-pagefind-ignore": "all" } : {};
18
22
  return /* @__PURE__ */ t.jsxs("section", { className: "pt-(--padding-content-top)", ...m, children: [
19
- /* @__PURE__ */ t.jsx(y, { children: /* @__PURE__ */ t.jsxs("title", { children: [
23
+ /* @__PURE__ */ t.jsx(N, { children: /* @__PURE__ */ t.jsxs("title", { children: [
20
24
  s ? `${s} - ` : "",
21
25
  c
22
26
  ] }) }),
23
27
  /* @__PURE__ */ t.jsxs("div", { className: "grid gap-4", children: [
24
- /* @__PURE__ */ t.jsxs(N, { level: 2, children: [
28
+ /* @__PURE__ */ t.jsxs(k, { level: 2, children: [
25
29
  c,
26
30
  s && ` - ${s}`
27
31
  ] }),
28
- /* @__PURE__ */ t.jsx("div", { className: "grid grid-cols-2 gap-4", children: l.data.filter(
32
+ /* @__PURE__ */ t.jsx("div", { className: "grid grid-cols-2 gap-4", children: o.data.filter(
29
33
  (e) => !a || e.categories.find(
30
- (n) => n.tags.find((g) => h(n.label, g) === a)
34
+ (l) => l.tags.find((g) => h(l.label, g) === a)
31
35
  )
32
36
  ).map((e) => /* @__PURE__ */ t.jsx(
33
- k,
37
+ j,
34
38
  {
35
- to: d(e.path),
39
+ to: p(e.path),
36
40
  className: "no-underline hover:!text-foreground",
37
41
  children: /* @__PURE__ */ t.jsxs("div", { className: "border h-full rounded-lg p-4 flex flex-col gap-2 cursor-pointer hover:bg-border/20 font-normal", children: [
38
42
  /* @__PURE__ */ t.jsx("span", { className: "font-semibold", children: e.label }),
@@ -46,7 +50,7 @@ const w = ({
46
50
  // we need to strip out other links to not get a hydration error, like:
47
51
  // > In HTML, <a> cannot be a descendant of <a>.
48
52
  // > This will cause a hydration error.
49
- a: (n) => /* @__PURE__ */ t.jsx("span", { ...n })
53
+ a: (l) => /* @__PURE__ */ t.jsx("span", { ...l })
50
54
  }
51
55
  }
52
56
  )
@@ -56,39 +60,39 @@ const w = ({
56
60
  )) })
57
61
  ] })
58
62
  ] });
59
- }, h = (o, r) => f(`${o}-${r}`), q = ({
60
- path: o,
63
+ }, h = (n, r) => f(`${n}-${r}`), R = ({
64
+ path: n,
61
65
  items: r,
62
66
  label: c,
63
67
  categories: s = [],
64
68
  filterCatalogItems: i
65
69
  }) => {
66
- const p = Object.fromEntries(
70
+ const d = Object.fromEntries(
67
71
  s.flatMap(
68
- (a) => [void 0, ...a.tags].map((l) => [
69
- d(o, l ? h(a.label, l) : void 0),
70
- l
72
+ (a) => [void 0, ...a.tags].map((o) => [
73
+ p(n, o ? h(a.label, o) : void 0),
74
+ o
71
75
  ])
72
76
  )
73
77
  );
74
78
  return {
75
79
  getNavigation: async (a) => {
76
- if (!Object.keys(p).some(
77
- (e) => j(e, a)
80
+ if (!Object.keys(d).some(
81
+ (e) => x(e, a)
78
82
  ))
79
83
  return [];
80
84
  const m = s.map((e) => ({
81
85
  type: "category",
82
86
  label: e.label,
83
87
  collapsible: !1,
84
- items: e.tags.map((n) => ({
88
+ items: e.tags.map((l) => ({
85
89
  type: "link",
86
- to: d(o, h(e.label, n)),
87
- label: n,
90
+ to: p(n, h(e.label, l)),
91
+ label: l,
88
92
  badge: {
89
93
  label: String(
90
94
  r.filter(
91
- (g) => g.categories.find((u) => u.tags.includes(n))
95
+ (g) => g.categories.find((u) => u.tags.includes(l))
92
96
  ).length
93
97
  ),
94
98
  color: "outline"
@@ -97,18 +101,18 @@ const w = ({
97
101
  }));
98
102
  return m.unshift({
99
103
  type: "link",
100
- to: d(o),
104
+ to: p(n),
101
105
  label: "Overview",
102
106
  badge: { label: String(r.length), color: "outline" }
103
107
  }), m;
104
108
  },
105
- getRoutes: () => Object.entries(p).map(([a, l]) => ({
109
+ getRoutes: () => Object.entries(d).map(([a, o]) => ({
106
110
  path: a,
107
111
  element: /* @__PURE__ */ t.jsx(
108
112
  w,
109
113
  {
110
114
  label: c,
111
- categoryLabel: l,
115
+ categoryLabel: o,
112
116
  items: r,
113
117
  filterCatalogItems: i,
114
118
  categories: s
@@ -118,7 +122,7 @@ const w = ({
118
122
  };
119
123
  };
120
124
  export {
121
- q as apiCatalogPlugin,
125
+ R as apiCatalogPlugin,
122
126
  h as getKey
123
127
  };
124
128
  //# sourceMappingURL=zudoku.plugin-api-catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zudoku.plugin-api-catalog.js","sources":["../src/lib/plugins/api-catalog/Catalog.tsx","../src/lib/plugins/api-catalog/index.tsx"],"sourcesContent":["import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport { useMatch } from \"react-router\";\nimport { Link } from \"zudoku/components\";\nimport { useAuthState } from \"../../authentication/state.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Markdown } from \"../../components/Markdown.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { type ApiCatalogPluginOptions, getKey } from \"./index.js\";\n\nexport const Catalog = ({\n items,\n filterCatalogItems = (items) => items,\n label = \"API Library\",\n categoryLabel,\n}: Omit<ApiCatalogPluginOptions, \"path\"> & {\n categoryLabel?: string;\n}) => {\n const auth = useAuthState();\n const match = useMatch({ path: \"/catalog/:category\" });\n const activeCategory = match?.params.category;\n\n const catalogItems = useSuspenseQuery({\n queryFn: () => filterCatalogItems(items, { auth }),\n queryKey: [\"catalogItems\", auth],\n });\n\n // Only index the overview page, ignore the rest\n const dataSet = activeCategory ? { \"data-pagefind-ignore\": \"all\" } : {};\n\n return (\n <section className=\"pt-(--padding-content-top)\" {...dataSet}>\n <Helmet>\n <title>\n {categoryLabel ? `${categoryLabel} - ` : \"\"}\n {label}\n </title>\n </Helmet>\n <div className=\"grid gap-4\">\n <Heading level={2}>\n {label}\n {categoryLabel && ` - ${categoryLabel}`}\n </Heading>\n\n <div className=\"grid grid-cols-2 gap-4\">\n {catalogItems.data\n .filter(\n (api) =>\n !activeCategory ||\n api.categories.find((c) =>\n c.tags.find((t) => getKey(c.label, t) === activeCategory),\n ),\n )\n .map((api) => (\n <Link\n to={joinUrl(api.path)}\n className=\"no-underline hover:!text-foreground\"\n key={api.path}\n >\n <div className=\"border h-full rounded-lg p-4 flex flex-col gap-2 cursor-pointer hover:bg-border/20 font-normal\">\n <span className=\"font-semibold\">{api.label}</span>\n <Markdown\n className=\"text-sm whitespace-pre-wrap mb-6 line-clamp-2\"\n content={api.description}\n components={{\n // Because we're wrapping the description in a Link already,\n // we need to strip out other links to not get a hydration error, like:\n // > In HTML, <a> cannot be a descendant of <a>.\n // > This will cause a hydration error.\n a: (props) => <span {...props} />,\n }}\n />\n </div>\n </Link>\n ))}\n </div>\n </div>\n </section>\n );\n};\n","import slugify from \"@sindresorhus/slugify\";\nimport { matchPath } from \"react-router\";\nimport type { NavigationItem } from \"../../../config/validators/NavigationSchema.js\";\nimport type { AuthState } from \"../../authentication/state.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { Catalog } from \"./Catalog.js\";\n\nexport const getKey = (category: string, tag: string) =>\n slugify(`${category}-${tag}`);\n\nexport type ApiCatalogItem = {\n path: string;\n label: string;\n description: string;\n categories: CatalogCategory[];\n};\n\nexport type CatalogCategory = {\n label: string;\n tags: string[];\n};\n\nexport type ApiCatalogPluginOptions = {\n path: string;\n label: string;\n categories?: CatalogCategory[];\n items: ApiCatalogItem[];\n filterCatalogItems?: FilterCatalogItemsFn;\n};\n\nexport type CatalogContext<ProviderData = unknown> = {\n auth: AuthState<ProviderData>;\n};\n\nexport type FilterCatalogItemsFn<ProviderData = unknown> = (\n items: ApiCatalogItem[],\n { auth }: CatalogContext<ProviderData>,\n) => ApiCatalogItem[];\n\nexport const apiCatalogPlugin = ({\n path,\n items,\n label,\n categories = [],\n filterCatalogItems,\n}: {\n path: string;\n label: string;\n categories?: CatalogCategory[];\n items: ApiCatalogItem[];\n filterCatalogItems?: FilterCatalogItemsFn;\n}): ZudokuPlugin => {\n const paths = Object.fromEntries(\n categories.flatMap((category) =>\n [undefined, ...category.tags].map((tag) => [\n joinUrl(path, tag ? getKey(category.label, tag) : undefined),\n tag,\n ]),\n ),\n );\n\n return {\n getNavigation: async (currentPath) => {\n const matches = Object.keys(paths).some((path) =>\n matchPath(path, currentPath),\n );\n\n if (!matches) {\n return [];\n }\n\n const navigation: NavigationItem[] = categories.map((category) => ({\n type: \"category\",\n label: category.label,\n collapsible: false,\n items: category.tags.map((tag) => ({\n type: \"link\",\n to: joinUrl(path, getKey(category.label, tag)),\n label: tag,\n badge: {\n label: String(\n items.filter((api) =>\n api.categories.find((c) => c.tags.includes(tag)),\n ).length,\n ),\n color: \"outline\",\n },\n })),\n }));\n\n navigation.unshift({\n type: \"link\",\n to: joinUrl(path),\n label: \"Overview\",\n badge: { label: String(items.length), color: \"outline\" },\n });\n\n return navigation;\n },\n getRoutes: () =>\n Object.entries(paths).map(([path, tag]) => ({\n path,\n element: (\n <Catalog\n label={label}\n categoryLabel={tag}\n items={items}\n filterCatalogItems={filterCatalogItems}\n categories={categories}\n />\n ),\n })),\n };\n};\n"],"names":["Catalog","items","filterCatalogItems","label","categoryLabel","auth","useAuthState","activeCategory","useMatch","catalogItems","useSuspenseQuery","dataSet","jsxs","jsx","Helmet","Heading","api","c","t","getKey","Link","joinUrl","Markdown","props","category","tag","slugify","apiCatalogPlugin","path","categories","paths","currentPath","matchPath","navigation"],"mappings":"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"}
1
+ {"version":3,"file":"zudoku.plugin-api-catalog.js","sources":["../src/lib/plugins/api-catalog/Catalog.tsx","../src/lib/plugins/api-catalog/index.tsx"],"sourcesContent":["import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport { useMatch } from \"react-router\";\nimport { Link } from \"zudoku/components\";\nimport { useAuthState } from \"../../authentication/state.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Markdown } from \"../../components/Markdown.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { type ApiCatalogPluginOptions, getKey } from \"./index.js\";\n\nexport const Catalog = ({\n items,\n filterCatalogItems = (items) => items,\n label = \"API Library\",\n categoryLabel,\n}: Omit<ApiCatalogPluginOptions, \"path\"> & {\n categoryLabel?: string;\n}) => {\n const auth = useAuthState();\n const match = useMatch({ path: \"/catalog/:category\" });\n const activeCategory = match?.params.category;\n\n const catalogItems = useSuspenseQuery({\n queryFn: () => filterCatalogItems(items, { auth }),\n queryKey: [\"catalogItems\", auth],\n });\n\n // Only index the overview page, ignore the rest\n const dataSet = activeCategory ? { \"data-pagefind-ignore\": \"all\" } : {};\n\n return (\n <section className=\"pt-(--padding-content-top)\" {...dataSet}>\n <Helmet>\n <title>\n {categoryLabel ? `${categoryLabel} - ` : \"\"}\n {label}\n </title>\n </Helmet>\n <div className=\"grid gap-4\">\n <Heading level={2}>\n {label}\n {categoryLabel && ` - ${categoryLabel}`}\n </Heading>\n\n <div className=\"grid grid-cols-2 gap-4\">\n {catalogItems.data\n .filter(\n (api) =>\n !activeCategory ||\n api.categories.find((c) =>\n c.tags.find((t) => getKey(c.label, t) === activeCategory),\n ),\n )\n .map((api) => (\n <Link\n to={joinUrl(api.path)}\n className=\"no-underline hover:!text-foreground\"\n key={api.path}\n >\n <div className=\"border h-full rounded-lg p-4 flex flex-col gap-2 cursor-pointer hover:bg-border/20 font-normal\">\n <span className=\"font-semibold\">{api.label}</span>\n <Markdown\n className=\"text-sm whitespace-pre-wrap mb-6 line-clamp-2\"\n content={api.description}\n components={{\n // Because we're wrapping the description in a Link already,\n // we need to strip out other links to not get a hydration error, like:\n // > In HTML, <a> cannot be a descendant of <a>.\n // > This will cause a hydration error.\n a: (props) => <span {...props} />,\n }}\n />\n </div>\n </Link>\n ))}\n </div>\n </div>\n </section>\n );\n};\n","import slugify from \"@sindresorhus/slugify\";\nimport { matchPath } from \"react-router\";\nimport type { NavigationItem } from \"../../../config/validators/NavigationSchema.js\";\nimport type { AuthState } from \"../../authentication/state.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { Catalog } from \"./Catalog.js\";\n\nexport const getKey = (category: string, tag: string) =>\n slugify(`${category}-${tag}`);\n\nexport type ApiCatalogItem = {\n path: string;\n label: string;\n description: string;\n categories: CatalogCategory[];\n};\n\nexport type CatalogCategory = {\n label: string;\n tags: string[];\n};\n\nexport type ApiCatalogPluginOptions = {\n path: string;\n label: string;\n categories?: CatalogCategory[];\n items: ApiCatalogItem[];\n filterCatalogItems?: FilterCatalogItemsFn;\n};\n\nexport type CatalogContext<ProviderData = unknown> = {\n auth: AuthState<ProviderData>;\n};\n\nexport type FilterCatalogItemsFn<ProviderData = unknown> = (\n items: ApiCatalogItem[],\n { auth }: CatalogContext<ProviderData>,\n) => ApiCatalogItem[];\n\nexport const apiCatalogPlugin = ({\n path,\n items,\n label,\n categories = [],\n filterCatalogItems,\n}: {\n path: string;\n label: string;\n categories?: CatalogCategory[];\n items: ApiCatalogItem[];\n filterCatalogItems?: FilterCatalogItemsFn;\n}): ZudokuPlugin => {\n const paths = Object.fromEntries(\n categories.flatMap((category) =>\n [undefined, ...category.tags].map((tag) => [\n joinUrl(path, tag ? getKey(category.label, tag) : undefined),\n tag,\n ]),\n ),\n );\n\n return {\n getNavigation: async (currentPath) => {\n const matches = Object.keys(paths).some((path) =>\n matchPath(path, currentPath),\n );\n\n if (!matches) {\n return [];\n }\n\n const navigation: NavigationItem[] = categories.map((category) => ({\n type: \"category\",\n label: category.label,\n collapsible: false,\n items: category.tags.map((tag) => ({\n type: \"link\",\n to: joinUrl(path, getKey(category.label, tag)),\n label: tag,\n badge: {\n label: String(\n items.filter((api) =>\n api.categories.find((c) => c.tags.includes(tag)),\n ).length,\n ),\n color: \"outline\",\n },\n })),\n }));\n\n navigation.unshift({\n type: \"link\",\n to: joinUrl(path),\n label: \"Overview\",\n badge: { label: String(items.length), color: \"outline\" },\n });\n\n return navigation;\n },\n getRoutes: () =>\n Object.entries(paths).map(([path, tag]) => ({\n path,\n element: (\n <Catalog\n label={label}\n categoryLabel={tag}\n items={items}\n filterCatalogItems={filterCatalogItems}\n categories={categories}\n />\n ),\n })),\n };\n};\n"],"names":["Catalog","items","filterCatalogItems","label","categoryLabel","auth","useAuthState","activeCategory","useMatch","catalogItems","useSuspenseQuery","dataSet","jsxs","jsx","Helmet","Heading","api","c","t","getKey","Link","joinUrl","Markdown","props","category","tag","slugify","apiCatalogPlugin","path","categories","paths","currentPath","matchPath","navigation"],"mappings":"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"}