zudoku 0.27.0 → 0.28.1

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 (152) hide show
  1. package/dist/app/main.js +1 -2
  2. package/dist/app/main.js.map +1 -1
  3. package/dist/config/validators/InputSidebarSchema.d.ts +2 -2
  4. package/dist/lib/components/PathRenderer.d.ts +11 -0
  5. package/dist/lib/components/PathRenderer.js +25 -0
  6. package/dist/lib/components/PathRenderer.js.map +1 -0
  7. package/dist/lib/components/ThemeSwitch.js +4 -4
  8. package/dist/lib/components/ThemeSwitch.js.map +1 -1
  9. package/dist/lib/components/index.d.ts +1 -0
  10. package/dist/lib/components/index.js +4 -2
  11. package/dist/lib/components/index.js.map +1 -1
  12. package/dist/lib/components/navigation/SidebarCategory.js +17 -15
  13. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
  14. package/dist/lib/oas/graphql/circular.js +17 -6
  15. package/dist/lib/oas/graphql/circular.js.map +1 -1
  16. package/dist/lib/oas/graphql/index.d.ts +1 -0
  17. package/dist/lib/oas/graphql/index.js +41 -23
  18. package/dist/lib/oas/graphql/index.js.map +1 -1
  19. package/dist/lib/plugins/openapi/ColorizedParam.js +3 -1
  20. package/dist/lib/plugins/openapi/ColorizedParam.js.map +1 -1
  21. package/dist/lib/plugins/openapi/Endpoint.js +2 -2
  22. package/dist/lib/plugins/openapi/Endpoint.js.map +1 -1
  23. package/dist/lib/plugins/openapi/{Route.d.ts → OpenApiRoute.d.ts} +2 -1
  24. package/dist/lib/plugins/openapi/{Route.js → OpenApiRoute.js} +3 -4
  25. package/dist/lib/plugins/openapi/OpenApiRoute.js.map +1 -0
  26. package/dist/lib/plugins/openapi/OperationList.d.ts +4 -1
  27. package/dist/lib/plugins/openapi/OperationList.js +20 -14
  28. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  29. package/dist/lib/plugins/openapi/OperationListItem.js +1 -1
  30. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  31. package/dist/lib/plugins/openapi/ParameterListItem.js +1 -1
  32. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  33. package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +1 -1
  34. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +2 -0
  35. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
  36. package/dist/lib/plugins/openapi/Sidecar.js +6 -11
  37. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  38. package/dist/lib/plugins/openapi/SidecarExamples.js +17 -14
  39. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
  40. package/dist/lib/plugins/openapi/graphql/gql.d.ts +6 -2
  41. package/dist/lib/plugins/openapi/graphql/gql.js +3 -2
  42. package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -1
  43. package/dist/lib/plugins/openapi/graphql/graphql.d.ts +47 -26
  44. package/dist/lib/plugins/openapi/graphql/graphql.js +20 -16
  45. package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -1
  46. package/dist/lib/plugins/openapi/index.js +97 -54
  47. package/dist/lib/plugins/openapi/index.js.map +1 -1
  48. package/dist/lib/plugins/openapi/interfaces.d.ts +1 -0
  49. package/dist/lib/plugins/openapi/playground/PathParams.js +1 -1
  50. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  51. package/dist/lib/plugins/openapi/playground/Playground.js +7 -15
  52. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  53. package/dist/lib/plugins/openapi/schema/{SchemaComponents.js → SchemaPropertyItem.js} +10 -8
  54. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -0
  55. package/dist/lib/plugins/openapi/schema/SchemaView.js +1 -1
  56. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  57. package/dist/lib/plugins/openapi/schema/utils.d.ts +1 -0
  58. package/dist/lib/plugins/openapi/schema/utils.js +2 -0
  59. package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
  60. package/dist/lib/util/joinUrl.js +1 -1
  61. package/dist/lib/util/joinUrl.js.map +1 -1
  62. package/dist/lib/util/joinUrl.test.d.ts +1 -0
  63. package/dist/lib/util/joinUrl.test.js +43 -0
  64. package/dist/lib/util/joinUrl.test.js.map +1 -0
  65. package/dist/vite/plugin-api.js +9 -1
  66. package/dist/vite/plugin-api.js.map +1 -1
  67. package/dist/vite/prerender.js +0 -1
  68. package/dist/vite/prerender.js.map +1 -1
  69. package/lib/{AuthenticationPlugin-CO_YCd2x.js → AuthenticationPlugin-Du8cLBSr.js} +2 -2
  70. package/lib/{AuthenticationPlugin-CO_YCd2x.js.map → AuthenticationPlugin-Du8cLBSr.js.map} +1 -1
  71. package/lib/{Markdown-B8o9Qz4q.js → Markdown-Cyrx_JrO.js} +8 -9
  72. package/lib/{Markdown-B8o9Qz4q.js.map → Markdown-Cyrx_JrO.js.map} +1 -1
  73. package/lib/{MdxPage-BxRt3Ly7.js → MdxPage-BuG8Tuwc.js} +5 -5
  74. package/lib/{MdxPage-BxRt3Ly7.js.map → MdxPage-BuG8Tuwc.js.map} +1 -1
  75. package/lib/OpenApiRoute-UrC_t0e5.js +36 -0
  76. package/lib/OpenApiRoute-UrC_t0e5.js.map +1 -0
  77. package/lib/{OperationList-DH-zIgtq.js → OperationList-CDt1xdc4.js} +1312 -1303
  78. package/lib/OperationList-CDt1xdc4.js.map +1 -0
  79. package/lib/{Select-B7UXR0SB.js → Select-CnCZ4WhS.js} +3 -3
  80. package/lib/{Select-B7UXR0SB.js.map → Select-CnCZ4WhS.js.map} +1 -1
  81. package/lib/{SlotletProvider-CtIp8rP3.js → SlotletProvider-mQiPDQIH.js} +2 -2
  82. package/lib/{SlotletProvider-CtIp8rP3.js.map → SlotletProvider-mQiPDQIH.js.map} +1 -1
  83. package/lib/{SyntaxHighlight-C1w1QPdY.js → SyntaxHighlight-B0L4SC_N.js} +11 -5
  84. package/lib/SyntaxHighlight-B0L4SC_N.js.map +1 -0
  85. package/lib/{ZudokuContext-8jts0fF3.js → ZudokuContext-BTUJPpQl.js} +21 -21
  86. package/lib/{ZudokuContext-8jts0fF3.js.map → ZudokuContext-BTUJPpQl.js.map} +1 -1
  87. package/lib/{circular-Dgpd6AN-.js → circular-DxaIIlWD.js} +251 -239
  88. package/lib/{circular-Dgpd6AN-.js.map → circular-DxaIIlWD.js.map} +1 -1
  89. package/lib/{createServer-BV0tHzLK.js → createServer-CjNktZzL.js} +821 -808
  90. package/lib/{createServer-BV0tHzLK.js.map → createServer-CjNktZzL.js.map} +1 -1
  91. package/lib/{hook-BG02esyv.js → hook-FT3SJLe_.js} +2 -2
  92. package/lib/{hook-BG02esyv.js.map → hook-FT3SJLe_.js.map} +1 -1
  93. package/lib/{index-LNp6rxyU.js → index-CjJS0l4l.js} +2 -2
  94. package/lib/{index-LNp6rxyU.js.map → index-CjJS0l4l.js.map} +1 -1
  95. package/lib/{index-DmqsUPcm.js → index-Eb1oiHbM.js} +881 -799
  96. package/lib/index-Eb1oiHbM.js.map +1 -0
  97. package/lib/{joinUrl-BTy9bvoK.js → joinUrl-nLx9pD-Z.js} +2 -2
  98. package/lib/joinUrl-nLx9pD-Z.js.map +1 -0
  99. package/lib/{useScrollToAnchor-Bl6mz9_x.js → useScrollToAnchor-BZsGmBng.js} +86 -90
  100. package/lib/useScrollToAnchor-BZsGmBng.js.map +1 -0
  101. package/lib/zudoku.auth-clerk.js +1 -1
  102. package/lib/zudoku.auth-openid.js +3 -3
  103. package/lib/zudoku.components.js +364 -348
  104. package/lib/zudoku.components.js.map +1 -1
  105. package/lib/zudoku.plugin-api-catalog.js +3 -3
  106. package/lib/zudoku.plugin-api-keys.js +4 -4
  107. package/lib/zudoku.plugin-custom-pages.js +1 -1
  108. package/lib/zudoku.plugin-markdown.js +1 -1
  109. package/lib/zudoku.plugin-openapi.js +6 -5
  110. package/lib/zudoku.plugin-openapi.js.map +1 -1
  111. package/package.json +1 -1
  112. package/src/app/main.tsx +1 -2
  113. package/src/lib/components/PathRenderer.tsx +59 -0
  114. package/src/lib/components/ThemeSwitch.tsx +15 -14
  115. package/src/lib/components/index.ts +7 -5
  116. package/src/lib/components/navigation/SidebarCategory.tsx +44 -41
  117. package/src/lib/oas/graphql/circular.ts +27 -6
  118. package/src/lib/oas/graphql/index.ts +63 -35
  119. package/src/lib/plugins/openapi/ColorizedParam.tsx +3 -3
  120. package/src/lib/plugins/openapi/Endpoint.tsx +2 -2
  121. package/src/lib/plugins/openapi/{Route.tsx → OpenApiRoute.tsx} +3 -3
  122. package/src/lib/plugins/openapi/OperationList.tsx +34 -12
  123. package/src/lib/plugins/openapi/OperationListItem.tsx +6 -1
  124. package/src/lib/plugins/openapi/ParameterListItem.tsx +1 -1
  125. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +2 -0
  126. package/src/lib/plugins/openapi/Sidecar.tsx +18 -27
  127. package/src/lib/plugins/openapi/SidecarExamples.tsx +24 -24
  128. package/src/lib/plugins/openapi/graphql/gql.ts +12 -4
  129. package/src/lib/plugins/openapi/graphql/graphql.ts +66 -43
  130. package/src/lib/plugins/openapi/index.tsx +125 -67
  131. package/src/lib/plugins/openapi/interfaces.ts +1 -0
  132. package/src/lib/plugins/openapi/playground/PathParams.tsx +1 -1
  133. package/src/lib/plugins/openapi/playground/Playground.tsx +23 -33
  134. package/src/lib/plugins/openapi/schema/{SchemaComponents.tsx → SchemaPropertyItem.tsx} +10 -6
  135. package/src/lib/plugins/openapi/schema/SchemaView.tsx +4 -1
  136. package/src/lib/plugins/openapi/schema/utils.ts +4 -0
  137. package/src/lib/util/joinUrl.test.ts +62 -0
  138. package/src/lib/util/joinUrl.ts +1 -1
  139. package/dist/lib/plugins/openapi/Route.js.map +0 -1
  140. package/dist/lib/plugins/openapi/schema/SchemaComponents.js.map +0 -1
  141. package/lib/OperationList-DH-zIgtq.js.map +0 -1
  142. package/lib/Route-DJ0ZlVq1.js +0 -35
  143. package/lib/Route-DJ0ZlVq1.js.map +0 -1
  144. package/lib/StaggeredRender-DgsamH_G.js +0 -17
  145. package/lib/StaggeredRender-DgsamH_G.js.map +0 -1
  146. package/lib/SyntaxHighlight-C1w1QPdY.js.map +0 -1
  147. package/lib/index-Bn6Lc9tq.js +0 -9
  148. package/lib/index-Bn6Lc9tq.js.map +0 -1
  149. package/lib/index-DmqsUPcm.js.map +0 -1
  150. package/lib/joinUrl-BTy9bvoK.js.map +0 -1
  151. package/lib/useScrollToAnchor-Bl6mz9_x.js.map +0 -1
  152. /package/dist/lib/plugins/openapi/schema/{SchemaComponents.d.ts → SchemaPropertyItem.d.ts} +0 -0
