@unterberg/nivel 0.0.4 → 0.0.6

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.
@@ -3,90 +3,26 @@ import {
3
3
  useUniversalMdxRuntime
4
4
  } from "./chunk-L6ZVB6XH.js";
5
5
  import {
6
+ isExternalHref,
6
7
  withSiteBaseUrl
7
- } from "./chunk-PYYPYIBD.js";
8
-
9
- // src/mdx/components/Alert.tsx
10
- import cm, { cmMerge } from "@classmatejs/react";
11
- import { Check, CircleX, Info, TriangleAlert } from "lucide-react";
12
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
- var alertIconMap = {
14
- info: Info,
15
- warning: TriangleAlert,
16
- error: CircleX,
17
- success: Check
18
- };
19
- var Alert = ({
20
- type = "info",
21
- heading,
22
- children,
23
- icon = true
24
- }) => {
25
- const AlertIcon = icon === true ? alertIconMap[type] : typeof icon === "object" ? () => /* @__PURE__ */ jsx(Fragment, { children: icon }) : null;
26
- const alertIconTextColorClass = {
27
- info: "text-info",
28
- warning: "text-warning",
29
- error: "text-error",
30
- success: "text-success"
31
- }[type];
32
- return /* @__PURE__ */ jsxs(AlertOuter, { $variant: type, children: [
33
- !!heading && AlertIcon && /* @__PURE__ */ jsxs("div", { className: "mb-3 flex items-center gap-2", children: [
34
- /* @__PURE__ */ jsx(AlertIcon, { className: cmMerge(alertIconTextColorClass, "float-left h-5 w-5") }),
35
- /* @__PURE__ */ jsx(AlertHeading, { children: heading })
36
- ] }),
37
- !(!!heading && AlertIcon) && !!heading && /* @__PURE__ */ jsx(AlertHeading, { children: heading }),
38
- !(!!heading && AlertIcon) && AlertIcon && /* @__PURE__ */ jsx("div", { className: cmMerge(alertIconTextColorClass, "float-left mr-2"), children: /* @__PURE__ */ jsx(AlertIcon, { className: "mt-1 h-5 w-5" }) }),
39
- children
40
- ] });
41
- };
42
- var AlertOuter = cm.section.variants({
43
- base: `
44
- p-4
45
- mt-5
46
- mb-5
47
- border
48
- rounded-lg
49
- prose-p:last:mb-0
50
- prose-p:mt-0
51
- prose-headings:first:mt-0
52
- prose-headings:last:mb-0
53
- prose-ul:first:mt-0
54
- prose-ul:last:mb-0
55
- text-sm
56
- `,
57
- variants: {
58
- $variant: {
59
- info: "bg-info/10 border-info/30",
60
- warning: "bg-warning/10 border-warning/30",
61
- error: "bg-error/10 border-error/25",
62
- success: "bg-success/10 border-success/35"
63
- }
64
- },
65
- defaultVariants: {
66
- $variant: "info"
67
- }
68
- });
69
- var AlertHeading = cm.header`
70
- font-bold
71
- text-base
72
- `;
8
+ } from "./chunk-CL74JUQ4.js";
73
9
 
74
10
  // src/mdx/code-blocks/ChoiceGroup.tsx
75
11
  import { Children, isValidElement, useRef as useRef2 } from "react";
76
12
 
77
13
  // src/mdx/code-blocks/CodeBlockHeaderMeta.tsx
78
- import cm2 from "@classmatejs/react";
79
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
14
+ import cm from "@classmatejs/react";
15
+ import { jsx, jsxs } from "react/jsx-runtime";
80
16
  var CodeBlockHeaderMeta = ({ env, label }) => {
81
17
  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 })
18
+ return /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
19
+ env && /* @__PURE__ */ jsx(StyledDivider, { $env: env === "server" || env === "client" ? env : void 0 }),
20
+ env && /* @__PURE__ */ jsx(StyledBgShade, { $env: env === "server" || env === "client" ? env : void 0 }),
21
+ /* @__PURE__ */ jsx("div", { className: "font-mono text-xs font-semibold text-base-muted", children: label }),
22
+ env && /* @__PURE__ */ jsx(StyledBadge, { $env: effectiveEnv, children: env })
87
23
  ] });
88
24
  };
