zudoku 0.7.2-dev.11 → 0.7.2-dev.13
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.
- package/dist/cli/cli.js +3 -3
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/common/analytics/lib.js +1 -1
- package/dist/cli/common/analytics/lib.js.map +1 -1
- package/dist/cli/common/outdated.js +20 -11
- package/dist/cli/common/outdated.js.map +1 -1
- package/dist/cli/common/xdg/lib.d.ts +3 -3
- package/dist/cli/common/xdg/lib.js +3 -3
- package/dist/cli/common/xdg/lib.js.map +1 -1
- package/dist/cli/dev/handler.js +26 -7
- package/dist/cli/dev/handler.js.map +1 -1
- package/dist/config/validators/InputSidebarSchema.d.ts +9 -0
- package/dist/config/validators/InputSidebarSchema.js +2 -0
- package/dist/config/validators/InputSidebarSchema.js.map +1 -1
- package/dist/config/validators/SidebarSchema.d.ts +9 -3
- package/dist/config/validators/SidebarSchema.js +7 -3
- package/dist/config/validators/SidebarSchema.js.map +1 -1
- package/dist/lib/components/navigation/SidebarCategory.js +5 -3
- package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
- package/dist/lib/components/navigation/SidebarItem.js +2 -2
- package/dist/lib/components/navigation/SidebarItem.js.map +1 -1
- package/dist/lib/icons.d.ts +1 -0
- package/dist/lib/icons.js +2 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/ui/Button.d.ts +2 -2
- package/dist/vite/config.d.ts +3 -3
- package/dist/vite/config.js +23 -22
- package/dist/vite/config.js.map +1 -1
- package/dist/vite/config.test.js +1 -4
- package/dist/vite/config.test.js.map +1 -1
- package/dist/vite/dev-server.js +1 -4
- package/dist/vite/dev-server.js.map +1 -1
- package/dist/vite/plugin-icons.d.ts +3 -0
- package/dist/vite/plugin-icons.js +47 -0
- package/dist/vite/plugin-icons.js.map +1 -0
- package/dist/vite/plugin-sidebar.js +10 -1
- package/dist/vite/plugin-sidebar.js.map +1 -1
- package/dist/vite/plugin.js +2 -0
- package/dist/vite/plugin.js.map +1 -1
- package/lib/{AuthenticationPlugin-DYnkydqa.js → AuthenticationPlugin-Bx9FK124.js} +3 -3
- package/lib/{AuthenticationPlugin-DYnkydqa.js.map → AuthenticationPlugin-Bx9FK124.js.map} +1 -1
- package/lib/{CategoryHeading-w2EW676o.js → CategoryHeading-XnFqN2lJ.js} +2 -2
- package/lib/{CategoryHeading-w2EW676o.js.map → CategoryHeading-XnFqN2lJ.js.map} +1 -1
- package/lib/{DeveloperHint-D87KcpDW.js → DeveloperHint-FBb2uXJe.js} +2 -2
- package/lib/{DeveloperHint-D87KcpDW.js.map → DeveloperHint-FBb2uXJe.js.map} +1 -1
- package/lib/{ErrorPage-BdHAg3Rg.js → ErrorPage-knunPbKI.js} +4 -4
- package/lib/{ErrorPage-BdHAg3Rg.js.map → ErrorPage-knunPbKI.js.map} +1 -1
- package/lib/{Input-BmwltPfA.js → Input-BEDZAKw0.js} +350 -366
- package/lib/Input-BEDZAKw0.js.map +1 -0
- package/lib/{Markdown-BZUoEvL7.js → Markdown-B4aR03g6.js} +2494 -2650
- package/lib/Markdown-B4aR03g6.js.map +1 -0
- package/lib/{MdxPage-E4NFxzHQ.js → MdxPage-BZyQsH8Z.js} +44 -55
- package/lib/MdxPage-BZyQsH8Z.js.map +1 -0
- package/lib/{OperationList-DVIuzHN7.js → OperationList-2NeWEM0u.js} +103 -171
- package/lib/OperationList-2NeWEM0u.js.map +1 -0
- package/lib/{Route-5sI-urRK.js → Route-BZPewmrN.js} +3 -3
- package/lib/{Route-5sI-urRK.js.map → Route-BZPewmrN.js.map} +1 -1
- package/lib/{SidebarBadge-6EEz-Bwe.js → SidebarBadge-COz0hgfa.js} +39 -39
- package/lib/{SidebarBadge-6EEz-Bwe.js.map → SidebarBadge-COz0hgfa.js.map} +1 -1
- package/lib/{SlotletProvider-CNyl5wU0.js → SlotletProvider-DJMaOUDs.js} +70 -94
- package/lib/SlotletProvider-DJMaOUDs.js.map +1 -0
- package/lib/Spinner-3cQDBVGr.js +7 -0
- package/lib/Spinner-3cQDBVGr.js.map +1 -0
- package/lib/{ZudokuContext-BHNQL3XO.js → ZudokuContext-cr-pTRY1.js} +25 -25
- package/lib/{ZudokuContext-BHNQL3XO.js.map → ZudokuContext-cr-pTRY1.js.map} +1 -1
- package/lib/{_commonjsHelpers-BVfed4GL.js → _commonjsHelpers-BkfeUUK-.js} +3 -3
- package/lib/_commonjsHelpers-BkfeUUK-.js.map +1 -0
- package/lib/{index-CbJpF8Yf.js → index-1EDgIO6b.js} +7 -7
- package/lib/{index-CbJpF8Yf.js.map → index-1EDgIO6b.js.map} +1 -1
- package/lib/{index-ChhUJhLT.js → index-BG0g4WW0.js} +10 -10
- package/lib/{index-ChhUJhLT.js.map → index-BG0g4WW0.js.map} +1 -1
- package/lib/{index-DdUotMOQ.js → index-Dv2KZuEw.js} +1113 -1169
- package/lib/index-Dv2KZuEw.js.map +1 -0
- package/lib/{index-BGY8VjAV.js → index-Zezcv0xb.js} +24 -24
- package/lib/{index-BGY8VjAV.js.map → index-Zezcv0xb.js.map} +1 -1
- package/lib/{router-BiRCp01d.js → router-D2p7Olpn.js} +22 -22
- package/lib/{router-BiRCp01d.js.map → router-D2p7Olpn.js.map} +1 -1
- package/lib/{slugify-CiPVjteN.js → slugify-DbLhpSPt.js} +2 -2
- package/lib/{slugify-CiPVjteN.js.map → slugify-DbLhpSPt.js.map} +1 -1
- package/lib/{state-DsXXkBLH.js → state-lIwt9isb.js} +15 -15
- package/lib/{state-DsXXkBLH.js.map → state-lIwt9isb.js.map} +1 -1
- package/lib/{utils-BPHLKjns.js → utils-ByIc_KIM.js} +68 -68
- package/lib/{utils-BPHLKjns.js.map → utils-ByIc_KIM.js.map} +1 -1
- package/lib/zudoku.auth-auth0.js +1 -1
- package/lib/zudoku.auth-clerk.js +2 -2
- package/lib/zudoku.auth-openid.js +8 -8
- package/lib/zudoku.components.js +754 -834
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.icons.js +2 -0
- package/lib/zudoku.icons.js.map +1 -0
- package/lib/zudoku.openapi-worker.js +2 -2
- package/lib/zudoku.plugin-api-keys.js +80 -131
- package/lib/zudoku.plugin-api-keys.js.map +1 -1
- package/lib/zudoku.plugin-custom-page.js +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +9 -8
- package/lib/zudoku.plugin-openapi.js.map +1 -1
- package/lib/zudoku.plugin-redirect.js +3 -3
- package/package.json +7 -3
- package/src/lib/components/navigation/SidebarCategory.tsx +43 -31
- package/src/lib/components/navigation/SidebarItem.tsx +2 -1
- package/src/lib/icons.ts +1 -0
- package/lib/Input-BmwltPfA.js.map +0 -1
- package/lib/Markdown-BZUoEvL7.js.map +0 -1
- package/lib/MdxPage-E4NFxzHQ.js.map +0 -1
- package/lib/OperationList-DVIuzHN7.js.map +0 -1
- package/lib/SlotletProvider-CNyl5wU0.js.map +0 -1
- package/lib/Spinner-B9eFggre.js +0 -15
- package/lib/Spinner-B9eFggre.js.map +0 -1
- package/lib/_commonjsHelpers-BVfed4GL.js.map +0 -1
- package/lib/index-DdUotMOQ.js.map +0 -1
|
@@ -1,44 +1,33 @@
|
|
|
1
1
|
import { j as e } from "./jsx-runtime-B6kdoens.js";
|
|
2
|
-
import { A,
|
|
3
|
-
import { L as
|
|
4
|
-
import { C as
|
|
5
|
-
import {
|
|
6
|
-
import { s as
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
* This source code is licensed under the ISC license.
|
|
12
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
13
|
-
*/
|
|
14
|
-
const $ = L("ListTree", [
|
|
15
|
-
["path", { d: "M21 12h-8", key: "1bmf0i" }],
|
|
16
|
-
["path", { d: "M21 6H8", key: "1pqkrb" }],
|
|
17
|
-
["path", { d: "M21 18h-8", key: "1tm79t" }],
|
|
18
|
-
["path", { d: "M3 6v4c0 1.1.9 2 2 2h3", key: "1ywdgy" }],
|
|
19
|
-
["path", { d: "M3 10v6c0 1.1.9 2 2 2h3", key: "2wc746" }]
|
|
20
|
-
]), N = "data-active", b = ({
|
|
2
|
+
import { A as T, u as k, a as P, H as C, b as H } from "./utils-ByIc_KIM.js";
|
|
3
|
+
import { L as v } from "./index-BG0g4WW0.js";
|
|
4
|
+
import { C as R } from "./CategoryHeading-XnFqN2lJ.js";
|
|
5
|
+
import { u as S, a as x, P as E, H as h } from "./Markdown-B4aR03g6.js";
|
|
6
|
+
import { s as I } from "./slugify-DbLhpSPt.js";
|
|
7
|
+
import { ListTreeIcon as L } from "lucide-react";
|
|
8
|
+
import { useRef as y, useState as _, useEffect as $ } from "react";
|
|
9
|
+
const N = "data-active", b = ({
|
|
21
10
|
item: r,
|
|
22
11
|
children: t,
|
|
23
12
|
className: s,
|
|
24
|
-
isActive:
|
|
13
|
+
isActive: o
|
|
25
14
|
}) => /* @__PURE__ */ e.jsxs(
|
|
26
15
|
"li",
|
|
27
16
|
{
|
|
28
17
|
className: x(
|
|
29
18
|
"truncate",
|
|
30
|
-
|
|
19
|
+
o ? "text-primary" : "text-foreground/65 dark:text-foreground/75",
|
|
31
20
|
s
|
|
32
21
|
),
|
|
33
22
|
title: r.value,
|
|
34
23
|
children: [
|
|
35
24
|
/* @__PURE__ */ e.jsx(
|
|
36
|
-
|
|
25
|
+
T,
|
|
37
26
|
{
|
|
38
27
|
to: `#${r.id}`,
|
|
39
28
|
[N]: r.id,
|
|
40
29
|
className: x(
|
|
41
|
-
|
|
30
|
+
o ? "text-primary" : "text-foreground/65 dark:text-foreground/75 hover:text-foreground"
|
|
42
31
|
),
|
|
43
32
|
children: r.value
|
|
44
33
|
}
|
|
@@ -46,30 +35,30 @@ const $ = L("ListTree", [
|
|
|
46
35
|
t
|
|
47
36
|
]
|
|
48
37
|
}
|
|
49
|
-
),
|
|
50
|
-
const { activeAnchor: t } =
|
|
38
|
+
), M = ({ entries: r }) => {
|
|
39
|
+
const { activeAnchor: t } = S(), s = y(null), o = y(!1), [m, i] = _({
|
|
51
40
|
top: 0,
|
|
52
41
|
opacity: 0
|
|
53
42
|
});
|
|
54
|
-
return
|
|
43
|
+
return $(() => {
|
|
55
44
|
if (!s.current) return;
|
|
56
45
|
const a = s.current.querySelector(
|
|
57
46
|
`[${N}='${t}']`
|
|
58
47
|
);
|
|
59
48
|
if (!a) {
|
|
60
|
-
|
|
49
|
+
i({ top: 0, opacity: 0 });
|
|
61
50
|
return;
|
|
62
51
|
}
|
|
63
|
-
const
|
|
64
|
-
|
|
52
|
+
const n = s.current.getBoundingClientRect().top, p = a.getBoundingClientRect().top;
|
|
53
|
+
i({
|
|
65
54
|
opacity: 1,
|
|
66
|
-
top: `${p -
|
|
67
|
-
}), !
|
|
68
|
-
|
|
55
|
+
top: `${p - n}px`
|
|
56
|
+
}), !o.current && requestIdleCallback(() => {
|
|
57
|
+
o.current = !0;
|
|
69
58
|
});
|
|
70
59
|
}, [t]), /* @__PURE__ */ e.jsxs("aside", { className: "sticky scrollbar top-[--header-height] h-[calc(100vh-var(--header-height))] pt-[--padding-content-top] pb-[--padding-content-bottom] overflow-y-auto ps-1 text-sm", children: [
|
|
71
60
|
/* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-2 font-medium mb-2", children: [
|
|
72
|
-
/* @__PURE__ */ e.jsx(
|
|
61
|
+
/* @__PURE__ */ e.jsx(L, { size: 16 }),
|
|
73
62
|
"On this page"
|
|
74
63
|
] }),
|
|
75
64
|
/* @__PURE__ */ e.jsxs("div", { className: "relative ms-2 ps-4", children: [
|
|
@@ -79,7 +68,7 @@ const $ = L("ListTree", [
|
|
|
79
68
|
{
|
|
80
69
|
className: x(
|
|
81
70
|
"absolute -left-px -translate-y-1 h-6 w-[4px] rounded bg-primary",
|
|
82
|
-
|
|
71
|
+
o.current && "ease-out [transition:top_150ms,opacity_325ms]"
|
|
83
72
|
),
|
|
84
73
|
style: m
|
|
85
74
|
}
|
|
@@ -95,13 +84,13 @@ const $ = L("ListTree", [
|
|
|
95
84
|
isActive: a.id === t,
|
|
96
85
|
item: a,
|
|
97
86
|
className: "pl-0",
|
|
98
|
-
children: a.children && /* @__PURE__ */ e.jsx("ul", { className: "list-none pl-4 pt-2 space-y-2", children: a.children.map((
|
|
87
|
+
children: a.children && /* @__PURE__ */ e.jsx("ul", { className: "list-none pl-4 pt-2 space-y-2", children: a.children.map((n) => /* @__PURE__ */ e.jsx(
|
|
99
88
|
b,
|
|
100
89
|
{
|
|
101
|
-
item:
|
|
102
|
-
isActive:
|
|
90
|
+
item: n,
|
|
91
|
+
isActive: n.id === t
|
|
103
92
|
},
|
|
104
|
-
|
|
93
|
+
n.id
|
|
105
94
|
)) })
|
|
106
95
|
},
|
|
107
96
|
a.id
|
|
@@ -110,55 +99,55 @@ const $ = L("ListTree", [
|
|
|
110
99
|
)
|
|
111
100
|
] })
|
|
112
101
|
] });
|
|
113
|
-
},
|
|
102
|
+
}, q = {
|
|
114
103
|
h2: ({ children: r, id: t }) => /* @__PURE__ */ e.jsx(h, { level: 2, id: t, registerSidebarAnchor: !0, children: r }),
|
|
115
104
|
h3: ({ children: r, id: t }) => /* @__PURE__ */ e.jsx(h, { level: 3, id: t, registerSidebarAnchor: !0, children: r })
|
|
116
105
|
}, J = ({
|
|
117
106
|
mdxComponent: r,
|
|
118
107
|
frontmatter: t = {},
|
|
119
108
|
defaultOptions: s,
|
|
120
|
-
tableOfContents:
|
|
109
|
+
tableOfContents: o
|
|
121
110
|
}) => {
|
|
122
|
-
var g, j,
|
|
123
|
-
const m = (g =
|
|
124
|
-
|
|
111
|
+
var g, j, f;
|
|
112
|
+
const m = (g = k()) == null ? void 0 : g.categoryLabel, i = t.title, a = t.category ?? m, n = t.toc === !1 || (s == null ? void 0 : s.toc) === !1, p = ((j = o.find((l) => l.depth === 1)) == null ? void 0 : j.value) ?? i, w = t.disablePager ?? (s == null ? void 0 : s.disablePager) ?? !1, u = ((f = o.find((l) => l.depth === 1)) == null ? void 0 : f.children) ?? // if `title` is provided by frontmatter it does not appear in the table of contents
|
|
113
|
+
o.filter((l) => l.depth === 2), A = !n && u.length > 0, { prev: c, next: d } = P();
|
|
125
114
|
return /* @__PURE__ */ e.jsxs("div", { className: "xl:grid grid-cols-[--sidecar-grid-cols] gap-8 justify-between", children: [
|
|
126
115
|
/* @__PURE__ */ e.jsx(C, { children: /* @__PURE__ */ e.jsx("title", { children: p }) }),
|
|
127
116
|
/* @__PURE__ */ e.jsxs(
|
|
128
117
|
"div",
|
|
129
118
|
{
|
|
130
119
|
className: x(
|
|
131
|
-
|
|
120
|
+
E,
|
|
132
121
|
"max-w-full xl:w-full xl:max-w-prose flex-1 flex-shrink pt-[--padding-content-top] pb-[--padding-content-bottom]"
|
|
133
122
|
),
|
|
134
123
|
children: [
|
|
135
124
|
/* @__PURE__ */ e.jsxs("header", { children: [
|
|
136
|
-
a && /* @__PURE__ */ e.jsx(
|
|
137
|
-
|
|
125
|
+
a && /* @__PURE__ */ e.jsx(R, { children: a }),
|
|
126
|
+
i && /* @__PURE__ */ e.jsx(h, { level: 1, id: I(i, { lower: !0 }), children: i })
|
|
138
127
|
] }),
|
|
139
128
|
/* @__PURE__ */ e.jsx(
|
|
140
129
|
r,
|
|
141
130
|
{
|
|
142
|
-
components: { ...
|
|
131
|
+
components: { ...H(), ...q }
|
|
143
132
|
}
|
|
144
133
|
),
|
|
145
134
|
!w && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
146
135
|
/* @__PURE__ */ e.jsx("hr", {}),
|
|
147
136
|
/* @__PURE__ */ e.jsxs("div", { className: "not-prose flex flex-wrap items-center justify-between gap-2 lg:gap-8", children: [
|
|
148
|
-
|
|
149
|
-
|
|
137
|
+
c ? /* @__PURE__ */ e.jsxs(
|
|
138
|
+
v,
|
|
150
139
|
{
|
|
151
|
-
to:
|
|
140
|
+
to: c.id,
|
|
152
141
|
className: "flex flex-col items-stretch gap-2 flex-1 min-w-max border rounded px-6 py-4 text-start hover:border-primary/85 transition shadow-sm hover:shadow-md",
|
|
153
|
-
title:
|
|
142
|
+
title: c.label,
|
|
154
143
|
children: [
|
|
155
144
|
/* @__PURE__ */ e.jsx("div", { className: "text-sm text-muted-foreground", children: "← Previous page" }),
|
|
156
|
-
/* @__PURE__ */ e.jsx("div", { className: "text-lg text-primary truncate", children:
|
|
145
|
+
/* @__PURE__ */ e.jsx("div", { className: "text-lg text-primary truncate", children: c.label })
|
|
157
146
|
]
|
|
158
147
|
}
|
|
159
148
|
) : /* @__PURE__ */ e.jsx("div", { className: "flex-1" }),
|
|
160
149
|
d ? /* @__PURE__ */ e.jsxs(
|
|
161
|
-
|
|
150
|
+
v,
|
|
162
151
|
{
|
|
163
152
|
to: d.id,
|
|
164
153
|
className: "flex flex-col items-stretch gap-2 flex-1 min-w-max border rounded px-6 py-4 text-end hover:border-primary/85 transition shadow-sm hover:shadow-md",
|
|
@@ -174,10 +163,10 @@ const $ = L("ListTree", [
|
|
|
174
163
|
]
|
|
175
164
|
}
|
|
176
165
|
),
|
|
177
|
-
/* @__PURE__ */ e.jsx("div", { className: "hidden xl:block", children:
|
|
166
|
+
/* @__PURE__ */ e.jsx("div", { className: "hidden xl:block", children: A && /* @__PURE__ */ e.jsx(M, { entries: u }) })
|
|
178
167
|
] });
|
|
179
168
|
};
|
|
180
169
|
export {
|
|
181
170
|
J as MdxPage
|
|
182
171
|
};
|
|
183
|
-
//# sourceMappingURL=MdxPage-
|
|
172
|
+
//# sourceMappingURL=MdxPage-BZyQsH8Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MdxPage-BZyQsH8Z.js","sources":["../src/lib/plugins/markdown/Toc.tsx","../src/lib/plugins/markdown/MdxPage.tsx"],"sourcesContent":["import type { TocEntry } from \"@stefanprobst/rehype-extract-toc\";\nimport { ListTreeIcon } from \"lucide-react\";\nimport {\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type PropsWithChildren,\n} from \"react\";\nimport { AnchorLink } from \"../../components/AnchorLink.js\";\nimport { useViewportAnchor } from \"../../components/context/ViewportAnchorContext.js\";\nimport { cn } from \"../../util/cn.js\";\n\nconst DATA_ANCHOR_ATTR = \"data-active\";\n\nconst TocItem = ({\n item,\n children,\n className,\n isActive,\n}: PropsWithChildren<{\n item: TocEntry;\n isActive: boolean;\n className?: string;\n}>) => {\n return (\n <li\n className={cn(\n \"truncate\",\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75\",\n className,\n )}\n title={item.value}\n >\n <AnchorLink\n to={`#${item.id}`}\n {...{ [DATA_ANCHOR_ATTR]: item.id }}\n className={cn(\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75 hover:text-foreground\",\n )}\n >\n {item.value}\n </AnchorLink>\n {children}\n </li>\n );\n};\n\nexport const Toc = ({ entries }: { entries: TocEntry[] }) => {\n const { activeAnchor } = useViewportAnchor();\n const listWrapperRef = useRef<HTMLUListElement>(null);\n const paintedOnce = useRef(false);\n const [indicatorStyle, setIndicatorStyles] = useState<CSSProperties>({\n top: 0,\n opacity: 0,\n });\n\n // synchronize active anchor indicator with the scroll position\n useEffect(() => {\n if (!listWrapperRef.current) return;\n\n const activeElement = listWrapperRef.current.querySelector(\n `[${DATA_ANCHOR_ATTR}='${activeAnchor}']`,\n );\n\n if (!activeElement) {\n setIndicatorStyles({ top: 0, opacity: 0 });\n return;\n }\n\n const topParent = listWrapperRef.current.getBoundingClientRect().top;\n const topElement = activeElement.getBoundingClientRect().top;\n\n setIndicatorStyles({\n opacity: 1,\n top: `${topElement - topParent}px`,\n });\n\n if (paintedOnce.current) return;\n\n // after all is painted, the indicator should animate\n requestIdleCallback(() => {\n paintedOnce.current = true;\n });\n }, [activeAnchor]);\n\n return (\n <aside className=\"sticky scrollbar top-[--header-height] h-[calc(100vh-var(--header-height))] pt-[--padding-content-top] pb-[--padding-content-bottom] overflow-y-auto ps-1 text-sm\">\n <div className=\"flex items-center gap-2 font-medium mb-2\">\n <ListTreeIcon size={16} />\n On this page\n </div>\n <div className=\"relative ms-2 ps-4\">\n <div className=\"absolute inset-0 right-auto bg-border w-[2px]\" />\n <div\n className={cn(\n \"absolute -left-px -translate-y-1 h-6 w-[4px] rounded bg-primary\",\n paintedOnce.current &&\n \"ease-out [transition:top_150ms,opacity_325ms]\",\n )}\n style={indicatorStyle}\n />\n <ul\n ref={listWrapperRef}\n className=\"relative font-medium list-none space-y-2\"\n >\n {entries.map((item) => (\n <TocItem\n isActive={item.id === activeAnchor}\n key={item.id}\n item={item}\n className=\"pl-0\"\n >\n {item.children && (\n <ul className=\"list-none pl-4 pt-2 space-y-2\">\n {item.children.map((child) => (\n <TocItem\n item={child}\n isActive={child.id === activeAnchor}\n key={child.id}\n />\n ))}\n </ul>\n )}\n </TocItem>\n ))}\n </ul>\n </div>\n </aside>\n );\n};\n","import { useMDXComponents } from \"@mdx-js/react\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport { type PropsWithChildren } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { ProseClasses } from \"../../components/Markdown.js\";\nimport {\n useCurrentItem,\n usePrevNext,\n} from \"../../components/navigation/utils.js\";\nimport type { MdxComponentsType } from \"../../util/MdxComponents.js\";\nimport { cn } from \"../../util/cn.js\";\nimport slugify from \"../../util/slugify.js\";\nimport { Toc } from \"./Toc.js\";\nimport { MarkdownPluginDefaultOptions, MDXImport } from \"./index.js\";\n\nconst MarkdownHeadings = {\n h2: ({ children, id }) => (\n <Heading level={2} id={id} registerSidebarAnchor>\n {children}\n </Heading>\n ),\n h3: ({ children, id }) => (\n <Heading level={3} id={id} registerSidebarAnchor>\n {children}\n </Heading>\n ),\n} satisfies MdxComponentsType;\n\nexport const MdxPage = ({\n mdxComponent: MdxComponent,\n frontmatter = {},\n defaultOptions,\n tableOfContents,\n}: PropsWithChildren<\n Omit<MDXImport, \"default\"> & {\n mdxComponent: MDXImport[\"default\"];\n defaultOptions?: MarkdownPluginDefaultOptions;\n }\n>) => {\n const categoryTitle = useCurrentItem()?.categoryLabel;\n const title = frontmatter.title;\n const category = frontmatter.category ?? categoryTitle;\n const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;\n const pageTitle =\n tableOfContents.find((item) => item.depth === 1)?.value ?? title;\n const hidePager =\n frontmatter.disablePager ?? defaultOptions?.disablePager ?? false;\n\n const tocEntries =\n tableOfContents.find((item) => item.depth === 1)?.children ??\n // if `title` is provided by frontmatter it does not appear in the table of contents\n tableOfContents.filter((item) => item.depth === 2);\n\n const showToc = !hideToc && tocEntries.length > 0;\n\n const { prev, next } = usePrevNext();\n\n return (\n <div className=\"xl:grid grid-cols-[--sidecar-grid-cols] gap-8 justify-between\">\n <Helmet>\n <title>{pageTitle}</title>\n </Helmet>\n <div\n className={cn(\n ProseClasses,\n \"max-w-full xl:w-full xl:max-w-prose flex-1 flex-shrink pt-[--padding-content-top] pb-[--padding-content-bottom]\",\n )}\n >\n <header>\n {category && <CategoryHeading>{category}</CategoryHeading>}\n {title && (\n <Heading level={1} id={slugify(title, { lower: true })}>\n {title}\n </Heading>\n )}\n </header>\n <MdxComponent\n components={{ ...useMDXComponents(), ...MarkdownHeadings }}\n />\n {!hidePager && (\n <>\n <hr />\n <div className=\"not-prose flex flex-wrap items-center justify-between gap-2 lg:gap-8\">\n {prev ? (\n <Link\n to={prev.id}\n className=\"flex flex-col items-stretch gap-2 flex-1 min-w-max border rounded px-6 py-4 text-start hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={prev.label}\n >\n <div className=\"text-sm text-muted-foreground\">\n ← Previous page\n </div>\n <div className=\"text-lg text-primary truncate\">\n {prev.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n {next ? (\n <Link\n to={next.id}\n className=\"flex flex-col items-stretch gap-2 flex-1 min-w-max border rounded px-6 py-4 text-end hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={next.label}\n >\n <div className=\"text-sm text-muted-foreground\">\n Next page →\n </div>\n <div className=\"text-lg text-primary truncate\">\n {next.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n </div>\n </>\n )}\n </div>\n <div className=\"hidden xl:block\">\n {showToc && <Toc entries={tocEntries} />}\n </div>\n </div>\n );\n};\n"],"names":["DATA_ANCHOR_ATTR","TocItem","item","children","className","isActive","jsxs","cn","jsx","AnchorLink","Toc","entries","activeAnchor","useViewportAnchor","listWrapperRef","useRef","paintedOnce","indicatorStyle","setIndicatorStyles","useState","useEffect","activeElement","topParent","topElement","ListTreeIcon","child","MarkdownHeadings","id","Heading","MdxPage","MdxComponent","frontmatter","defaultOptions","tableOfContents","categoryTitle","_a","useCurrentItem","title","category","hideToc","pageTitle","_b","hidePager","tocEntries","_c","showToc","prev","next","usePrevNext","Helmet","ProseClasses","CategoryHeading","slugify","useMDXComponents","Fragment","Link"],"mappings":"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"}
|