@@ -1,15 +1,15 @@
1
- import h, { useState as v, useEffect as w, useCallback as L } from "react";
2
- import { u as A, L as O, e as D, N as g, b as E } from "./chunk-SYFQ2XB5-BPvC-soB.js";
3
- import { u as m } from "./Markdown-B8o9Qz4q.js";
1
+ import h, { useState as A, useEffect as I, useCallback as D } from "react";
2
+ import { u as T, L as E, e as V, N as g, b as P } from "./chunk-SYFQ2XB5-BPvC-soB.js";
3
+ import { u as m } from "./Markdown-Cyrx_JrO.js";
4
4
  import { j as t } from "./jsx-runtime-Bdg6XQ1m.js";
5
- import { c as V } from "./index-Djenk2Hj.js";
6
- import { ChevronRightIcon as P, ExternalLinkIcon as _ } from "lucide-react";
7
- import { i as z, j as I } from "./ZudokuContext-8jts0fF3.js";
5
+ import { c as _ } from "./index-Djenk2Hj.js";
6
+ import { ChevronRightIcon as z, ExternalLinkIcon as B } from "lucide-react";
7
+ import { i as R, j as H } from "./ZudokuContext-BTUJPpQl.js";
8
8
  import { c as i } from "./cn-qaFjX9_3.js";
