@unterberg/nivel 0.0.1 → 0.0.3
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/README.md +115 -0
- package/bin/nivel.mjs +3 -0
- package/dist/{chunk-73NPVCDQ.js → chunk-D7IAGT53.js} +56 -26
- package/dist/chunk-D7IAGT53.js.map +1 -0
- package/dist/chunk-DNCQR5NH.js +231 -0
- package/dist/chunk-DNCQR5NH.js.map +1 -0
- package/dist/{chunk-3JJ6TYWL.js → chunk-FARXFRHG.js} +120 -83
- package/dist/chunk-FARXFRHG.js.map +1 -0
- package/dist/chunk-K5ZYRA3G.js +198 -0
- package/dist/chunk-K5ZYRA3G.js.map +1 -0
- package/dist/{chunk-4WTEOEV2.js → chunk-L6ZVB6XH.js} +3 -3
- package/dist/chunk-L6ZVB6XH.js.map +1 -0
- package/dist/{chunk-FLO5CJZH.js → chunk-PYYPYIBD.js} +10 -3
- package/dist/chunk-PYYPYIBD.js.map +1 -0
- package/dist/{chunk-45CLUNJW.js → chunk-Q7JU4J6A.js} +69 -33
- package/dist/chunk-Q7JU4J6A.js.map +1 -0
- package/dist/chunk-UDOIFPCZ.js +1538 -0
- package/dist/chunk-UDOIFPCZ.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +78 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +4 -8
- package/dist/client.js +4 -4
- package/dist/index.d.ts +8 -12
- package/dist/index.js +4 -8
- package/dist/{code-blocks.d.ts → mdx/code-blocks.d.ts} +3 -1
- package/dist/{code-blocks.js → mdx/code-blocks.js} +5 -3
- package/dist/mdx.js +4 -4
- package/dist/mdx.js.map +1 -1
- package/dist/runtime/client.d.ts +1 -1
- package/dist/runtime/client.js +4 -4
- package/dist/runtime/node.d.ts +23 -0
- package/dist/runtime/node.js +24 -0
- package/dist/{types-mvLNHHrf.d.ts → types-j0kEkMA4.d.ts} +47 -24
- package/dist/{config.js → vike.js} +9 -8
- package/dist/vike.js.map +1 -0
- package/package.json +25 -16
- package/tailwind-sources.css +1 -0
- package/assets/nivel/decorators/pattern-light.png +0 -0
- package/assets/nivel/decorators/pattern.png +0 -0
- package/dist/chunk-3JJ6TYWL.js.map +0 -1
- package/dist/chunk-45CLUNJW.js.map +0 -1
- package/dist/chunk-4WTEOEV2.js.map +0 -1
- package/dist/chunk-62MBEYU7.js +0 -1091
- package/dist/chunk-62MBEYU7.js.map +0 -1
- package/dist/chunk-73NPVCDQ.js.map +0 -1
- package/dist/chunk-FLO5CJZH.js.map +0 -1
- package/dist/chunk-PHHK2BAF.js +0 -350
- package/dist/chunk-PHHK2BAF.js.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -15
- package/dist/runtime/index.js +0 -18
- /package/dist/{code-blocks.js.map → mdx/code-blocks.js.map} +0 -0
- /package/dist/runtime/{index.js.map → node.js.map} +0 -0
- /package/dist/{config.d.ts → vike.d.ts} +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
renderInlineMarkdown,
|
|
3
3
|
useUniversalMdxRuntime
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-L6ZVB6XH.js";
|
|
5
5
|
import {
|
|
6
6
|
withSiteBaseUrl
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PYYPYIBD.js";
|
|
8
8
|
|
|
9
|
-
// src/components/Alert.tsx
|
|
9
|
+
// src/mdx/components/Alert.tsx
|
|
10
10
|
import cm, { cmMerge } from "@classmatejs/react";
|
|
11
11
|
import { Check, CircleX, Info, TriangleAlert } from "lucide-react";
|
|
12
12
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -71,14 +71,57 @@ var AlertHeading = cm.header`
|
|
|
71
71
|
text-base
|
|
72
72
|
`;
|
|
73
73
|
|
|
74
|
-
// src/
|
|
74
|
+
// src/mdx/code-blocks/ChoiceGroup.tsx
|
|
75
75
|
import { Children, isValidElement, useRef as useRef2 } from "react";
|
|
76
76
|
|
|
77
|
-
// src/
|
|
77
|
+
// src/mdx/code-blocks/CodeBlockHeaderMeta.tsx
|
|
78
|
+
import cm2 from "@classmatejs/react";
|
|
79
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
80
|
+
var CodeBlockHeaderMeta = ({ env, label }) => {
|
|
81
|
+
const effectiveEnv = env === "server" || env === "client" ? env : void 0;
|
|
82
|
+
return /* @__PURE__ */ jsxs2("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
83
|
+
env && /* @__PURE__ */ jsx2(StyledDivider, { $env: env === "server" || env === "client" ? env : void 0 }),
|
|
84
|
+
env && /* @__PURE__ */ jsx2(StyledBgShade, { $env: env === "server" || env === "client" ? env : void 0 }),
|
|
85
|
+
/* @__PURE__ */ jsx2("div", { className: "font-mono text-xs font-semibold text-base-muted", children: label }),
|
|
86
|
+
env && /* @__PURE__ */ jsx2(StyledBadge, { $env: effectiveEnv, children: env })
|
|
87
|
+
] });
|
|
88
|
+
};
|
|
89
|
+
var StyledDivider = cm2.div.variants({
|
|
90
|
+
base: "absolute h-1 -bottom-px left-0 w-full pointer-events-none",
|
|
91
|
+
variants: {
|
|
92
|
+
$env: {
|
|
93
|
+
server: "border-info/50 border-b ",
|
|
94
|
+
client: "border-success/50 border-b"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
defaultVariants: { $env: "server" }
|
|
98
|
+
});
|
|
99
|
+
var StyledBadge = cm2.div.variants({
|
|
100
|
+
base: "shrink-0 badge badge-sm rounded-field badge-soft border pointer-events-none",
|
|
101
|
+
variants: {
|
|
102
|
+
$env: {
|
|
103
|
+
server: "badge-info border-info",
|
|
104
|
+
client: "badge-success border-success"
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
defaultVariants: { $env: "server" }
|
|
108
|
+
});
|
|
109
|
+
var StyledBgShade = cm2.div.variants({
|
|
110
|
+
base: "absolute inset-0 opacity-5 bg-linear-to-t via-40% via-transparent pointer-events-none",
|
|
111
|
+
variants: {
|
|
112
|
+
$env: {
|
|
113
|
+
server: "from-info",
|
|
114
|
+
client: "from-success"
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
defaultVariants: { $env: "server" }
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// src/mdx/code-blocks/CopyButton.tsx
|
|
78
121
|
import { cmMerge as cmMerge2 } from "@classmatejs/react";
|
|
79
122
|
import { Check as Check2, Copy } from "lucide-react";
|
|
80
123
|
import { useState } from "react";
|
|
81
|
-
import { jsx as
|
|
124
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
82
125
|
var trimTrailingWhitespace = (text) => {
|
|
83
126
|
return text.split("\n").map((line) => line.trimEnd()).join("\n");
|
|
84
127
|
};
|
|
@@ -87,7 +130,7 @@ var CodeBlockCopyButton = ({
|
|
|
87
130
|
className = ""
|
|
88
131
|
}) => {
|
|
89
132
|
const [copyState, setCopyState] = useState("idle");
|
|
90
|
-
return /* @__PURE__ */
|
|
133
|
+
return /* @__PURE__ */ jsx3(
|
|
91
134
|
"button",
|
|
92
135
|
{
|
|
93
136
|
type: "button",
|
|
@@ -98,18 +141,18 @@ var CodeBlockCopyButton = ({
|
|
|
98
141
|
window.setTimeout(() => setCopyState("idle"), 900);
|
|
99
142
|
},
|
|
100
143
|
"aria-label": copyState === "idle" ? "Copy to clipboard" : copyState === "success" ? "Copied" : "Copy failed",
|
|
101
|
-
children: copyState === "success" ? /* @__PURE__ */
|
|
144
|
+
children: copyState === "success" ? /* @__PURE__ */ jsx3(Check2, { size: 14 }) : /* @__PURE__ */ jsx3(Copy, { size: 14 })
|
|
102
145
|
}
|
|
103
146
|
);
|
|
104
147
|
};
|
|
105
148
|
|
|
106
|
-
// src/
|
|
149
|
+
// src/mdx/code-blocks/context.tsx
|
|
107
150
|
import { createContext, useContext } from "react";
|
|
108
151
|
var CodeBlockGroupContext = createContext(false);
|
|
109
152
|
var CodeBlockGroupProvider = CodeBlockGroupContext.Provider;
|
|
110
153
|
var useIsInCodeBlockGroup = () => useContext(CodeBlockGroupContext);
|
|
111
154
|
|
|
112
|
-
// src/
|
|
155
|
+
// src/mdx/code-blocks/useRestoreScroll.ts
|
|
113
156
|
import { useEffect, useRef } from "react";
|
|
114
157
|
var useRestoreScroll = (deps) => {
|
|
115
158
|
const previousPositionRef = useRef(null);
|
|
@@ -127,7 +170,7 @@ var useRestoreScroll = (deps) => {
|
|
|
127
170
|
return previousPositionRef;
|
|
128
171
|
};
|
|
129
172
|
|
|
130
|
-
// src/
|
|
173
|
+
// src/mdx/code-blocks/useSelectedChoice.ts
|
|
131
174
|
import { useEffect as useEffect2, useState as useState2, useSyncExternalStore } from "react";
|
|
132
175
|
var subscribeNoop = () => () => {
|
|
133
176
|
};
|
|
@@ -156,8 +199,8 @@ var useSelectedChoice = (choiceGroupName, defaultValue) => {
|
|
|
156
199
|
return [localChoice, setLocalChoice];
|
|
157
200
|
};
|
|
158
201
|
|
|
159
|
-
// src/
|
|
160
|
-
import { Fragment as Fragment2, jsx as
|
|
202
|
+
// src/mdx/code-blocks/ChoiceGroup.tsx
|
|
203
|
+
import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
161
204
|
var isChoiceElement = (node) => {
|
|
162
205
|
return isValidElement(node) && typeof node.props?.["data-choice-value"] === "string";
|
|
163
206
|
};
|
|
@@ -170,17 +213,18 @@ var getActiveCodeBlockMeta = (node) => {
|
|
|
170
213
|
continue;
|
|
171
214
|
}
|
|
172
215
|
const props = child.props;
|
|
216
|
+
const env = asTrimmedString(props["data-code-env"]);
|
|
173
217
|
const title = asTrimmedString(props["data-code-title"]);
|
|
174
218
|
const hideCopy = props["hide-menu"] === "true";
|
|
175
|
-
if (title || hideCopy) {
|
|
176
|
-
return { hideCopy, title };
|
|
219
|
+
if (title || env || hideCopy) {
|
|
220
|
+
return { env, hideCopy, title };
|
|
177
221
|
}
|
|
178
222
|
const nestedMeta = getActiveCodeBlockMeta(props.children);
|
|
179
|
-
if (nestedMeta.title || nestedMeta.hideCopy) {
|
|
223
|
+
if (nestedMeta.title || nestedMeta.env || nestedMeta.hideCopy) {
|
|
180
224
|
return nestedMeta;
|
|
181
225
|
}
|
|
182
226
|
}
|
|
183
|
-
return { hideCopy: false, title: null };
|
|
227
|
+
return { env: null, hideCopy: false, title: null };
|
|
184
228
|
};
|
|
185
229
|
var ChoiceGroup = ({
|
|
186
230
|
children,
|
|
@@ -193,28 +237,28 @@ var ChoiceGroup = ({
|
|
|
193
237
|
const choiceElements = Children.toArray(children).filter(isChoiceElement);
|
|
194
238
|
const activeChoiceElement = choiceElements.find((choiceElement) => choiceElement.props["data-choice-value"] === selectedChoice) ?? choiceElements[0];
|
|
195
239
|
if (!activeChoiceElement) {
|
|
196
|
-
return /* @__PURE__ */
|
|
240
|
+
return /* @__PURE__ */ jsx4(Fragment2, { children });
|
|
197
241
|
}
|
|
198
242
|
const activeCodeBlockMeta = getActiveCodeBlockMeta(activeChoiceElement.props.children);
|
|
199
|
-
const headerLabel = activeCodeBlockMeta.title ?? activeChoiceElement.props["data-choice-value"];
|
|
243
|
+
const headerLabel = activeCodeBlockMeta.title ?? activeChoiceElement.props["data-choice-value"] ?? "";
|
|
200
244
|
if (hide) {
|
|
201
|
-
return /* @__PURE__ */
|
|
245
|
+
return /* @__PURE__ */ jsx4(Fragment2, { children: activeChoiceElement.props.children });
|
|
202
246
|
}
|
|
203
|
-
return /* @__PURE__ */
|
|
247
|
+
return /* @__PURE__ */ jsxs3(
|
|
204
248
|
"div",
|
|
205
249
|
{
|
|
206
250
|
"data-choice-group-outer": true,
|
|
207
251
|
className: "mt-5 mb-5 flex h-full flex-col overflow-hidden rounded-box border border-base-muted-light",
|
|
208
252
|
children: [
|
|
209
|
-
/* @__PURE__ */
|
|
253
|
+
/* @__PURE__ */ jsxs3(
|
|
210
254
|
"div",
|
|
211
255
|
{
|
|
212
|
-
className: "not-prose flex min-h-10 items-center justify-between gap-3 border-b border-base-muted-light bg-base-muted-superlight px-4",
|
|
256
|
+
className: "not-prose flex min-h-10 items-center relative justify-between gap-3 border-b border-base-muted-light bg-base-muted-superlight px-4",
|
|
213
257
|
"data-choice-group-header": true,
|
|
214
258
|
children: [
|
|
215
|
-
/* @__PURE__ */
|
|
216
|
-
/* @__PURE__ */
|
|
217
|
-
/* @__PURE__ */
|
|
259
|
+
/* @__PURE__ */ jsx4(CodeBlockHeaderMeta, { label: headerLabel, env: activeCodeBlockMeta.env }),
|
|
260
|
+
/* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-1", children: [
|
|
261
|
+
/* @__PURE__ */ jsx4("label", { className: "select select-xs min-w-28 w-fit", children: /* @__PURE__ */ jsx4(
|
|
218
262
|
"select",
|
|
219
263
|
{
|
|
220
264
|
name: `choicesFor-${choiceGroup.name}`,
|
|
@@ -226,10 +270,10 @@ var ChoiceGroup = ({
|
|
|
226
270
|
};
|
|
227
271
|
setSelectedChoice(event.currentTarget.value);
|
|
228
272
|
},
|
|
229
|
-
children: choiceGroup.choices.map((choice) => /* @__PURE__ */
|
|
273
|
+
children: choiceGroup.choices.map((choice) => /* @__PURE__ */ jsx4("option", { value: choice, disabled: choiceGroup.disabled.includes(choice), children: choice }, choice))
|
|
230
274
|
}
|
|
231
275
|
) }),
|
|
232
|
-
!activeCodeBlockMeta.hideCopy && /* @__PURE__ */
|
|
276
|
+
!activeCodeBlockMeta.hideCopy && /* @__PURE__ */ jsx4(
|
|
233
277
|
CodeBlockCopyButton,
|
|
234
278
|
{
|
|
235
279
|
onCopy: async () => {
|
|
@@ -247,36 +291,36 @@ var ChoiceGroup = ({
|
|
|
247
291
|
]
|
|
248
292
|
}
|
|
249
293
|
),
|
|
250
|
-
/* @__PURE__ */
|
|
294
|
+
/* @__PURE__ */ jsx4("div", { ref: bodyRef, className: "h-full flex-1 bg-base-200! [&>*:first-child]:mt-0 [&>*:last-child]:mb-0", children: /* @__PURE__ */ jsx4(CodeBlockGroupProvider, { value: true, children: activeChoiceElement.props.children }) })
|
|
251
295
|
]
|
|
252
296
|
}
|
|
253
297
|
);
|
|
254
298
|
};
|
|
255
299
|
|
|
256
|
-
// src/
|
|
257
|
-
import { jsx as
|
|
300
|
+
// src/mdx/code-blocks/CodeBlockTransformer.tsx
|
|
301
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
258
302
|
var CodeBlockTransformer = ({ children, lineBreak }) => {
|
|
259
303
|
const className = `with-line-break_${lineBreak}`;
|
|
260
|
-
return /* @__PURE__ */
|
|
304
|
+
return /* @__PURE__ */ jsx5("div", { className, children });
|
|
261
305
|
};
|
|
262
306
|
|
|
263
|
-
// src/
|
|
264
|
-
import { jsx as
|
|
307
|
+
// src/mdx/code-blocks/FileState.tsx
|
|
308
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
265
309
|
var FileAdded = ({ children }) => {
|
|
266
|
-
return /* @__PURE__ */
|
|
310
|
+
return /* @__PURE__ */ jsx6("div", { className: "doc-code-file-state doc-code-file-added", children });
|
|
267
311
|
};
|
|
268
312
|
var FileRemoved = ({ children }) => {
|
|
269
|
-
return /* @__PURE__ */
|
|
313
|
+
return /* @__PURE__ */ jsx6("div", { className: "doc-code-file-state doc-code-file-removed", children });
|
|
270
314
|
};
|
|
271
315
|
|
|
272
|
-
// src/
|
|
316
|
+
// src/mdx/code-blocks/Pre.tsx
|
|
273
317
|
import { cmMerge as cmMerge3 } from "@classmatejs/react";
|
|
274
318
|
import {
|
|
275
319
|
Children as Children2,
|
|
276
320
|
isValidElement as isValidElement2,
|
|
277
321
|
useRef as useRef3
|
|
278
322
|
} from "react";
|
|
279
|
-
import { jsx as
|
|
323
|
+
import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
280
324
|
var asTrimmedString2 = (value) => {
|
|
281
325
|
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
282
326
|
};
|
|
@@ -306,9 +350,10 @@ var Pre = ({ children, className, ...props }) => {
|
|
|
306
350
|
const preRef = useRef3(null);
|
|
307
351
|
const isInChoiceGroup = useIsInCodeBlockGroup();
|
|
308
352
|
const label = asTrimmedString2(props["data-code-title"]) ?? getLanguageLabel(props);
|
|
353
|
+
const env = asTrimmedString2(props["data-code-env"]);
|
|
309
354
|
const fileState = props["file-added"] ? "added" : props["file-removed"] ? "removed" : null;
|
|
310
355
|
const hideMenu = props["hide-menu"] === "true";
|
|
311
|
-
const copyButton = hideMenu || isInChoiceGroup ? null : /* @__PURE__ */
|
|
356
|
+
const copyButton = hideMenu || isInChoiceGroup ? null : /* @__PURE__ */ jsx7(
|
|
312
357
|
CodeBlockCopyButton,
|
|
313
358
|
{
|
|
314
359
|
onCopy: async () => {
|
|
@@ -322,29 +367,29 @@ var Pre = ({ children, className, ...props }) => {
|
|
|
322
367
|
}
|
|
323
368
|
}
|
|
324
369
|
);
|
|
325
|
-
return /* @__PURE__ */
|
|
370
|
+
return /* @__PURE__ */ jsxs4(
|
|
326
371
|
"div",
|
|
327
372
|
{
|
|
328
373
|
className: cmMerge3(
|
|
329
374
|
"group relative h-full not-prose overflow-hidden",
|
|
330
|
-
isInChoiceGroup ? "" : "mb-6 rounded-box border border-base-muted-light
|
|
375
|
+
isInChoiceGroup ? "" : "mb-6 rounded-box border border-base-muted-light",
|
|
331
376
|
className
|
|
332
377
|
),
|
|
333
378
|
"data-code-block-frame": "",
|
|
334
379
|
"data-file-state": fileState ?? void 0,
|
|
335
380
|
children: [
|
|
336
|
-
!isInChoiceGroup && /* @__PURE__ */
|
|
381
|
+
!isInChoiceGroup && /* @__PURE__ */ jsxs4(
|
|
337
382
|
"div",
|
|
338
383
|
{
|
|
339
|
-
className: "flex min-h-10 items-center justify-between gap-3 border-b border-base-muted-light bg-base-muted-superlight! px-4",
|
|
384
|
+
className: "flex min-h-10 relative items-center justify-between gap-3 border-b border-base-muted-light bg-base-muted-superlight! px-4",
|
|
340
385
|
"data-code-block-header": "",
|
|
341
386
|
children: [
|
|
342
|
-
/* @__PURE__ */
|
|
387
|
+
/* @__PURE__ */ jsx7(CodeBlockHeaderMeta, { label, env }),
|
|
343
388
|
copyButton
|
|
344
389
|
]
|
|
345
390
|
}
|
|
346
391
|
),
|
|
347
|
-
/* @__PURE__ */
|
|
392
|
+
/* @__PURE__ */ jsx7(
|
|
348
393
|
"pre",
|
|
349
394
|
{
|
|
350
395
|
...props,
|
|
@@ -359,9 +404,9 @@ var Pre = ({ children, className, ...props }) => {
|
|
|
359
404
|
);
|
|
360
405
|
};
|
|
361
406
|
|
|
362
|
-
// src/components/Link.tsx
|
|
407
|
+
// src/mdx/components/Link.tsx
|
|
363
408
|
import { cmMerge as cmMerge4 } from "@classmatejs/react";
|
|
364
|
-
import { Fragment as Fragment3, jsx as
|
|
409
|
+
import { Fragment as Fragment3, jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
365
410
|
function assertUsage(condition, message) {
|
|
366
411
|
if (!condition) {
|
|
367
412
|
throw new Error(`[UniversalMdxMods][Wrong Usage] ${message}`);
|
|
@@ -396,8 +441,8 @@ var parseMarkdownMini = (markdown) => {
|
|
|
396
441
|
if (current) {
|
|
397
442
|
parts.push(current);
|
|
398
443
|
}
|
|
399
|
-
return /* @__PURE__ */
|
|
400
|
-
(part, index) => part.nodeType === "code" ? /* @__PURE__ */
|
|
444
|
+
return /* @__PURE__ */ jsx8(Fragment3, { children: parts.map(
|
|
445
|
+
(part, index) => part.nodeType === "code" ? /* @__PURE__ */ jsx8("code", { children: part.content }, index) : /* @__PURE__ */ jsx8("span", { children: part.content }, index)
|
|
401
446
|
) });
|
|
402
447
|
};
|
|
403
448
|
var determineSectionTitle = (href) => {
|
|
@@ -433,7 +478,7 @@ var getLinkText = ({
|
|
|
433
478
|
if (noBreadcrumb || isCurrentPage) {
|
|
434
479
|
return breadcrumbParts[breadcrumbParts.length - 1] ?? null;
|
|
435
480
|
}
|
|
436
|
-
return /* @__PURE__ */
|
|
481
|
+
return /* @__PURE__ */ jsx8(Fragment3, { children: breadcrumbParts.map((part, index) => /* @__PURE__ */ jsxs5("span", { children: [
|
|
437
482
|
index > 0 ? " > " : null,
|
|
438
483
|
part
|
|
439
484
|
] }, index)) });
|
|
@@ -451,7 +496,7 @@ var Link = ({
|
|
|
451
496
|
const runtime = useUniversalMdxRuntime();
|
|
452
497
|
if (typeof href !== "string" || href === "") {
|
|
453
498
|
assertWarning(false, "<Link /> is missing `href`.");
|
|
454
|
-
return /* @__PURE__ */
|
|
499
|
+
return /* @__PURE__ */ jsx8("a", { className: cmMerge4(className, "inline-flex gap-1 items-center"), ...props, children: text ?? children ?? "LINK-TARGET-NOT-FOUND" });
|
|
455
500
|
}
|
|
456
501
|
assertUsage(
|
|
457
502
|
href.startsWith("/") || href.startsWith("#") || isExternalHref(href),
|
|
@@ -473,11 +518,11 @@ var Link = ({
|
|
|
473
518
|
sectionTitle: inferredSectionTitle ?? void 0,
|
|
474
519
|
title: resolvedDocLink.title
|
|
475
520
|
}) : isExternalHref(href) ? href : inferredSectionTitle ?? "LINK-TARGET-NOT-FOUND");
|
|
476
|
-
return /* @__PURE__ */
|
|
521
|
+
return /* @__PURE__ */ jsx8("a", { href: localizedHref, className: cmMerge4(className, ""), ...props, children: inferredText });
|
|
477
522
|
};
|
|
478
523
|
|
|
479
|
-
// src/components/Overview.tsx
|
|
480
|
-
import { jsx as
|
|
524
|
+
// src/mdx/components/Overview.tsx
|
|
525
|
+
import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
481
526
|
import { createElement } from "react";
|
|
482
527
|
var isOverviewDividerItem = (item) => typeof item === "object" && item !== null && "dividerText" in item;
|
|
483
528
|
function assertUsage2(condition, message) {
|
|
@@ -510,14 +555,14 @@ var groupOverviewItems = (items) => {
|
|
|
510
555
|
return groups;
|
|
511
556
|
};
|
|
512
557
|
var OverviewCard = ({ excerpt, href, title }) => {
|
|
513
|
-
return /* @__PURE__ */
|
|
558
|
+
return /* @__PURE__ */ jsxs6(
|
|
514
559
|
"a",
|
|
515
560
|
{
|
|
516
561
|
href: withSiteBaseUrl(href),
|
|
517
562
|
className: "group flex h-full flex-col gap-3 rounded-box border border-base-muted-light bg-base-muted-superlight p-5 no-underline hover:border-primary-muted-medium hover:bg-base-muted-superlight/50",
|
|
518
563
|
children: [
|
|
519
|
-
/* @__PURE__ */
|
|
520
|
-
excerpt ? /* @__PURE__ */
|
|
564
|
+
/* @__PURE__ */ jsx9("h3", { className: "text-lg font-semibold text-base-content", children: renderInlineMarkdown(title) }),
|
|
565
|
+
excerpt ? /* @__PURE__ */ jsx9("p", { className: "text-sm leading-relaxed text-base-muted", children: renderInlineMarkdown(excerpt) }) : null
|
|
521
566
|
]
|
|
522
567
|
}
|
|
523
568
|
);
|
|
@@ -541,37 +586,37 @@ var Overview = ({ items }) => {
|
|
|
541
586
|
if (groups.length === 0) {
|
|
542
587
|
return null;
|
|
543
588
|
}
|
|
544
|
-
return /* @__PURE__ */
|
|
545
|
-
group.dividerText ? /* @__PURE__ */
|
|
546
|
-
/* @__PURE__ */
|
|
589
|
+
return /* @__PURE__ */ jsx9("div", { className: "prose-headings:my-0 prose-p:my-0 my-5 flex flex-col gap-8", children: groups.map((group, groupIndex) => /* @__PURE__ */ jsxs6("section", { className: "flex flex-col gap-4", children: [
|
|
590
|
+
group.dividerText ? /* @__PURE__ */ jsx9("p", { className: "text-sm font-semibold uppercase tracking-wide", children: renderInlineMarkdown(group.dividerText) }) : null,
|
|
591
|
+
/* @__PURE__ */ jsx9("div", { className: "grid gap-4 sm:grid-cols-2", children: group.items.map((item, itemIndex) => /* @__PURE__ */ createElement(OverviewCard, { ...item, key: item.href || itemIndex })) })
|
|
547
592
|
] }, groupIndex)) });
|
|
548
593
|
};
|
|
549
594
|
|
|
550
|
-
// src/components/RepoLink.tsx
|
|
551
|
-
import { jsx as
|
|
595
|
+
// src/mdx/components/RepoLink.tsx
|
|
596
|
+
import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
552
597
|
var RepoLink = ({ repo, timestamp }) => {
|
|
553
598
|
if (!repo || repo.split("/").length !== 2) {
|
|
554
599
|
throw new Error("Invalid repo");
|
|
555
600
|
}
|
|
556
|
-
return /* @__PURE__ */
|
|
557
|
-
/* @__PURE__ */
|
|
558
|
-
/* @__PURE__ */
|
|
601
|
+
return /* @__PURE__ */ jsxs7("span", { className: "inline-flex items-center gap-1", children: [
|
|
602
|
+
/* @__PURE__ */ jsx10("span", { className: "bg-white font-mono font-bold h-fit px-1 text-sm!", children: timestamp }),
|
|
603
|
+
/* @__PURE__ */ jsxs7("a", { href: `https://github.com/${repo}`, target: "_blank", rel: "noopener", children: [
|
|
559
604
|
"GitHub > ",
|
|
560
|
-
/* @__PURE__ */
|
|
605
|
+
/* @__PURE__ */ jsx10("code", { children: repo })
|
|
561
606
|
] })
|
|
562
607
|
] });
|
|
563
608
|
};
|
|
564
609
|
|
|
565
|
-
// src/components/Table.tsx
|
|
566
|
-
import
|
|
567
|
-
import { jsx as
|
|
610
|
+
// src/mdx/components/Table.tsx
|
|
611
|
+
import cm3 from "@classmatejs/react";
|
|
612
|
+
import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
568
613
|
var Table = ({ size = "md", data }) => {
|
|
569
|
-
return /* @__PURE__ */
|
|
570
|
-
/* @__PURE__ */
|
|
571
|
-
/* @__PURE__ */
|
|
614
|
+
return /* @__PURE__ */ jsxs8(StyledTable, { $size: size, children: [
|
|
615
|
+
/* @__PURE__ */ jsx11("thead", { className: "overflow-hidden rounded-t-box bg-base-200", children: /* @__PURE__ */ jsx11("tr", { children: data.headers.map((header, index) => /* @__PURE__ */ jsx11("th", { children: header }, index)) }) }),
|
|
616
|
+
/* @__PURE__ */ jsx11("tbody", { children: data.rows.map((row, rowIndex) => /* @__PURE__ */ jsx11("tr", { children: row.map((cell, cellIndex) => /* @__PURE__ */ jsx11("td", { children: cell }, cellIndex)) }, rowIndex)) })
|
|
572
617
|
] });
|
|
573
618
|
};
|
|
574
|
-
var StyledTable =
|
|
619
|
+
var StyledTable = cm3.table.variants({
|
|
575
620
|
base: `
|
|
576
621
|
not-prose
|
|
577
622
|
table
|
|
@@ -591,12 +636,6 @@ var StyledTable = cm2.table.variants({
|
|
|
591
636
|
}
|
|
592
637
|
});
|
|
593
638
|
|
|
594
|
-
// src/defineDocsConfig.ts
|
|
595
|
-
var defineDocsConfig = (config) => config;
|
|
596
|
-
|
|
597
|
-
// src/defineDocsGraph.ts
|
|
598
|
-
var defineDocsGraph = (graph) => graph;
|
|
599
|
-
|
|
600
639
|
export {
|
|
601
640
|
Alert,
|
|
602
641
|
ChoiceGroup,
|
|
@@ -607,8 +646,6 @@ export {
|
|
|
607
646
|
Link,
|
|
608
647
|
Overview,
|
|
609
648
|
RepoLink,
|
|
610
|
-
Table
|
|
611
|
-
defineDocsConfig,
|
|
612
|
-
defineDocsGraph
|
|
649
|
+
Table
|
|
613
650
|
};
|
|
614
|
-
//# sourceMappingURL=chunk-
|
|
651
|
+
//# sourceMappingURL=chunk-FARXFRHG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mdx/components/Alert.tsx","../src/mdx/code-blocks/ChoiceGroup.tsx","../src/mdx/code-blocks/CodeBlockHeaderMeta.tsx","../src/mdx/code-blocks/CopyButton.tsx","../src/mdx/code-blocks/context.tsx","../src/mdx/code-blocks/useRestoreScroll.ts","../src/mdx/code-blocks/useSelectedChoice.ts","../src/mdx/code-blocks/CodeBlockTransformer.tsx","../src/mdx/code-blocks/FileState.tsx","../src/mdx/code-blocks/Pre.tsx","../src/mdx/components/Link.tsx","../src/mdx/components/Overview.tsx","../src/mdx/components/RepoLink.tsx","../src/mdx/components/Table.tsx"],"sourcesContent":["import cm, { cmMerge } from '@classmatejs/react'\nimport { Check, CircleX, Info, TriangleAlert } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\nexport type AlertVariant = 'info' | 'warning' | 'error' | 'success'\n\nconst alertIconMap = {\n info: Info,\n warning: TriangleAlert,\n error: CircleX,\n success: Check,\n}\n\nexport const Alert = ({\n type = 'info',\n heading,\n children,\n icon = true,\n}: {\n type?: AlertVariant\n heading?: ReactNode\n children: ReactNode\n icon?: boolean | ReactNode\n}) => {\n const AlertIcon = icon === true ? alertIconMap[type] : typeof icon === 'object' ? () => <>{icon}</> : null\n\n const alertIconTextColorClass = {\n info: 'text-info',\n warning: 'text-warning',\n error: 'text-error',\n success: 'text-success',\n }[type]\n\n return (\n <AlertOuter $variant={type}>\n {!!heading && AlertIcon && (\n <div className=\"mb-3 flex items-center gap-2\">\n <AlertIcon className={cmMerge(alertIconTextColorClass, 'float-left h-5 w-5')} />\n <AlertHeading>{heading}</AlertHeading>\n </div>\n )}\n {!(!!heading && AlertIcon) && !!heading && <AlertHeading>{heading}</AlertHeading>}\n {!(!!heading && AlertIcon) && AlertIcon && (\n <div className={cmMerge(alertIconTextColorClass, 'float-left mr-2')}>\n <AlertIcon className=\"mt-1 h-5 w-5\" />\n </div>\n )}\n {children}\n </AlertOuter>\n )\n}\n\nconst AlertOuter = cm.section.variants<{ $variant: AlertVariant }>({\n base: `\n p-4\n mt-5\n mb-5\n border\n rounded-lg\n prose-p:last:mb-0\n prose-p:mt-0\n prose-headings:first:mt-0\n prose-headings:last:mb-0\n prose-ul:first:mt-0\n prose-ul:last:mb-0\n text-sm\n `,\n variants: {\n $variant: {\n info: 'bg-info/10 border-info/30',\n warning: 'bg-warning/10 border-warning/30',\n error: 'bg-error/10 border-error/25',\n success: 'bg-success/10 border-success/35',\n },\n },\n defaultVariants: {\n $variant: 'info',\n },\n})\n\nconst AlertHeading = cm.header`\n font-bold\n text-base\n`\n","export { ChoiceGroup }\n\nimport { Children, isValidElement, type ReactElement, type ReactNode, useRef } from 'react'\nimport { CodeBlockHeaderMeta } from './CodeBlockHeaderMeta.js'\nimport { CodeBlockCopyButton, trimTrailingWhitespace } from './CopyButton.js'\nimport { CodeBlockGroupProvider } from './context.js'\nimport { useRestoreScroll } from './useRestoreScroll.js'\nimport { useSelectedChoice } from './useSelectedChoice.js'\n\ntype ChoiceGroupDescriptor = {\n default: string\n disabled: string[]\n name: string\n choices: string[]\n}\n\ntype ChoiceElementProps = {\n children?: ReactNode\n 'data-choice-value'?: string\n}\n\nconst isChoiceElement = (node: ReactNode): node is ReactElement<ChoiceElementProps> => {\n return isValidElement<ChoiceElementProps>(node) && typeof node.props?.['data-choice-value'] === 'string'\n}\n\nconst asTrimmedString = (value: unknown) => {\n return typeof value === 'string' && value.trim() ? value.trim() : null\n}\n\nconst getActiveCodeBlockMeta = (node: ReactNode): { env: string | null; hideCopy: boolean; title: string | null } => {\n for (const child of Children.toArray(node)) {\n if (!isValidElement(child)) {\n continue\n }\n\n const props = child.props as {\n children?: ReactNode\n 'data-code-env'?: string\n 'data-code-title'?: string\n 'hide-menu'?: string\n }\n const env = asTrimmedString(props['data-code-env'])\n const title = asTrimmedString(props['data-code-title'])\n const hideCopy = props['hide-menu'] === 'true'\n\n if (title || env || hideCopy) {\n return { env, hideCopy, title }\n }\n\n const nestedMeta = getActiveCodeBlockMeta(props.children)\n if (nestedMeta.title || nestedMeta.env || nestedMeta.hideCopy) {\n return nestedMeta\n }\n }\n\n return { env: null, hideCopy: false, title: null }\n}\n\nconst ChoiceGroup = ({\n children,\n choiceGroup,\n hide = false,\n}: {\n children: ReactNode\n choiceGroup: ChoiceGroupDescriptor\n hide?: boolean\n lvl?: number\n}) => {\n const [selectedChoice, setSelectedChoice] = useSelectedChoice(choiceGroup.name, choiceGroup.default)\n const bodyRef = useRef<HTMLDivElement>(null)\n const previousPositionRef = useRestoreScroll([selectedChoice])\n const choiceElements = Children.toArray(children).filter(isChoiceElement)\n const activeChoiceElement =\n choiceElements.find((choiceElement) => choiceElement.props['data-choice-value'] === selectedChoice) ??\n choiceElements[0]\n\n if (!activeChoiceElement) {\n return <>{children}</>\n }\n\n const activeCodeBlockMeta = getActiveCodeBlockMeta(activeChoiceElement.props.children)\n const headerLabel = activeCodeBlockMeta.title ?? activeChoiceElement.props['data-choice-value'] ?? ''\n\n if (hide) {\n return <>{activeChoiceElement.props.children}</>\n }\n\n return (\n <div\n data-choice-group-outer\n className=\"mt-5 mb-5 flex h-full flex-col overflow-hidden rounded-box border border-base-muted-light\"\n >\n <div\n className=\"not-prose flex min-h-10 items-center relative justify-between gap-3 border-b border-base-muted-light bg-base-muted-superlight px-4\"\n data-choice-group-header\n >\n <CodeBlockHeaderMeta label={headerLabel} env={activeCodeBlockMeta.env} />\n <div className=\"flex items-center gap-1\">\n <label className=\"select select-xs min-w-28 w-fit\">\n <select\n name={`choicesFor-${choiceGroup.name}`}\n value={activeChoiceElement.props['data-choice-value']}\n onChange={(event) => {\n previousPositionRef.current = {\n top: event.currentTarget.getBoundingClientRect().top,\n element: event.currentTarget,\n }\n setSelectedChoice(event.currentTarget.value)\n }}\n >\n {choiceGroup.choices.map((choice) => (\n <option key={choice} value={choice} disabled={choiceGroup.disabled.includes(choice)}>\n {choice}\n </option>\n ))}\n </select>\n </label>\n {!activeCodeBlockMeta.hideCopy && (\n <CodeBlockCopyButton\n onCopy={async () => {\n const text = trimTrailingWhitespace(bodyRef.current?.textContent ?? '')\n\n try {\n await navigator.clipboard.writeText(text)\n return true\n } catch {\n return false\n }\n }}\n />\n )}\n </div>\n </div>\n <div ref={bodyRef} className=\"h-full flex-1 bg-base-200! [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\">\n <CodeBlockGroupProvider value={true}>{activeChoiceElement.props.children}</CodeBlockGroupProvider>\n </div>\n </div>\n )\n}\n","import cm from '@classmatejs/react'\n\nexport { CodeBlockHeaderMeta }\n\nconst CodeBlockHeaderMeta = ({ env, label }: { env?: string | null; label: string }) => {\n const effectiveEnv = env === 'server' || env === 'client' ? env : undefined\n\n return (\n <div className=\"flex min-w-0 items-center gap-2\">\n {env && <StyledDivider $env={env === 'server' || env === 'client' ? env : undefined} />}\n {env && <StyledBgShade $env={env === 'server' || env === 'client' ? env : undefined} />}\n <div className=\"font-mono text-xs font-semibold text-base-muted\">{label}</div>\n {env && <StyledBadge $env={effectiveEnv}>{env}</StyledBadge>}\n </div>\n )\n}\n\nconst StyledDivider = cm.div.variants<{ $env?: 'server' | 'client' }>({\n base: 'absolute h-1 -bottom-px left-0 w-full pointer-events-none',\n variants: {\n $env: {\n server: 'border-info/50 border-b ',\n client: 'border-success/50 border-b',\n },\n },\n defaultVariants: { $env: 'server' },\n})\n\nconst StyledBadge = cm.div.variants<{ $env?: 'server' | 'client' }>({\n base: 'shrink-0 badge badge-sm rounded-field badge-soft border pointer-events-none',\n variants: {\n $env: {\n server: 'badge-info border-info',\n client: 'badge-success border-success',\n },\n },\n defaultVariants: { $env: 'server' },\n})\n\nconst StyledBgShade = cm.div.variants<{ $env?: 'server' | 'client' }>({\n base: 'absolute inset-0 opacity-5 bg-linear-to-t via-40% via-transparent pointer-events-none',\n variants: {\n $env: {\n server: 'from-info',\n client: 'from-success',\n },\n },\n defaultVariants: { $env: 'server' },\n})\n","export { CodeBlockCopyButton, trimTrailingWhitespace }\n\nimport { cmMerge } from '@classmatejs/react'\nimport { Check, Copy } from 'lucide-react'\nimport { useState } from 'react'\n\nconst trimTrailingWhitespace = (text: string) => {\n return text\n .split('\\n')\n .map((line) => line.trimEnd())\n .join('\\n')\n}\n\nconst CodeBlockCopyButton = ({\n onCopy,\n className = '',\n}: {\n onCopy: () => Promise<boolean> | boolean\n className?: string\n}) => {\n const [copyState, setCopyState] = useState<'idle' | 'success' | 'error'>('idle')\n\n return (\n <button\n type=\"button\"\n className={cmMerge('btn btn-ghost btn-xs h-8 min-h-8 px-2 text-base-muted hover:text-base-content', className)}\n onClick={async () => {\n const success = await onCopy()\n setCopyState(success ? 'success' : 'error')\n window.setTimeout(() => setCopyState('idle'), 900)\n }}\n aria-label={copyState === 'idle' ? 'Copy to clipboard' : copyState === 'success' ? 'Copied' : 'Copy failed'}\n >\n {copyState === 'success' ? <Check size={14} /> : <Copy size={14} />}\n </button>\n )\n}\n","import { createContext, useContext } from 'react'\n\nconst CodeBlockGroupContext = createContext(false)\n\nexport const CodeBlockGroupProvider = CodeBlockGroupContext.Provider\n\nexport const useIsInCodeBlockGroup = () => useContext(CodeBlockGroupContext)\n","import { useEffect, useRef } from 'react'\n\ntype ScrollPosition = {\n top: number\n element: Element\n}\n\nexport const useRestoreScroll = (deps: ReadonlyArray<unknown>) => {\n const previousPositionRef = useRef<ScrollPosition | null>(null)\n\n useEffect(() => {\n if (!previousPositionRef.current) {\n return\n }\n\n const { top, element } = previousPositionRef.current\n const delta = element.getBoundingClientRect().top - top\n\n if (delta !== 0) {\n window.scrollBy(0, delta)\n }\n\n previousPositionRef.current = null\n // biome-ignore lint/correctness/useExhaustiveDependencies: restore only when the tracked value changes\n }, deps)\n\n return previousPositionRef\n}\n","import { useEffect, useState, useSyncExternalStore } from 'react'\nimport { useUniversalMdxRuntime } from '../components/UniversalMdxProvider.js'\n\nconst subscribeNoop = () => () => {}\nconst getServerSnapshot = () => null\n\nexport const useSelectedChoice = (choiceGroupName: string, defaultValue: string) => {\n const runtime = useUniversalMdxRuntime()\n const choiceStore = runtime?.codeBlockChoices\n const storedChoice = useSyncExternalStore(\n choiceStore?.subscribe ?? subscribeNoop,\n () => choiceStore?.getChoice(choiceGroupName) ?? null,\n getServerSnapshot,\n )\n const [localChoice, setLocalChoice] = useState(defaultValue)\n\n useEffect(() => {\n if (!choiceStore || storedChoice) {\n return\n }\n\n const legacyChoice = choiceStore.getLegacyChoice?.(choiceGroupName)\n if (legacyChoice) {\n choiceStore.setChoice(choiceGroupName, legacyChoice)\n }\n }, [choiceGroupName, choiceStore, storedChoice])\n\n if (choiceStore) {\n return [storedChoice ?? defaultValue, (value: string) => choiceStore.setChoice(choiceGroupName, value)] as const\n }\n\n return [localChoice, setLocalChoice] as const\n}\n","export { CodeBlockTransformer }\nexport type { LineBreak }\n\nimport type { ReactNode } from 'react'\n\ntype LineBreak = 'white-space' | 'break-word'\n\nconst CodeBlockTransformer = ({ children, lineBreak }: { children: ReactNode; lineBreak: LineBreak }) => {\n const className = `with-line-break_${lineBreak}` as const\n return <div className={className}>{children}</div>\n}\n","export { FileAdded, FileRemoved }\n\nimport type { ReactNode } from 'react'\n\nconst FileAdded = ({ children }: { children: ReactNode }) => {\n return <div className=\"doc-code-file-state doc-code-file-added\">{children}</div>\n}\n\nconst FileRemoved = ({ children }: { children: ReactNode }) => {\n return <div className=\"doc-code-file-state doc-code-file-removed\">{children}</div>\n}\n","export { Pre }\n\nimport { cmMerge } from '@classmatejs/react'\nimport {\n Children,\n type ComponentPropsWithoutRef,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useRef,\n} from 'react'\nimport { CodeBlockHeaderMeta } from './CodeBlockHeaderMeta.js'\nimport { CodeBlockCopyButton, trimTrailingWhitespace } from './CopyButton.js'\nimport { useIsInCodeBlockGroup } from './context.js'\n\ntype PreProps = ComponentPropsWithoutRef<'pre'> & {\n 'data-code-env'?: string\n 'data-code-title'?: string\n 'data-language'?: string\n 'data-language-label'?: string\n 'file-added'?: string\n 'file-removed'?: string\n 'hide-menu'?: string\n}\n\nconst asTrimmedString = (value: unknown) => {\n return typeof value === 'string' && value.trim() ? value.trim() : null\n}\n\nconst getLanguageFromChildren = (children: ReactNode) => {\n const firstChild = Children.toArray(children)[0]\n if (!isValidElement(firstChild)) {\n return null\n }\n\n const props = (firstChild as ReactElement<{ className?: string; 'data-language'?: string }>).props\n const explicitLanguage = asTrimmedString(props['data-language'])\n if (explicitLanguage) {\n return explicitLanguage\n }\n\n const classNames = typeof props.className === 'string' ? props.className.split(/\\s+/) : []\n const languageClassName = classNames.find((className) => className.startsWith('language-'))\n return languageClassName ? languageClassName.slice('language-'.length) : null\n}\n\nconst getLanguageLabel = (props: PreProps) => {\n const explicitLabel = asTrimmedString(props['data-language-label'])\n if (explicitLabel) {\n return explicitLabel\n }\n\n const explicitLanguage = asTrimmedString(props['data-language']) ?? getLanguageFromChildren(props.children)\n return explicitLanguage ? explicitLanguage.toUpperCase() : 'CODE'\n}\n\nconst Pre = ({ children, className, ...props }: PreProps) => {\n const preRef = useRef<HTMLPreElement>(null)\n const isInChoiceGroup = useIsInCodeBlockGroup()\n const label = asTrimmedString(props['data-code-title']) ?? getLanguageLabel(props)\n const env = asTrimmedString(props['data-code-env'])\n const fileState = props['file-added'] ? 'added' : props['file-removed'] ? 'removed' : null\n const hideMenu = props['hide-menu'] === 'true'\n\n const copyButton =\n hideMenu || isInChoiceGroup ? null : (\n <CodeBlockCopyButton\n onCopy={async () => {\n const text = trimTrailingWhitespace(preRef.current?.textContent ?? '')\n\n try {\n await navigator.clipboard.writeText(text)\n return true\n } catch {\n return false\n }\n }}\n />\n )\n\n return (\n <div\n className={cmMerge(\n 'group relative h-full not-prose overflow-hidden',\n isInChoiceGroup ? '' : 'mb-6 rounded-box border border-base-muted-light',\n className,\n )}\n data-code-block-frame=\"\"\n data-file-state={fileState ?? undefined}\n >\n {!isInChoiceGroup && (\n <div\n className=\"flex min-h-10 relative items-center justify-between gap-3 border-b border-base-muted-light bg-base-muted-superlight! px-4\"\n data-code-block-header=\"\"\n >\n <CodeBlockHeaderMeta label={label} env={env} />\n {copyButton}\n </div>\n )}\n <pre\n {...props}\n ref={preRef}\n className={cmMerge('doc-code-pre m-0 h-full overflow-x-auto bg-base-200! p-4 text-sm', className)}\n data-code-block-content=\"\"\n >\n {children}\n </pre>\n </div>\n )\n}\n","import { cmMerge } from '@classmatejs/react'\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react'\nimport { withSiteBaseUrl } from '../../shared/assets.js'\nimport { useUniversalMdxRuntime } from './UniversalMdxProvider.js'\n\nexport type LinkProps = ComponentPropsWithoutRef<'a'> & {\n href?: string\n text?: string | ReactNode\n noBreadcrumb?: boolean\n doNotInferSectionTitle?: boolean\n noWarning?: boolean\n}\n\nfunction assertUsage(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(`[UniversalMdxMods][Wrong Usage] ${message}`)\n }\n}\n\nconst assertWarning = (condition: unknown, message: string) => {\n const isDev = (import.meta as ImportMeta & { env?: { DEV?: boolean } }).env?.DEV === true\n\n if (condition || !isDev) {\n return\n }\n\n console.warn(`[UniversalMdxMods][Warning] ${message}`)\n}\n\nconst parseMarkdownMini = (markdown: string) => {\n type Part = { content: string; nodeType: 'code' | 'text' }\n const parts: Part[] = []\n let current: Part | undefined\n\n for (const letter of markdown.split('')) {\n if (letter === '`') {\n if (current?.nodeType === 'code') {\n parts.push(current)\n current = undefined\n } else {\n if (current) {\n parts.push(current)\n }\n current = { nodeType: 'code', content: '' }\n }\n continue\n }\n\n current ??= { nodeType: 'text', content: '' }\n current.content += letter\n }\n\n if (current) {\n parts.push(current)\n }\n\n return (\n <>\n {parts.map((part, index) =>\n part.nodeType === 'code' ? <code key={index}>{part.content}</code> : <span key={index}>{part.content}</span>,\n )}\n </>\n )\n}\n\nconst determineSectionTitle = (href: string) => {\n const hash = href.split('#')[1]\n\n if (!hash) {\n return null\n }\n\n return hash\n .split(':~:text')[0]\n ?.split('-')\n .map((word, index) => (index === 0 ? `${word[0]?.toUpperCase() ?? ''}${word.slice(1)}` : word))\n .join(' ')\n}\n\nconst isExternalHref = (href: string) => {\n return /^(?:[a-z]+:)?\\/\\//i.test(href) || href.startsWith('mailto:') || href.startsWith('tel:')\n}\n\nconst renderLabelPart = (value: ReactNode) => {\n return typeof value === 'string' ? parseMarkdownMini(value) : value\n}\n\nconst getLinkText = ({\n isCurrentPage,\n breadcrumb,\n noBreadcrumb,\n sectionTitle,\n title,\n}: {\n isCurrentPage?: boolean\n breadcrumb?: ReactNode[]\n noBreadcrumb?: boolean\n sectionTitle?: ReactNode\n title?: ReactNode\n}) => {\n const breadcrumbParts: ReactNode[] = []\n\n if (breadcrumb) {\n breadcrumbParts.push(...breadcrumb.map((item) => renderLabelPart(item)))\n }\n\n if (title) {\n breadcrumbParts.push(renderLabelPart(title))\n }\n\n if (sectionTitle) {\n breadcrumbParts.push(renderLabelPart(sectionTitle))\n }\n\n if (noBreadcrumb || isCurrentPage) {\n return breadcrumbParts[breadcrumbParts.length - 1] ?? null\n }\n\n return (\n <>\n {breadcrumbParts.map((part, index) => (\n <span key={index}>\n {index > 0 ? ' > ' : null}\n {part}\n </span>\n ))}\n </>\n )\n}\n\nexport const Link = ({\n href,\n text,\n noBreadcrumb,\n doNotInferSectionTitle,\n noWarning,\n children,\n className,\n ...props\n}: LinkProps) => {\n const runtime = useUniversalMdxRuntime()\n\n if (typeof href !== 'string' || href === '') {\n assertWarning(false, '<Link /> is missing `href`.')\n\n return (\n <a className={cmMerge(className, 'inline-flex gap-1 items-center')} {...props}>\n {text ?? children ?? 'LINK-TARGET-NOT-FOUND'}\n </a>\n )\n }\n\n assertUsage(\n href.startsWith('/') || href.startsWith('#') || isExternalHref(href),\n `<Link href /> prop \\`href==='${href}'\\` but should be external or start with '/' or '#'`,\n )\n assertUsage(!text || !children, 'Cannot use both `text` or `children`')\n\n const content = text ?? children\n const resolvedDocLink = runtime?.resolveDocLink?.({\n href,\n doNotInferSectionTitle,\n noWarning,\n })\n const localizedHref = resolvedDocLink?.href ?? runtime?.localizeHref?.(href) ?? withSiteBaseUrl(href)\n const inferredSectionTitle =\n resolvedDocLink?.sectionTitle ?? (!doNotInferSectionTitle ? determineSectionTitle(href) : null)\n const inferredText =\n content ??\n (resolvedDocLink\n ? getLinkText({\n breadcrumb: resolvedDocLink.breadcrumb,\n isCurrentPage: resolvedDocLink.isCurrentPage,\n noBreadcrumb,\n sectionTitle: inferredSectionTitle ?? undefined,\n title: resolvedDocLink.title,\n })\n : isExternalHref(href)\n ? href\n : (inferredSectionTitle ?? 'LINK-TARGET-NOT-FOUND'))\n\n return (\n <a href={localizedHref} className={cmMerge(className, '')} {...props}>\n {inferredText}\n </a>\n )\n}\n","import type { ReactNode } from 'react'\nimport { withSiteBaseUrl } from '../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../shared/renderInlineMarkdown.js'\nimport type { UniversalResolvedOverviewItem } from './types.js'\nimport { useUniversalMdxRuntime } from './UniversalMdxProvider.js'\n\ntype OverviewLinkItem = {\n title: ReactNode\n href: string\n excerpt?: ReactNode | null\n}\n\ntype OverviewDividerItem = {\n dividerText: ReactNode\n}\n\nexport type OverviewItem = OverviewLinkItem | OverviewDividerItem\n\ninterface OverviewProps {\n items: Array<string | OverviewItem>\n}\n\nconst isOverviewDividerItem = (item: string | OverviewItem): item is OverviewDividerItem =>\n typeof item === 'object' && item !== null && 'dividerText' in item\n\nfunction assertUsage(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(`[UniversalMdxMods][Wrong Usage] ${message}`)\n }\n}\n\nconst groupOverviewItems = (items: OverviewItem[]) => {\n const groups: { dividerText?: ReactNode; items: OverviewLinkItem[] }[] = []\n let currentGroup: { dividerText?: ReactNode; items: OverviewLinkItem[] } = {\n items: [],\n }\n\n const commitCurrentGroup = () => {\n if (currentGroup.items.length > 0) {\n groups.push(currentGroup)\n }\n }\n\n for (const item of items) {\n if (isOverviewDividerItem(item)) {\n commitCurrentGroup()\n currentGroup = {\n dividerText: item.dividerText,\n items: [],\n }\n continue\n }\n\n currentGroup.items.push(item)\n }\n\n commitCurrentGroup()\n\n return groups\n}\n\nconst OverviewCard = ({ excerpt, href, title }: OverviewLinkItem) => {\n return (\n <a\n href={withSiteBaseUrl(href)}\n className=\"group flex h-full flex-col gap-3 rounded-box border border-base-muted-light bg-base-muted-superlight p-5 no-underline hover:border-primary-muted-medium hover:bg-base-muted-superlight/50\"\n >\n <h3 className=\"text-lg font-semibold text-base-content\">{renderInlineMarkdown(title)}</h3>\n {excerpt ? <p className=\"text-sm leading-relaxed text-base-muted\">{renderInlineMarkdown(excerpt)}</p> : null}\n </a>\n )\n}\n\nconst normalizeOverviewItems = (\n items: Array<string | OverviewItem>,\n resolveOverviewItem?: (key: string) => UniversalResolvedOverviewItem | null,\n): OverviewItem[] => {\n return items.map((item) => {\n if (typeof item !== 'string') {\n return item\n }\n\n const resolvedItem = resolveOverviewItem?.(item)\n\n assertUsage(\n resolvedItem,\n `Overview item \"${item}\" requires runtime.resolveOverviewItem(). Pass { title, href, excerpt } manually when no resolver is available.`,\n )\n\n return resolvedItem\n })\n}\n\nexport const Overview = ({ items }: OverviewProps) => {\n const runtime = useUniversalMdxRuntime()\n const groups = groupOverviewItems(normalizeOverviewItems(items, runtime?.resolveOverviewItem))\n\n if (groups.length === 0) {\n return null\n }\n\n return (\n <div className=\"prose-headings:my-0 prose-p:my-0 my-5 flex flex-col gap-8\">\n {groups.map((group, groupIndex) => (\n <section className=\"flex flex-col gap-4\" key={groupIndex}>\n {group.dividerText ? (\n <p className=\"text-sm font-semibold uppercase tracking-wide\">{renderInlineMarkdown(group.dividerText)}</p>\n ) : null}\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {group.items.map((item, itemIndex) => (\n <OverviewCard {...item} key={item.href || itemIndex} />\n ))}\n </div>\n </section>\n ))}\n </div>\n )\n}\n","type Repo = `${string}/${string}`\ntype TimestampType = `${number}.${number}`\n\nexport const RepoLink = ({ repo, timestamp }: { repo: Repo; timestamp: TimestampType }) => {\n if (!repo || repo.split('/').length !== 2) {\n throw new Error('Invalid repo')\n }\n\n return (\n <span className=\"inline-flex items-center gap-1\">\n <span className=\"bg-white font-mono font-bold h-fit px-1 text-sm!\">{timestamp}</span>\n <a href={`https://github.com/${repo}`} target=\"_blank\" rel=\"noopener\">\n GitHub > <code>{repo}</code>\n </a>\n </span>\n )\n}\n","import cm from '@classmatejs/react'\n\nexport interface TableData {\n headers: string[]\n rows: string[][]\n}\n\nexport interface TableProps {\n size?: 'sm' | 'md' | 'lg'\n data: TableData\n}\n\nexport const Table = ({ size = 'md', data }: TableProps) => {\n return (\n <StyledTable $size={size}>\n <thead className=\"overflow-hidden rounded-t-box bg-base-200\">\n <tr>\n {data.headers.map((header, index) => (\n <th key={index}>{header}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.rows.map((row, rowIndex) => (\n <tr key={rowIndex}>\n {row.map((cell, cellIndex) => (\n <td key={cellIndex}>{cell}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </StyledTable>\n )\n}\n\nconst StyledTable = cm.table.variants<{ $size: TableProps['size'] }>({\n base: `\n not-prose\n table\n w-full\n table-zebra\n mb-6\n `,\n variants: {\n $size: {\n sm: 'table-sm',\n md: 'table-md',\n lg: 'table-lg',\n },\n },\n defaultVariants: {\n $size: 'md',\n },\n})\n"],"mappings":"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","names":["useRef","cm","jsx","jsxs","jsxs","jsx","cm","cmMerge","Check","jsx","jsx","cmMerge","Check","useEffect","useState","useState","useEffect","Fragment","jsx","jsxs","useRef","jsx","Fragment","jsxs","jsx","jsx","jsx","jsx","cmMerge","Children","isValidElement","useRef","jsx","jsxs","asTrimmedString","Children","isValidElement","useRef","jsx","jsxs","cmMerge","cmMerge","Fragment","jsx","jsxs","cmMerge","jsx","jsxs","assertUsage","jsx","jsxs","cm","jsx","jsxs"]}
|