89
- var StyledDivider = cm2.div.variants({
25
+ var StyledDivider = cm.div.variants({
90
26
  base: "absolute h-1 -bottom-px left-0 w-full pointer-events-none",
91
27
  variants: {
92
28
  $env: {
@@ -96,7 +32,7 @@ var StyledDivider = cm2.div.variants({
96
32
  },
97
33
  defaultVariants: { $env: "server" }
98
34
  });
99
- var StyledBadge = cm2.div.variants({
35
+ var StyledBadge = cm.div.variants({
100
36
  base: "shrink-0 badge badge-sm rounded-field badge-soft border pointer-events-none",
101
37
  variants: {
102
38
  $env: {
@@ -106,7 +42,7 @@ var StyledBadge = cm2.div.variants({
106
42
  },
107
43
  defaultVariants: { $env: "server" }
108
44
  });
109
- var StyledBgShade = cm2.div.variants({
45
+ var StyledBgShade = cm.div.variants({
110
46
  base: "absolute inset-0 opacity-5 bg-linear-to-t via-40% via-transparent pointer-events-none",
111
47
  variants: {
112
48
  $env: {
@@ -118,10 +54,10 @@ var StyledBgShade = cm2.div.variants({
118
54
  });
119
55
 
120
56
  // src/mdx/code-blocks/CopyButton.tsx
121
- import { cmMerge as cmMerge2 } from "@classmatejs/react";
122
- import { Check as Check2, Copy } from "lucide-react";
57
+ import { cmMerge } from "@classmatejs/react";
58
+ import { Check, Copy } from "lucide-react";
123
59
  import { useState } from "react";
124
- import { jsx as jsx3 } from "react/jsx-runtime";
60
+ import { jsx as jsx2 } from "react/jsx-runtime";
125
61
  var trimTrailingWhitespace = (text) => {
126
62
  return text.split("\n").map((line) => line.trimEnd()).join("\n");
127
63
  };
@@ -130,18 +66,18 @@ var CodeBlockCopyButton = ({
130
66
  className = ""
131
67
  }) => {
132
68
  const [copyState, setCopyState] = useState("idle");
133
- return /* @__PURE__ */ jsx3(
69
+ return /* @__PURE__ */ jsx2(
134
70
  "button",
135
71
  {
136
72
  type: "button",
137
- className: cmMerge2("btn btn-ghost btn-xs h-8 min-h-8 px-2 text-base-muted hover:text-base-content", className),
73
+ className: cmMerge("btn btn-ghost btn-xs h-8 min-h-8 px-2 text-base-muted hover:text-base-content", className),
138
74
  onClick: async () => {
139
75
  const success = await onCopy();
140
76
  setCopyState(success ? "success" : "error");
141
77
  window.setTimeout(() => setCopyState("idle"), 900);
142
78
  },
143
79
  "aria-label": copyState === "idle" ? "Copy to clipboard" : copyState === "success" ? "Copied" : "Copy failed",
144
- children: copyState === "success" ? /* @__PURE__ */ jsx3(Check2, { size: 14 }) : /* @__PURE__ */ jsx3(Copy, { size: 14 })
80
+ children: copyState === "success" ? /* @__PURE__ */ jsx2(Check, { size: 14 }) : /* @__PURE__ */ jsx2(Copy, { size: 14 })
145
81
  }
146
82
  );
147
83
  };
@@ -200,7 +136,7 @@ var useSelectedChoice = (choiceGroupName, defaultValue) => {
200
136
  };
201
137
 
202
138
  // src/mdx/code-blocks/ChoiceGroup.tsx
203
- import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
139
+ import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
204
140
  var isChoiceElement = (node) => {
205
141
  return isValidElement(node) && typeof node.props?.["data-choice-value"] === "string";
206
142
  };
@@ -237,28 +173,28 @@ var ChoiceGroup = ({
237
173
  const choiceElements = Children.toArray(children).filter(isChoiceElement);
238
174
  const activeChoiceElement = choiceElements.find((choiceElement) => choiceElement.props["data-choice-value"] === selectedChoice) ?? choiceElements[0];
239
175
  if (!activeChoiceElement) {
240
- return /* @__PURE__ */ jsx4(Fragment2, { children });
176
+ return /* @__PURE__ */ jsx3(Fragment, { children });
241
177
  }
242
178
  const activeCodeBlockMeta = getActiveCodeBlockMeta(activeChoiceElement.props.children);
243
179
  const headerLabel = activeCodeBlockMeta.title ?? activeChoiceElement.props["data-choice-value"] ?? "";
244
180
  if (hide) {
245
- return /* @__PURE__ */ jsx4(Fragment2, { children: activeChoiceElement.props.children });
181
+ return /* @__PURE__ */ jsx3(Fragment, { children: activeChoiceElement.props.children });
246
182
  }
247
- return /* @__PURE__ */ jsxs3(
183
+ return /* @__PURE__ */ jsxs2(
248
184
  "div",
249
185
  {
250
186
  "data-choice-group-outer": true,
251
187
  className: "mt-5 mb-5 flex h-full flex-col overflow-hidden rounded-box border border-base-muted-light",
252
188
  children: [
253
- /* @__PURE__ */ jsxs3(
189
+ /* @__PURE__ */ jsxs2(
254
190
  "div",
255
191
  {
256
192
  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",
257
193
  "data-choice-group-header": true,
258
194
  children: [
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(
195
+ /* @__PURE__ */ jsx3(CodeBlockHeaderMeta, { label: headerLabel, env: activeCodeBlockMeta.env }),
196
+ /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-1", children: [
197
+ /* @__PURE__ */ jsx3("label", { className: "select select-xs min-w-28 w-fit", children: /* @__PURE__ */ jsx3(
262
198
  "select",
263
199
  {
264
200
  name: `choicesFor-${choiceGroup.name}`,
@@ -270,10 +206,10 @@ var ChoiceGroup = ({
270
206
  };
271
207
  setSelectedChoice(event.currentTarget.value);
272
208
  },
273
- children: choiceGroup.choices.map((choice) => /* @__PURE__ */ jsx4("option", { value: choice, disabled: choiceGroup.disabled.includes(choice), children: choice }, choice))
209
+ children: choiceGroup.choices.map((choice) => /* @__PURE__ */ jsx3("option", { value: choice, disabled: choiceGroup.disabled.includes(choice), children: choice }, choice))
274
210
  }
275
211
  ) }),
276
- !activeCodeBlockMeta.hideCopy && /* @__PURE__ */ jsx4(
212
+ !activeCodeBlockMeta.hideCopy && /* @__PURE__ */ jsx3(
277
213
  CodeBlockCopyButton,
278
214
  {
279
215
  onCopy: async () => {
@@ -291,36 +227,36 @@ var ChoiceGroup = ({
291
227
  ]
292
228
  }
293
229
  ),
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 }) })
230
+ /* @__PURE__ */ jsx3("div", { ref: bodyRef, className: "h-full flex-1 bg-base-200! [&>*:first-child]:mt-0 [&>*:last-child]:mb-0", children: /* @__PURE__ */ jsx3(CodeBlockGroupProvider, { value: true, children: activeChoiceElement.props.children }) })
295
231
  ]
296
232
  }
297
233
  );
298
234
  };
299
235
 
300
236
  // src/mdx/code-blocks/CodeBlockTransformer.tsx
301
- import { jsx as jsx5 } from "react/jsx-runtime";
237
+ import { jsx as jsx4 } from "react/jsx-runtime";
302
238
  var CodeBlockTransformer = ({ children, lineBreak }) => {
303
239
  const className = `with-line-break_${lineBreak}`;
304
- return /* @__PURE__ */ jsx5("div", { className, children });
240
+ return /* @__PURE__ */ jsx4("div", { className, children });
305
241
  };
306
242
 
307
243
  // src/mdx/code-blocks/FileState.tsx
308
- import { jsx as jsx6 } from "react/jsx-runtime";
244
+ import { jsx as jsx5 } from "react/jsx-runtime";
309
245
  var FileAdded = ({ children }) => {
310
- return /* @__PURE__ */ jsx6("div", { className: "doc-code-file-state doc-code-file-added", children });
246
+ return /* @__PURE__ */ jsx5("div", { className: "doc-code-file-state doc-code-file-added", children });
311
247
  };
312
248
  var FileRemoved = ({ children }) => {
313
- return /* @__PURE__ */ jsx6("div", { className: "doc-code-file-state doc-code-file-removed", children });
249
+ return /* @__PURE__ */ jsx5("div", { className: "doc-code-file-state doc-code-file-removed", children });
314
250
  };
315
251
 
316
252
  // src/mdx/code-blocks/Pre.tsx
317
- import { cmMerge as cmMerge3 } from "@classmatejs/react";
253
+ import { cmMerge as cmMerge2 } from "@classmatejs/react";
318
254
  import {
319
255
  Children as Children2,
320
256
  isValidElement as isValidElement2,
321
257
  useRef as useRef3
322
258
  } from "react";
323
- import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
259
+ import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
324
260
  var asTrimmedString2 = (value) => {
325
261
  return typeof value === "string" && value.trim() ? value.trim() : null;
326
262
  };
@@ -353,7 +289,7 @@ var Pre = ({ children, className, ...props }) => {
353
289
  const env = asTrimmedString2(props["data-code-env"]);
354
290
  const fileState = props["file-added"] ? "added" : props["file-removed"] ? "removed" : null;
355
291
  const hideMenu = props["hide-menu"] === "true";
356
- const copyButton = hideMenu || isInChoiceGroup ? null : /* @__PURE__ */ jsx7(
292
+ const copyButton = hideMenu || isInChoiceGroup ? null : /* @__PURE__ */ jsx6(
357
293
  CodeBlockCopyButton,
358
294
  {
359
295
  onCopy: async () => {
@@ -367,10 +303,10 @@ var Pre = ({ children, className, ...props }) => {
367
303
  }
368
304
  }
369
305
  );
370
- return /* @__PURE__ */ jsxs4(
306
+ return /* @__PURE__ */ jsxs3(
371
307
  "div",
372
308
  {
373
- className: cmMerge3(
309
+ className: cmMerge2(
374
310
  "group relative h-full not-prose overflow-hidden",
375
311
  isInChoiceGroup ? "" : "mb-6 rounded-box border border-base-muted-light",
376
312
  className
@@ -378,23 +314,23 @@ var Pre = ({ children, className, ...props }) => {
378
314
  "data-code-block-frame": "",
379
315
  "data-file-state": fileState ?? void 0,
380
316
  children: [
381
- !isInChoiceGroup && /* @__PURE__ */ jsxs4(
317
+ !isInChoiceGroup && /* @__PURE__ */ jsxs3(
382
318
  "div",
383
319
  {
384
320
  className: "flex min-h-10 relative items-center justify-between gap-3 border-b border-base-muted-light bg-base-muted-superlight! px-4",
385
321
  "data-code-block-header": "",
386
322
  children: [
387
- /* @__PURE__ */ jsx7(CodeBlockHeaderMeta, { label, env }),
323
+ /* @__PURE__ */ jsx6(CodeBlockHeaderMeta, { label, env }),
388
324
  copyButton
389
325
  ]
390
326
  }
391
327
  ),
392
- /* @__PURE__ */ jsx7(
328
+ /* @__PURE__ */ jsx6(
393
329
  "pre",
394
330
  {
395
331
  ...props,
396
332
  ref: preRef,
397
- className: cmMerge3("doc-code-pre m-0 h-full overflow-x-auto bg-base-200! p-4 text-sm", className),
333
+ className: cmMerge2("doc-code-pre m-0 h-full overflow-x-auto bg-base-200! p-4 text-sm", className),
398
334
  "data-code-block-content": "",
399
335
  children
400
336
  }
@@ -404,6 +340,71 @@ var Pre = ({ children, className, ...props }) => {
404
340
  );
405
341
  };
406
342
 
343
+ // src/mdx/components/Alert.tsx
344
+ import cm2, { cmMerge as cmMerge3 } from "@classmatejs/react";
345
+ import { Check as Check2, CircleX, Info, TriangleAlert } from "lucide-react";
346
+ import { Fragment as Fragment2, jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
347
+ var alertIconMap = {
348
+ info: Info,
349
+ warning: TriangleAlert,
350
+ error: CircleX,
351
+ success: Check2
352
+ };
353
+ var Alert = ({
354
+ type = "info",
355
+ heading,
356
+ children,
357
+ icon = true
358
+ }) => {
359
+ const AlertIcon = icon === true ? alertIconMap[type] : typeof icon === "object" ? () => /* @__PURE__ */ jsx7(Fragment2, { children: icon }) : null;
360
+ const alertIconTextColorClass = {
361
+ info: "text-info",
362
+ warning: "text-warning",
363
+ error: "text-error",
364
+ success: "text-success"
365
+ }[type];
366
+ return /* @__PURE__ */ jsxs4(AlertOuter, { $variant: type, children: [
367
+ !!heading && AlertIcon && /* @__PURE__ */ jsxs4("div", { className: "mb-3 flex items-center gap-2", children: [
368
+ /* @__PURE__ */ jsx7(AlertIcon, { className: cmMerge3(alertIconTextColorClass, "float-left h-5 w-5") }),
369
+ /* @__PURE__ */ jsx7(AlertHeading, { children: heading })
370
+ ] }),
371
+ !(!!heading && AlertIcon) && !!heading && /* @__PURE__ */ jsx7(AlertHeading, { children: heading }),
372
+ !(!!heading && AlertIcon) && AlertIcon && /* @__PURE__ */ jsx7("div", { className: cmMerge3(alertIconTextColorClass, "float-left mr-2"), children: /* @__PURE__ */ jsx7(AlertIcon, { className: "mt-1 h-5 w-5" }) }),
373
+ children
374
+ ] });
375
+ };
376
+ var AlertOuter = cm2.section.variants({
377
+ base: `
378
+ p-4
379
+ mt-5
380
+ mb-5
381
+ border
382
+ rounded-lg
383
+ prose-p:last:mb-0
384
+ prose-p:mt-0
385
+ prose-headings:first:mt-0
386
+ prose-headings:last:mb-0
387
+ prose-ul:first:mt-0
388
+ prose-ul:last:mb-0
389
+ text-sm
390
+ `,
391
+ variants: {
392
+ $variant: {
393
+ info: "bg-info/10 border-info/30",
394
+ warning: "bg-warning/10 border-warning/30",
395
+ error: "bg-error/10 border-error/25",
396
+ success: "bg-success/10 border-success/35"
397
+ }
398
+ },
399
+ defaultVariants: {
400
+ $variant: "info"
401
+ }
402
+ });
403
+ var AlertHeading = cm2.header`
404
+ font-bold
405
+ text-base
406
+ `;
407
+
407
408
  // src/mdx/components/Link.tsx
408
409
  import { cmMerge as cmMerge4 } from "@classmatejs/react";
409
410
  import { Fragment as Fragment3, jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
@@ -452,8 +453,8 @@ var determineSectionTitle = (href) => {
452
453
  }
453
454
  return hash.split(":~:text")[0]?.split("-").map((word, index) => index === 0 ? `${word[0]?.toUpperCase() ?? ""}${word.slice(1)}` : word).join(" ");
454
455
  };
455
- var isExternalHref = (href) => {
456
- return /^(?:[a-z]+:)?\/\//i.test(href) || href.startsWith("mailto:") || href.startsWith("tel:");
456
+ var isDocsRelativeHref = (href) => {
457
+ return !href.startsWith("/") && !href.startsWith("#") && !isExternalHref(href) && !href.startsWith("./") && !href.startsWith("../");
457
458
  };
458
459
  var renderLabelPart = (value) => {
459
460
  return typeof value === "string" ? parseMarkdownMini(value) : value;
@@ -499,8 +500,8 @@ var Link = ({
499
500
  return /* @__PURE__ */ jsx8("a", { className: cmMerge4(className, "inline-flex gap-1 items-center"), ...props, children: text ?? children ?? "LINK-TARGET-NOT-FOUND" });
500
501
  }
501
502
  assertUsage(
502
- href.startsWith("/") || href.startsWith("#") || isExternalHref(href),
503
- `<Link href /> prop \`href==='${href}'\` but should be external or start with '/' or '#'`
503
+ href.startsWith("/") || href.startsWith("#") || isExternalHref(href) || isDocsRelativeHref(href),
504
+ `<Link href /> prop \`href==='${href}'\` but should be external, docs-relative, or start with '/' or '#'`
504
505
  );
505
506
  assertUsage(!text || !children, "Cannot use both `text` or `children`");
506
507
  const content = text ?? children;
@@ -637,15 +638,15 @@ var StyledTable = cm3.table.variants({
637
638
  });
638
639
 
639
640
  export {
640
- Alert,
641
641
  ChoiceGroup,
642
642
  CodeBlockTransformer,
643
643
  FileAdded,
644
644
  FileRemoved,
645
645
  Pre,
646
+ Alert,
646
647
  Link,
647
648
  Overview,
648
649
  RepoLink,
649
650
  Table
650
651
  };
651
- //# sourceMappingURL=chunk-GHQDRDZL.js.map
652
+ //# sourceMappingURL=chunk-XTBGSCAZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../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/Alert.tsx","../src/mdx/components/Link.tsx","../src/mdx/components/Overview.tsx","../src/mdx/components/RepoLink.tsx","../src/mdx/components/Table.tsx"],"sourcesContent":["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 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","import { cmMerge } from '@classmatejs/react'\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react'\nimport { isExternalHref } from '../../docs/resolveDocsConfig.js'\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 isDocsRelativeHref = (href: string) => {\n return (\n !href.startsWith('/') &&\n !href.startsWith('#') &&\n !isExternalHref(href) &&\n !href.startsWith('./') &&\n !href.startsWith('../')\n )\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) || isDocsRelativeHref(href),\n `<Link href /> prop \\`href==='${href}'\\` but should be external, docs-relative, 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 &gt; <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/** @deprecated - do not use pls */\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","jsx","jsx","useEffect","useState","useState","useEffect","jsx","jsxs","useRef","jsx","jsxs","jsx","jsx","jsx","jsx","cmMerge","Children","isValidElement","useRef","jsx","jsxs","asTrimmedString","Children","isValidElement","useRef","jsx","jsxs","cmMerge","cm","cmMerge","Check","Fragment","jsx","jsxs","cmMerge","Fragment","jsx","jsxs","cmMerge","jsx","jsxs","assertUsage","jsx","jsxs","cm","jsx","jsxs"]}
package/dist/cli.js CHANGED
@@ -3,9 +3,9 @@ import {
3
3
  initConsumer,
4
4
  loadDocsConfig,
5
5
  syncGeneratedDocsPages
6
- } from "./chunk-67GE3PJ6.js";
7
- import "./chunk-D7IAGT53.js";
8
- import "./chunk-PYYPYIBD.js";
6
+ } from "./chunk-G7DN5RH7.js";
7
+ import "./chunk-SOVTSE5J.js";
8
+ import "./chunk-CL74JUQ4.js";
9
9
 
10
10
  // src/cli.ts
11
11
  import path from "path";
package/dist/client.d.ts CHANGED
@@ -2,7 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
3
  import { ReactNode, ComponentType } from 'react';
4
4
  import * as _classmatejs_react from '@classmatejs/react';
5
- import { g as DocsConfig, T as ThemePreference, r as DocsThemeConfig } from './types-j0kEkMA4.js';
5
+ import { g as DocsConfig, T as ThemePreference, r as DocsThemeConfig } from './types-Dj-zbZbD.js';
6
6
  import * as zustand_middleware from 'zustand/middleware';
7
7
  import * as zustand from 'zustand';
8
8
 
package/dist/client.js CHANGED
@@ -8,10 +8,10 @@ import {
8
8
  UserSettingsSync,
9
9
  applyThemePreference,
10
10
  useDocsUserSettingsStore
11
- } from "./chunk-2EDJWL3U.js";
12
- import "./chunk-D7IAGT53.js";
11
+ } from "./chunk-DSQGGUBC.js";
12
+ import "./chunk-SOVTSE5J.js";
13
13
  import "./chunk-L6ZVB6XH.js";
14
- import "./chunk-PYYPYIBD.js";
14
+ import "./chunk-CL74JUQ4.js";
15
15
  export {
16
16
  AppLayout,
17
17
  DEFAULT_THEME_PREFERENCE,
package/dist/config.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { g as DocsConfig, j as DocsGraph } from './types-j0kEkMA4.js';
1
+ import { g as DocsConfig, j as DocsGraph } from './types-Dj-zbZbD.js';
2
2
 
3
3
  declare const defineDocsConfig: (config: DocsConfig) => DocsConfig;
4
4
  declare const defineDocsGraph: (graph: DocsGraph) => DocsGraph;
package/dist/index.d.ts CHANGED
@@ -1,15 +1,7 @@
1
+ export { defineDocsConfig, defineDocsGraph } from './config.js';
2
+ export { D as DocHeading, a as DocPageData, b as DocPageLinkData, c as DocsAlgoliaConfig, d as DocsAlgoliaFieldsConfig, e as DocsBrandConfig, f as DocsCollapsible, g as DocsConfig, h as DocsFooterConfig, i as DocsGlobalContextData, j as DocsGraph, k as DocsGroupNode, l as DocsHeadConfig, m as DocsPageNode, n as DocsPartnerConfig, o as DocsPartnersConfig, p as DocsSectionNode, q as DocsSidebarNode, r as DocsThemeConfig, J as JsonPrimitive, s as JsonValue, R as ResolvedDocsAlgoliaConfig, t as ResolvedDocsAlgoliaFieldsConfig, u as ResolvedDocsBrandConfig, v as ResolvedDocsConfig, w as ResolvedDocsPartnerConfig, x as ResolvedDocsPartnersConfig, y as ResolvedDocsSection, T as ThemePreference } from './types-Dj-zbZbD.js';
1
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
4
  import { ReactNode, ComponentPropsWithoutRef, PropsWithChildren } from 'react';
3
- export { defineDocsConfig, defineDocsGraph } from './config.js';
4
- export { D as DocHeading, a as DocPageData, b as DocPageLinkData, c as DocsAlgoliaConfig, d as DocsAlgoliaFieldsConfig, e as DocsBrandConfig, f as DocsCollapsible, g as DocsConfig, h as DocsFooterConfig, i as DocsGlobalContextData, j as DocsGraph, k as DocsGroupNode, l as DocsHeadConfig, m as DocsPageNode, n as DocsPartnerConfig, o as DocsPartnersConfig, p as DocsSectionNode, q as DocsSidebarNode, r as DocsThemeConfig, J as JsonPrimitive, s as JsonValue, R as ResolvedDocsAlgoliaConfig, t as ResolvedDocsAlgoliaFieldsConfig, u as ResolvedDocsBrandConfig, v as ResolvedDocsConfig, w as ResolvedDocsPartnerConfig, x as ResolvedDocsPartnersConfig, y as ResolvedDocsSection, T as ThemePreference } from './types-j0kEkMA4.js';
5
-
6
- type AlertVariant = 'info' | 'warning' | 'error' | 'success';
7
- declare const Alert: ({ type, heading, children, icon, }: {
8
- type?: AlertVariant;
9
- heading?: ReactNode;
10
- children: ReactNode;
11
- icon?: boolean | ReactNode;
12
- }) => react_jsx_runtime.JSX.Element;
13
5
 
14
6
  type ChoiceGroupDescriptor = {
15
7
  default: string;
@@ -48,6 +40,14 @@ type PreProps = ComponentPropsWithoutRef<'pre'> & {
48
40
  };
49
41
  declare const Pre: ({ children, className, ...props }: PreProps) => react_jsx_runtime.JSX.Element;
50
42
 
43
+ type AlertVariant = 'info' | 'warning' | 'error' | 'success';
44
+ declare const Alert: ({ type, heading, children, icon, }: {
45
+ type?: AlertVariant;
46
+ heading?: ReactNode;
47
+ children: ReactNode;
48
+ icon?: boolean | ReactNode;
49
+ }) => react_jsx_runtime.JSX.Element;
50
+
51
51
  type LinkProps = ComponentPropsWithoutRef<'a'> & {
52
52
  href?: string;
53
53
  text?: string | ReactNode;
@@ -86,6 +86,7 @@ interface TableProps {
86
86
  size?: 'sm' | 'md' | 'lg';
87
87
  data: TableData;
88
88
  }
89
+ /** @deprecated - do not use pls */
89
90
  declare const Table: ({ size, data }: TableProps) => react_jsx_runtime.JSX.Element;
90
91
 
91
92
  type UniversalMdxTranslationFn = (group: string, key: string) => string;
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  Pre,
10
10
  RepoLink,
11
11
  Table
12
- } from "./chunk-GHQDRDZL.js";
12
+ } from "./chunk-XTBGSCAZ.js";
13
13
  import {
14
14
  defineDocsConfig,
15
15
  defineDocsGraph
@@ -23,7 +23,7 @@ import {
23
23
  baseAssets,
24
24
  nivelAssetUrl,
25
25
  nivelPublicRoute
26
- } from "./chunk-PYYPYIBD.js";
26
+ } from "./chunk-CL74JUQ4.js";
27
27
  export {
28
28
  Alert,
29
29
  ChoiceGroup,
package/dist/mdx.js CHANGED
@@ -9,10 +9,10 @@ import {
9
9
  Pre,
10
10
  RepoLink,
11
11
  Table
12
- } from "./chunk-GHQDRDZL.js";
12
+ } from "./chunk-XTBGSCAZ.js";
13
13
  import "./chunk-JSZZPQEP.js";
14
14
  import "./chunk-L6ZVB6XH.js";
15
- import "./chunk-PYYPYIBD.js";
15
+ import "./chunk-CL74JUQ4.js";
16
16
 
17
17
  // src/mdx/index.ts
18
18
  var useMDXComponents = (components) => {