9
9
  import * as x from "@radix-ui/react-collapsible";
10
- const p = {}, T = h.createContext(p);
11
- function B(e) {
12
- const n = h.useContext(T);
10
+ const p = {}, M = h.createContext(p);
11
+ function W(e) {
12
+ const n = h.useContext(M);
13
13
  return h.useMemo(
14
14
  function() {
15
15
  return typeof e == "function" ? e(n) : { ...n, ...e };
@@ -17,21 +17,21 @@ function B(e) {
17
17
  [n, e]
18
18
  );
19
19
  }
20
- function te(e) {
20
+ function se(e) {
21
21
  let n;
22
- return e.disableParentContext ? n = typeof e.components == "function" ? e.components(p) : e.components || p : n = B(e.components), h.createElement(
23
- T.Provider,
22
+ return e.disableParentContext ? n = typeof e.components == "function" ? e.components(p) : e.components || p : n = W(e.components), h.createElement(
23
+ M.Provider,
24
24
  { value: n },
25
25
  e.children
26
26
  );
27
27
  }
28
- const R = (e) => {
29
- const n = A(), a = M(), s = typeof e.to == "string" ? e.to : e.to.hash, l = (r) => {
28
+ const F = (e) => {
29
+ const n = T(), a = L(), s = typeof e.to == "string" ? e.to : e.to.hash, l = (r) => {
30
30
  var c;
31
31
  (c = e.onClick) == null || c.call(e, r), !(!(s != null && s.startsWith("#")) || s !== n.hash) && (r.preventDefault(), a(s));
32
32
  };
33
- return /* @__PURE__ */ t.jsx(O, { ...e, onClick: l });
34
- }, W = {
33
+ return /* @__PURE__ */ t.jsx(E, { ...e, onClick: l });
34
+ }, X = {
35
35
  green: "bg-green-400 dark:bg-green-800",
36
36
  blue: "bg-sky-400 dark:bg-sky-800",
37
37
  yellow: "bg-yellow-400 dark:bg-yellow-800",
@@ -39,7 +39,7 @@ const R = (e) => {
39
39
  purple: "bg-purple-400 dark:bg-purple-600",
40
40
  indigo: "bg-indigo-400 dark:bg-indigo-600",
41
41
  gray: "bg-gray-400 dark:bg-gray-600"
42
- }, F = {
42
+ }, $ = {
43
43
  green: "text-green-500 dark:text-green-600",
44
44
  blue: "text-sky-400 dark:text-sky-600",
45
45
  yellow: "text-yellow-400 dark:text-yellow-600",
@@ -57,18 +57,18 @@ const R = (e) => {
57
57
  {
58
58
  className: i(
59
59
  "mt-0.5 flex items-center duration-200 transition-opacity text-center uppercase font-mono text-[0.65rem] font-bold rounded text-background dark:text-zinc-50 h-4 px-1",
60
- s ? F[e] : W[e],
60
+ s ? $[e] : X[e],
61
61
  a
62
62
  ),
63
63
  children: n
64
64
  }
65
- ), X = ({
65
+ ), U = ({
66
66
  category: e,
67
67
  onRequestClose: n
68
68
  }) => {
69
- var N, y;
70
- const a = z(e), [s, l] = v(!1), r = e.collapsible ?? !0, c = e.collapsed ?? !0, k = !!(!r || !c || a), [j, u] = v(k), f = D(((N = e.link) == null ? void 0 : N.id) ?? "");
71
- w(() => {
69
+ var v, w;
70
+ const a = R(e), [s, l] = A(!1), r = e.collapsible ?? !0, c = e.collapsed ?? !0, k = !!(!r || !c || a), [j, u] = A(k), f = V(((v = e.link) == null ? void 0 : v.id) ?? "");
71
+ I(() => {
72
72
  a && u(!0);
73
73
  }, [a]);
74
74
  const C = r && /* @__PURE__ */ t.jsx(
@@ -76,10 +76,10 @@ const R = (e) => {
76
76
  {
77
77
  type: "button",
78
78
  onClick: (o) => {
79
- o.preventDefault(), u((S) => !S), l(!0);
79
+ o.preventDefault(), u((O) => !O), l(!0);
80
80
  },
81
81
  children: /* @__PURE__ */ t.jsx(
82
- P,
82
+ z,
83
83
  {
84
84
  size: 16,
85
85
  className: i(
@@ -89,7 +89,18 @@ const R = (e) => {
89
89
  }
90
90
  )
91
91
  }
92
- );
92
+ ), N = e.icon && /* @__PURE__ */ t.jsx(
93
+ e.icon,
94
+ {
95
+ size: 16,
96
+ className: i("align-[-0.125em] ", f && "text-primary")
97
+ }
98
+ ), y = d({
99
+ className: [
100
+ "text-start font-medium",
101
+ r || typeof e.link < "u" ? "cursor-pointer" : "cursor-default hover:bg-transparent"
102
+ ]
103
+ });
93
104
  return /* @__PURE__ */ t.jsxs(
94
105
  x.Root,
95
106
  {
@@ -98,64 +109,49 @@ const R = (e) => {
98
109
  open: j,
99
110
  onOpenChange: () => u(!0),
100
111
  children: [
101
- /* @__PURE__ */ t.jsx(x.Trigger, { className: "group", asChild: !0, disabled: !r, children: /* @__PURE__ */ t.jsxs(
102
- "div",
112
+ /* @__PURE__ */ t.jsx(x.Trigger, { className: "group", asChild: !0, disabled: !r, children: ((w = e.link) == null ? void 0 : w.type) === "doc" ? /* @__PURE__ */ t.jsxs(
113
+ g,
103
114
  {
104
- onClick: () => l(!0),
105
- className: d({
106
- isActive: !1,
107
- className: [
108
- "text-start font-medium",
109
- r ? "cursor-pointer" : "cursor-default hover:bg-transparent"
110
- ]
111
- }),
115
+ to: H(e.link.id),
116
+ className: y,
117
+ onClick: () => {
118
+ l(!0), f && !j && u(!0);
119
+ },
112
120
  children: [
113
- e.icon && /* @__PURE__ */ t.jsx(
114
- e.icon,
115
- {
116
- size: 16,
117
- className: i("align-[-0.125em] ", f && "text-primary")
118
- }
119
- ),
120
- ((y = e.link) == null ? void 0 : y.type) === "doc" ? /* @__PURE__ */ t.jsx(
121
- g,
121
+ N,
122
+ /* @__PURE__ */ t.jsxs(
123
+ "div",
122
124
  {
123
- to: I(e.link.id),
124
- className: "flex-1",
125
- onClick: () => {
126
- f && !j && u(!0);
127
- },
128
- children: /* @__PURE__ */ t.jsxs(
129
- "div",
130
- {
131
- className: i(
132
- "flex items-center gap-2 justify-between w-full",
133
- f ? "text-primary" : "text-foreground/80"
134
- ),
135
- children: [
136
- /* @__PURE__ */ t.jsx("div", { className: "truncate", children: e.label }),
137
- C
138
- ]
139
- }
140
- )
125
+ className: i(
126
+ "flex items-center gap-2 justify-between w-full",
127
+ f ? "text-primary" : "text-foreground/80"
128
+ ),
129
+ children: [
130
+ /* @__PURE__ */ t.jsx("div", { className: "truncate", children: e.label }),
131
+ C
132
+ ]
141
133
  }
142
- ) : /* @__PURE__ */ t.jsxs("div", { className: "flex items-center justify-between w-full", children: [
143
- /* @__PURE__ */ t.jsx("div", { className: "flex gap-2 truncate w-full", children: e.label }),
144
- C
145
- ] })
134
+ )
146
135
  ]
147
136
  }
148
- ) }),
137
+ ) : /* @__PURE__ */ t.jsxs("div", { onClick: () => l(!0), className: y, children: [
138
+ N,
139
+ /* @__PURE__ */ t.jsxs("div", { className: "flex items-center justify-between w-full", children: [
140
+ /* @__PURE__ */ t.jsx("div", { className: "flex gap-2 truncate w-full", children: e.label }),
141
+ C
142
+ ] })
143
+ ] }) }),
149
144
  /* @__PURE__ */ t.jsx(
150
145
  x.Content,
151
146
  {
152
147
  className: i(
153
148
  // CollapsibleContent class is used to animate and it should only be applied when the user has triggered the toggle
154
149
  s && "CollapsibleContent",
150
+ e.items.length === 0 && "hidden",
155
151
  "ms-6 my-1"
156
152
  ),
157
153
  children: /* @__PURE__ */ t.jsx("ul", { className: "relative after:absolute after:-left-[--padding-nav-item] after:translate-x-[1.5px] after:top-0 after:bottom-0 after:w-px after:bg-border", children: e.items.map((o) => /* @__PURE__ */ t.jsx(
158
- $,
154
+ G,
159
155
  {
160
156
  onRequestClose: n,
161
157
  item: o
@@ -167,7 +163,7 @@ const R = (e) => {
167
163
  ]
168
164
  }
169
165
  );
170
- }, d = V(
166
+ }, d = _(
171
167
  "flex items-center gap-2 px-[--padding-nav-item] py-1.5 rounded-lg hover:bg-accent",
172
168
  {
173
169
  variants: {
@@ -184,21 +180,21 @@ const R = (e) => {
184
180
  isActive: !1
185
181
  }
186
182
  }
187
- ), H = "data-anchor", $ = ({
183
+ ), S = "data-anchor", G = ({
188
184
  item: e,
189
185
  onRequestClose: n
190
186
  }) => {
191
187
  var l, r;
192
- const { activeAnchor: a } = m(), [s] = E();
188
+ const { activeAnchor: a } = m(), [s] = P();
193
189
  switch (e.type) {
194
190
  case "category":
195
- return /* @__PURE__ */ t.jsx(X, { category: e, onRequestClose: n });
191
+ return /* @__PURE__ */ t.jsx(U, { category: e, onRequestClose: n });
196
192
  case "doc":
197
193
  return /* @__PURE__ */ t.jsxs(
198
194
  g,
199
195
  {
200
196
  className: ({ isActive: c }) => d({ isActive: c }),
201
- to: I(e.id),
197
+ to: H(e.id),
202
198
  onClick: n,
203
199
  children: [
204
200
  e.icon && /* @__PURE__ */ t.jsx(e.icon, { size: 16, className: "align-[-0.125em]" }),
@@ -211,10 +207,10 @@ const R = (e) => {
211
207
  );
212
208
  case "link":
213
209
  return e.href.startsWith("#") ? /* @__PURE__ */ t.jsx(
214
- R,
210
+ F,
215
211
  {
216
212
  to: { hash: e.href, search: s.toString() },
217
- [H]: e.href.slice(1),
213
+ [S]: e.href.slice(1),
218
214
  className: d({
219
215
  isActive: e.href.slice(1) === a,
220
216
  className: ((l = e.badge) == null ? void 0 : l.placement) !== "start" && "justify-between"
@@ -235,7 +231,7 @@ const R = (e) => {
235
231
  onClick: n,
236
232
  children: [
237
233
  /* @__PURE__ */ t.jsx("span", { className: "whitespace-normal", children: e.label }),
238
- /* @__PURE__ */ t.jsx("span", { className: "whitespace-nowrap", children: /* @__PURE__ */ t.jsx(_, { className: "inline -translate-y-0.5", size: 12 }) })
234
+ /* @__PURE__ */ t.jsx("span", { className: "whitespace-nowrap", children: /* @__PURE__ */ t.jsx(B, { className: "inline -translate-y-0.5", size: 12 }) })
239
235
  ]
240
236
  }
241
237
  ) : /* @__PURE__ */ t.jsx(
@@ -252,24 +248,24 @@ const R = (e) => {
252
248
  }
253
249
  );
254
250
  }
255
- }, U = (e, n = { block: "center" }) => {
251
+ }, J = (e, n = { block: "center" }) => {
256
252
  if (!e) return;
257
253
  const a = e.getBoundingClientRect();
258
254
  a.top >= 0 && a.left >= 0 && a.bottom <= (window.innerHeight || document.documentElement.clientHeight) && a.right <= (window.innerWidth || document.documentElement.clientWidth) || e.scrollIntoView(n);
259
- }, M = () => {
255
+ }, L = () => {
260
256
  const { setActiveAnchor: e } = m();
261
- return L(
257
+ return D(
262
258
  (a) => {
263
259
  const s = a.replace(/^#/, "").split("/").at(0), l = document.getElementById(decodeURIComponent(s)), r = document.querySelector(
264
- `[${H}="${s}"]`
260
+ `[${S}="${s}"]`
265
261
  );
266
- return l ? (l.scrollIntoView(), U(r), requestIdleCallback(() => e(s)), !0) : !1;
262
+ return l ? (l.scrollIntoView(), J(r), requestIdleCallback(() => e(s)), !0) : !1;
267
263
  },
268
264
  [e]
269
265
  );
270
- }, ne = () => {
271
- const e = A(), { setActiveAnchor: n } = m(), a = M();
272
- w(() => {
266
+ }, ae = () => {
267
+ const e = T(), { setActiveAnchor: n } = m(), a = L();
268
+ I(() => {
273
269
  if (e.hash && !a(e.hash)) {
274
270
  const s = new MutationObserver((l, r) => {
275
271
  a(e.hash) && r.disconnect();
@@ -279,10 +275,10 @@ const R = (e) => {
279
275
  }, [e.hash, n]);
280
276
  };
281
277
  export {
282
- R as A,
283
- te as M,
284
- $ as S,
285
- ne as a,
286
- B as u
278
+ F as A,
279
+ se as M,
280
+ G as S,
281
+ ae as a,
282
+ W as u
287
283
  };
288
- //# sourceMappingURL=useScrollToAnchor-Bl6mz9_x.js.map
284
+ //# sourceMappingURL=useScrollToAnchor-BZsGmBng.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollToAnchor-BZsGmBng.js","sources":["../../../node_modules/.pnpm/@mdx-js+react@3.1.0_@types+react@19.0.7_react@19.0.0/node_modules/@mdx-js/react/lib/index.js","../src/lib/components/AnchorLink.tsx","../src/lib/components/navigation/SidebarBadge.tsx","../src/lib/components/navigation/SidebarCategory.tsx","../src/lib/components/navigation/SidebarItem.tsx","../src/lib/util/useScrollToAnchor.ts"],"sourcesContent":["/**\n * @import {MDXComponents} from 'mdx/types.js'\n * @import {Component, ReactElement, ReactNode} from 'react'\n */\n\n/**\n * @callback MergeComponents\n * Custom merge function.\n * @param {Readonly<MDXComponents>} currentComponents\n * Current components from the context.\n * @returns {MDXComponents}\n * Additional components.\n *\n * @typedef Props\n * Configuration for `MDXProvider`.\n * @property {ReactNode | null | undefined} [children]\n * Children (optional).\n * @property {Readonly<MDXComponents> | MergeComponents | null | undefined} [components]\n * Additional components to use or a function that creates them (optional).\n * @property {boolean | null | undefined} [disableParentContext=false]\n * Turn off outer component context (default: `false`).\n */\n\nimport React from 'react'\n\n/** @type {Readonly<MDXComponents>} */\nconst emptyComponents = {}\n\nconst MDXContext = React.createContext(emptyComponents)\n\n/**\n * Get current components from the MDX Context.\n *\n * @param {Readonly<MDXComponents> | MergeComponents | null | undefined} [components]\n * Additional components to use or a function that creates them (optional).\n * @returns {MDXComponents}\n * Current components.\n */\nexport function useMDXComponents(components) {\n const contextComponents = React.useContext(MDXContext)\n\n // Memoize to avoid unnecessary top-level context changes\n return React.useMemo(\n function () {\n // Custom merge via a function prop\n if (typeof components === 'function') {\n return components(contextComponents)\n }\n\n return {...contextComponents, ...components}\n },\n [contextComponents, components]\n )\n}\n\n/**\n * Provider for MDX context.\n *\n * @param {Readonly<Props>} properties\n * Properties.\n * @returns {ReactElement}\n * Element.\n * @satisfies {Component}\n */\nexport function MDXProvider(properties) {\n /** @type {Readonly<MDXComponents>} */\n let allComponents\n\n if (properties.disableParentContext) {\n allComponents =\n typeof properties.components === 'function'\n ? properties.components(emptyComponents)\n : properties.components || emptyComponents\n } else {\n allComponents = useMDXComponents(properties.components)\n }\n\n return React.createElement(\n MDXContext.Provider,\n {value: allComponents},\n properties.children\n )\n}\n","import React from \"react\";\nimport { Link, type LinkProps, useLocation } from \"react-router\";\nimport { useScrollToHash } from \"../util/useScrollToAnchor.js\";\n\n/**\n * Link that scrolls to anchor even if the hash is already set in the URL.\n */\nexport const AnchorLink = (props: LinkProps) => {\n const location = useLocation();\n const scrollToHash = useScrollToHash();\n const hash = typeof props.to === \"string\" ? props.to : props.to.hash;\n\n const handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n props.onClick?.(event);\n if (!hash?.startsWith(\"#\") || hash !== location.hash) return;\n\n event.preventDefault();\n scrollToHash(hash);\n };\n\n return <Link {...props} onClick={handleClick} />;\n};\n","import { cn } from \"../../util/cn.js\";\n\nexport const ColorMap = {\n green: \"bg-green-400 dark:bg-green-800\",\n blue: \"bg-sky-400 dark:bg-sky-800\",\n yellow: \"bg-yellow-400 dark:bg-yellow-800\",\n red: \"bg-red-400 dark:bg-red-800\",\n purple: \"bg-purple-400 dark:bg-purple-600\",\n indigo: \"bg-indigo-400 dark:bg-indigo-600\",\n gray: \"bg-gray-400 dark:bg-gray-600\",\n};\n\nexport const ColorMapInvert = {\n green: \"text-green-500 dark:text-green-600\",\n blue: \"text-sky-400 dark:text-sky-600\",\n yellow: \"text-yellow-400 dark:text-yellow-600\",\n red: \"text-red-400 dark:text-red-600\",\n purple: \"text-purple-400 dark:text-purple-600\",\n indigo: \"text-indigo-400 dark:text-indigo-600\",\n gray: \"text-gray-400 dark:text-gray-600\",\n};\n\nexport const SidebarBadge = ({\n color,\n label,\n className,\n invert,\n}: {\n color: keyof typeof ColorMap;\n label: string;\n className?: string;\n invert?: boolean;\n}) => {\n return (\n <span\n className={cn(\n \"mt-0.5 flex items-center duration-200 transition-opacity text-center uppercase font-mono text-[0.65rem] font-bold rounded text-background dark:text-zinc-50 h-4 px-1\",\n invert ? ColorMapInvert[color] : ColorMap[color],\n className,\n )}\n >\n {label}\n </span>\n );\n};\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { NavLink, useMatch } from \"react-router\";\nimport type { SidebarItemCategory } from \"../../../config/validators/SidebarSchema.js\";\nimport { cn } from \"../../util/cn.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { navigationListItem, SidebarItem } from \"./SidebarItem.js\";\nimport { useIsCategoryOpen } from \"./utils.js\";\n\nexport const SidebarCategory = ({\n category,\n onRequestClose,\n}: {\n category: SidebarItemCategory;\n onRequestClose?: () => void;\n}) => {\n const isCategoryOpen = useIsCategoryOpen(category);\n const [hasInteracted, setHasInteracted] = useState(false);\n\n const isCollapsible = category.collapsible ?? true;\n const isCollapsed = category.collapsed ?? true;\n const isDefaultOpen = Boolean(\n !isCollapsible || !isCollapsed || isCategoryOpen,\n );\n const [open, setOpen] = useState(isDefaultOpen);\n const isActive = useMatch(category.link?.id ?? \"\");\n\n useEffect(() => {\n // this is triggered when an item from the sidebar is clicked\n // and the sidebar, enclosing this item, is not opened\n if (isCategoryOpen) {\n setOpen(true);\n }\n }, [isCategoryOpen]);\n\n const ToggleButton = isCollapsible && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.preventDefault();\n setOpen((prev) => !prev);\n setHasInteracted(true);\n }}\n >\n <ChevronRightIcon\n size={16}\n className={cn(\n hasInteracted && \"transition\",\n \"shrink-0 group-data-[state=open]:rotate-90\",\n )}\n />\n </button>\n );\n\n const icon = category.icon && (\n <category.icon\n size={16}\n className={cn(\"align-[-0.125em] \", isActive && \"text-primary\")}\n />\n );\n\n const styles = navigationListItem({\n className: [\n \"text-start font-medium\",\n isCollapsible || typeof category.link !== \"undefined\"\n ? \"cursor-pointer\"\n : \"cursor-default hover:bg-transparent\",\n ],\n });\n\n return (\n <Collapsible.Root\n className=\"flex flex-col\"\n defaultOpen={isDefaultOpen}\n open={open}\n onOpenChange={() => setOpen(true)}\n >\n <Collapsible.Trigger className=\"group\" asChild disabled={!isCollapsible}>\n {category.link?.type === \"doc\" ? (\n <NavLink\n to={joinPath(category.link.id)}\n className={styles}\n onClick={() => {\n setHasInteracted(true);\n // if it is the current path and closed then open it because there's no path change to trigger the open\n if (isActive && !open) {\n setOpen(true);\n }\n }}\n >\n {icon}\n <div\n className={cn(\n \"flex items-center gap-2 justify-between w-full\",\n isActive ? \"text-primary\" : \"text-foreground/80\",\n )}\n >\n <div className=\"truncate\">{category.label}</div>\n {ToggleButton}\n </div>\n </NavLink>\n ) : (\n <div onClick={() => setHasInteracted(true)} className={styles}>\n {icon}\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex gap-2 truncate w-full\">{category.label}</div>\n {ToggleButton}\n </div>\n </div>\n )}\n </Collapsible.Trigger>\n <Collapsible.Content\n className={cn(\n // CollapsibleContent class is used to animate and it should only be applied when the user has triggered the toggle\n hasInteracted && \"CollapsibleContent\",\n category.items.length === 0 && \"hidden\",\n \"ms-6 my-1\",\n )}\n >\n <ul className=\"relative after:absolute after:-left-[--padding-nav-item] after:translate-x-[1.5px] after:top-0 after:bottom-0 after:w-px after:bg-border\">\n {category.items.map((item) => (\n <SidebarItem\n key={\n (\"id\" in item ? item.id : \"\") +\n (\"href\" in item ? item.href : \"\") +\n item.label\n }\n onRequestClose={onRequestClose}\n item={item}\n />\n ))}\n </ul>\n </Collapsible.Content>\n </Collapsible.Root>\n );\n};\n","import { cva } from \"class-variance-authority\";\nimport { ExternalLinkIcon } from \"lucide-react\";\nimport { NavLink, useSearchParams } from \"react-router\";\n\nimport type { SidebarItem as SidebarItemType } from \"../../../config/validators/SidebarSchema.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { AnchorLink } from \"../AnchorLink.js\";\nimport { useViewportAnchor } from \"../context/ViewportAnchorContext.js\";\nimport { SidebarBadge } from \"./SidebarBadge.js\";\nimport { SidebarCategory } from \"./SidebarCategory.js\";\n\nexport const navigationListItem = cva(\n \"flex items-center gap-2 px-[--padding-nav-item] py-1.5 rounded-lg hover:bg-accent\",\n {\n variants: {\n isActive: {\n true: \"text-primary font-medium\",\n false: \"text-foreground/80\",\n },\n isMuted: {\n true: \"text-foreground/30\",\n false: \"\",\n },\n },\n defaultVariants: {\n isActive: false,\n },\n },\n);\n\nexport const DATA_ANCHOR_ATTR = \"data-anchor\";\n\nexport const SidebarItem = ({\n item,\n onRequestClose,\n}: {\n item: SidebarItemType;\n onRequestClose?: () => void;\n}) => {\n const { activeAnchor } = useViewportAnchor();\n const [searchParams] = useSearchParams();\n\n switch (item.type) {\n case \"category\":\n return (\n <SidebarCategory category={item} onRequestClose={onRequestClose} />\n );\n case \"doc\":\n return (\n <NavLink\n className={({ isActive }) => navigationListItem({ isActive })}\n to={joinPath(item.id)}\n onClick={onRequestClose}\n >\n {item.icon && <item.icon size={16} className=\"align-[-0.125em]\" />}\n {item.badge ? (\n <>\n <span className=\"truncate flex-1\" title={item.label}>\n {item.label}\n </span>\n <SidebarBadge {...item.badge} />\n </>\n ) : (\n item.label\n )}\n </NavLink>\n );\n case \"link\":\n return item.href.startsWith(\"#\") ? (\n <AnchorLink\n to={{ hash: item.href, search: searchParams.toString() }}\n {...{ [DATA_ANCHOR_ATTR]: item.href.slice(1) }}\n className={navigationListItem({\n isActive: item.href.slice(1) === activeAnchor,\n className: item.badge?.placement !== \"start\" && \"justify-between\",\n })}\n onClick={onRequestClose}\n >\n {item.badge ? (\n <>\n <span className=\"truncate\" title={item.label}>\n {item.label}\n </span>\n <SidebarBadge {...item.badge} />\n </>\n ) : (\n <span className=\"break-all\">{item.label}</span>\n )}\n </AnchorLink>\n ) : !item.href.startsWith(\"http\") ? (\n <NavLink\n className={navigationListItem({\n className: item.badge?.placement !== \"start\" && \"justify-between\",\n })}\n to={item.href}\n >\n {item.badge ? (\n <>\n <span className=\"truncate\" title={item.label}>\n {item.label}\n </span>\n <SidebarBadge {...item.badge} />\n </>\n ) : (\n <span className=\"break-all\">{item.label}</span>\n )}\n </NavLink>\n ) : (\n <a\n className={navigationListItem()}\n href={item.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={onRequestClose}\n >\n <span className=\"whitespace-normal\">{item.label}</span>\n {/* This prevents that the icon would be positioned in its own line if the text fills a line entirely */}\n <span className=\"whitespace-nowrap\">\n <ExternalLinkIcon className=\"inline -translate-y-0.5\" size={12} />\n </span>\n </a>\n );\n }\n};\n","import { useCallback, useEffect } from \"react\";\nimport { useLocation } from \"react-router\";\nimport { useViewportAnchor } from \"../components/context/ViewportAnchorContext.js\";\nimport { DATA_ANCHOR_ATTR } from \"../components/navigation/SidebarItem.js\";\n\nconst scrollIntoViewIfNeeded = (\n element: Element | null,\n options: ScrollIntoViewOptions = { block: \"center\" },\n) => {\n if (!element) return;\n\n const rect = element.getBoundingClientRect();\n const isInView =\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth);\n\n if (isInView) return;\n\n element.scrollIntoView(options);\n};\n\nexport const useScrollToHash = () => {\n const { setActiveAnchor } = useViewportAnchor();\n\n const scrollToHash = useCallback(\n (hash: string) => {\n const cleanHash = hash\n .replace(/^#/, \"\")\n // Operation list items might have subdivisions that the sidebar doesn't show.\n // The subdivisions are separated by a slash so we need to remove everything before the slash to get the sidebar correct item.\n .split(\"/\")\n .at(0)!;\n const element = document.getElementById(decodeURIComponent(cleanHash));\n const link = document.querySelector(\n `[${DATA_ANCHOR_ATTR}=\"${cleanHash}\"]`,\n );\n\n if (element) {\n element.scrollIntoView();\n scrollIntoViewIfNeeded(link);\n requestIdleCallback(() => setActiveAnchor(cleanHash));\n return true;\n }\n\n // Scroll didn't happen\n return false;\n },\n [setActiveAnchor],\n );\n\n return scrollToHash;\n};\n\nexport const useScrollToAnchor = () => {\n const location = useLocation();\n const { setActiveAnchor } = useViewportAnchor();\n const scrollToHash = useScrollToHash();\n\n useEffect(() => {\n if (!location.hash) return;\n\n if (!scrollToHash(location.hash)) {\n const observer = new MutationObserver((_, obs) => {\n if (!scrollToHash(location.hash)) return;\n obs.disconnect();\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => observer.disconnect();\n }\n }, [location.hash, setActiveAnchor]);\n};\n"],"names":["emptyComponents","MDXContext","React","useMDXComponents","components","contextComponents","MDXProvider","properties","allComponents","AnchorLink","props","location","useLocation","scrollToHash","useScrollToHash","hash","handleClick","event","_a","jsx","Link","ColorMap","ColorMapInvert","SidebarBadge","color","label","className","invert","cn","SidebarCategory","category","onRequestClose","isCategoryOpen","useIsCategoryOpen","hasInteracted","setHasInteracted","useState","isCollapsible","isCollapsed","isDefaultOpen","open","setOpen","isActive","useMatch","useEffect","ToggleButton","e","prev","ChevronRightIcon","icon","styles","navigationListItem","jsxs","Collapsible","_b","NavLink","joinPath","item","SidebarItem","cva","DATA_ANCHOR_ATTR","activeAnchor","useViewportAnchor","searchParams","useSearchParams","Fragment","ExternalLinkIcon","scrollIntoViewIfNeeded","element","options","rect","setActiveAnchor","useCallback","cleanHash","link","useScrollToAnchor","observer","_","obs"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,7 +1,7 @@
1
1
  var w = Object.defineProperty;
2
2
  var g = (n, s, i) => s in n ? w(n, s, { enumerable: !0, configurable: !0, writable: !0, value: i }) : n[s] = i;
3
3
  var l = (n, s, i) => g(n, typeof s != "symbol" ? s + "" : s, i);
4
- import { A as m } from "./AuthenticationPlugin-CO_YCd2x.js";
4
+ import { A as m } from "./AuthenticationPlugin-Du8cLBSr.js";
5
5
  import { u as d } from "./state-mM7uaXTW.js";
6
6
  class h extends m {
7
7
  constructor(i) {
@@ -4,9 +4,9 @@ var b = (t, e, n) => Oe(t, typeof e != "symbol" ? e + "" : e, n);
4
4
  import { j as G } from "./jsx-runtime-Bdg6XQ1m.js";
5
5
  import { g as ze } from "./_commonjsHelpers-BkfeUUK-.js";
6
6
  import { C as De } from "./ClientOnly-E7hGysn1.js";
7
- import { j as ae } from "./joinUrl-BTy9bvoK.js";
8
- import { A as Ne } from "./AuthenticationPlugin-CO_YCd2x.js";
9
- import { u as Ke } from "./ZudokuContext-8jts0fF3.js";
7
+ import { j as ae } from "./joinUrl-nLx9pD-Z.js";
8
+ import { A as Ne } from "./AuthenticationPlugin-Du8cLBSr.js";
9
+ import { u as Ke } from "./ZudokuContext-BTUJPpQl.js";
10
10
  import { f as We } from "./chunk-SYFQ2XB5-BPvC-soB.js";
11
11
  import { Z as He } from "./invariant-Caa8-XvF.js";
12
12
  import { u as x } from "./state-mM7uaXTW.js";