@unterberg/nivel 0.2.48 → 0.2.51

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.
@@ -271,8 +271,7 @@ var FileRemoved = ({ children }) => {
271
271
  import { cmMerge as cmMerge2 } from "@classmatejs/react";
272
272
  import { useEffect as useEffect2, useId as useId2, useState as useState3 } from "react";
273
273
  import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
274
- var isMermaidInitialized = false;
275
- var mermaidModulePromise = null;
274
+ var mermaidClientModulePromise = null;
276
275
  var MERMAID_SVG_CLASS_NAME = "nivel-mermaid-svg";
277
276
  var MERMAID_ROOT_CLASS_NAME = "nivel-mermaid";
278
277
  var getMermaidSvgOverrideCss = (diagramId) => `
@@ -330,22 +329,12 @@ var getMermaidSvgOverrideCss = (diagramId) => `
330
329
  stroke-width: var(--nivel-mermaid-cluster-stroke-width, 1px);
331
330
  }
332
331
  `;
333
- var loadMermaid = async () => {
334
- mermaidModulePromise ??= import("mermaid").then((module) => module.default);
335
- return mermaidModulePromise;
336
- };
337
- var ensureMermaidInitialized = async () => {
338
- const mermaid = await loadMermaid();
339
- if (isMermaidInitialized) {
340
- return mermaid;
332
+ var loadMermaidClient = async () => {
333
+ if (import.meta.env.SSR) {
334
+ throw new Error("Mermaid diagrams can only be rendered in the browser.");
341
335
  }
342
- mermaid.initialize({
343
- startOnLoad: false,
344
- suppressErrorRendering: true,
345
- theme: "base"
346
- });
347
- isMermaidInitialized = true;
348
- return mermaid;
336
+ mermaidClientModulePromise ??= import("./renderMermaid.client-J5F5DPEX.js");
337
+ return mermaidClientModulePromise;
349
338
  };
350
339
  var decorateSvg = (svg, diagramId) => {
351
340
  const svgWithClassName = svg.replace(/<svg\b([^>]*?)>/, (match, attributes) => {
@@ -369,8 +358,8 @@ var MermaidDiagram = ({ className, source }) => {
369
358
  let isActive = true;
370
359
  const renderDiagram = async () => {
371
360
  try {
372
- const mermaid = await ensureMermaidInitialized();
373
- const { svg: renderedSvg } = await mermaid.render(`nivel-mermaid-${diagramId}`, source);
361
+ const { renderMermaidSvg } = await loadMermaidClient();
362
+ const renderedSvg = await renderMermaidSvg(`nivel-mermaid-${diagramId}`, source);
374
363
  if (!isActive) {
375
364
  return;
376
365
  }
@@ -824,21 +813,61 @@ var RepoLink = ({ repo, timestamp }) => {
824
813
  };
825
814
 
826
815
  // src/mdx/components/Table.tsx
827
- import cm4 from "@classmatejs/react";
816
+ import cm4, { cmMerge as cmMerge6 } from "@classmatejs/react";
828
817
  import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
829
818
  var Table = ({ size = "md", data }) => {
830
- return /* @__PURE__ */ jsx12("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs9(StyledTable, { $size: size, children: [
819
+ return /* @__PURE__ */ jsx12(TableScrollContainer, { children: /* @__PURE__ */ jsxs9(StyledTable, { $size: size, children: [
831
820
  /* @__PURE__ */ jsx12("thead", { className: "overflow-hidden rounded-t-box bg-base-200", children: /* @__PURE__ */ jsx12("tr", { children: data.headers.map((header, index) => /* @__PURE__ */ jsx12("th", { children: header }, index)) }) }),
832
821
  /* @__PURE__ */ jsx12("tbody", { children: data.rows.map((row, rowIndex) => /* @__PURE__ */ jsx12("tr", { children: row.map((cell, cellIndex) => /* @__PURE__ */ jsx12("td", { children: cell }, cellIndex)) }, rowIndex)) })
833
822
  ] }) });
834
823
  };
824
+ var MdxTable = ({ className, ...props }) => {
825
+ return /* @__PURE__ */ jsx12(TableScrollContainer, { children: /* @__PURE__ */ jsx12(
826
+ "table",
827
+ {
828
+ className: cmMerge6(
829
+ `
830
+ table
831
+ w-full
832
+ min-w-[48rem]
833
+ text-sm
834
+ [&_code]:whitespace-nowrap
835
+ [&_td]:align-top
836
+ [&_td]:bg-base-200
837
+ [&_td]:p-3
838
+ [&_td]:[overflow-wrap:normal]
839
+ [&_td]:[word-break:normal]
840
+ [&_th]:align-top
841
+ [&_th]:bg-base-muted-superlight
842
+ [&_th]:font-semibold
843
+ [&_th]:p-3
844
+ [&_th]:[overflow-wrap:normal]
845
+ [&_th]:[word-break:normal]
846
+ [&_thead]:border-base-muted-light
847
+ [&_tr]:border-base-muted-light
848
+ `,
849
+ className
850
+ ),
851
+ ...props
852
+ }
853
+ ) });
854
+ };
855
+ var TableScrollContainer = cm4.div`
856
+ not-prose
857
+ my-8
858
+ max-w-full overflow-x-auto
859
+ rounded-box shadow
860
+ `;
835
861
  var StyledTable = cm4.table.variants({
836
862
  base: `
837
- not-prose
838
863
  table
839
864
  w-full
865
+ min-w-[48rem]
840
866
  table-zebra
841
- mb-6
867
+ [&_td]:[overflow-wrap:normal]
868
+ [&_td]:[word-break:normal]
869
+ [&_th]:[overflow-wrap:normal]
870
+ [&_th]:[word-break:normal]
842
871
  `,
843
872
  variants: {
844
873
  $size: {
@@ -863,6 +892,7 @@ export {
863
892
  Link,
864
893
  Overview,
865
894
  RepoLink,
866
- Table
895
+ Table,
896
+ MdxTable
867
897
  };
868
- //# sourceMappingURL=chunk-LSRCZKTI.js.map
898
+ //# sourceMappingURL=chunk-AEZVNXKM.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/useSelectedChoice.ts","../src/mdx/code-blocks/CodeBlockTransformer.tsx","../src/mdx/code-blocks/FileState.tsx","../src/mdx/code-blocks/MermaidDiagram.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, useId, useRef } from 'react'\nimport { dispatchNivelAction } from '../../shared/nivelActionEvents.js'\nimport { CodeBlockHeaderMeta } from './CodeBlockHeaderMeta.js'\nimport { CodeBlockCopyButton, trimTrailingWhitespace } from './CopyButton.js'\nimport { CodeBlockGroupProvider } from './context.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 selectId = useId()\n const labelId = `${selectId}-label`\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 data-nivel-component=\"code-choice-group\"\n className=\"my-6 flex h-full min-w-0 max-w-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\" htmlFor={selectId}>\n <span id={labelId} className=\"sr-only\">\n Choose code example variant\n </span>\n <select\n id={selectId}\n aria-labelledby={labelId}\n name={`choicesFor-${choiceGroup.name}`}\n data-nivel-action=\"code.choice_change\"\n value={activeChoiceElement.props['data-choice-value']}\n onChange={(event) => {\n const choice = event.currentTarget.value\n setSelectedChoice(choice)\n dispatchNivelAction(event.currentTarget, {\n action: 'code.choice_change',\n choice,\n choiceGroup: choiceGroup.name,\n component: 'code-choice-group',\n })\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 actionDetail={{\n action: 'code.copy',\n choice: activeChoiceElement.props['data-choice-value'] ?? null,\n choiceGroup: choiceGroup.name,\n component: 'code-choice-group',\n env: activeCodeBlockMeta.env,\n label: headerLabel,\n }}\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\n ref={bodyRef}\n className=\"h-full min-w-0 max-w-full flex-1 bg-base-200! [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\"\n >\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 {env && <StyledBadge $env={effectiveEnv}>{env}</StyledBadge>}\n <div className=\"font-mono text-xs font-semibold text-base-muted\">{label}</div>\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'\nimport { dispatchNivelAction, type NivelActionEventDetail } from '../../shared/nivelActionEvents.js'\n\nconst trimTrailingWhitespace = (text: string) => {\n return text\n .split('\\n')\n .map((line) => line.trimEnd())\n .join('\\n')\n}\n\nconst CodeBlockCopyButton = ({\n actionDetail,\n onCopy,\n className = '',\n}: {\n actionDetail?: Omit<NivelActionEventDetail, 'success'>\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 data-nivel-action={actionDetail?.action}\n onClick={async (event) => {\n const button = event.currentTarget\n const success = await onCopy()\n if (actionDetail) {\n dispatchNivelAction(button, {\n ...actionDetail,\n success,\n })\n }\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, 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 { MermaidDiagram }\n\nimport { cmMerge } from '@classmatejs/react'\nimport { useEffect, useId, useState } from 'react'\n\ntype ViteImportMeta = ImportMeta & { env: { SSR?: boolean } }\ntype MermaidClientModule = typeof import('./renderMermaid.client.js')\n\nlet mermaidClientModulePromise: Promise<MermaidClientModule> | null = null\nconst MERMAID_SVG_CLASS_NAME = 'nivel-mermaid-svg'\nconst MERMAID_ROOT_CLASS_NAME = 'nivel-mermaid'\n\nconst getMermaidSvgOverrideCss = (diagramId: string) => `\n#${diagramId}.${MERMAID_SVG_CLASS_NAME} {\n font-family: var(--font-sans);\n}\n\n#${diagramId} .node rect,\n#${diagramId} .node circle,\n#${diagramId} .node ellipse,\n#${diagramId} .node polygon,\n#${diagramId} .node path {\n fill: var(--nivel-mermaid-node-fill, var(--color-primary-muted-superlight));\n stroke: var(--nivel-mermaid-node-stroke, var(--color-primary-muted-medium));\n stroke-width: var(--nivel-mermaid-node-stroke-width, 1px);\n}\n\n#${diagramId} .node .label,\n#${diagramId} .node .label text,\n#${diagramId} .nodeLabel,\n#${diagramId} .nodeLabel *,\n#${diagramId} .cluster-label text,\n#${diagramId} .label text {\n background-color: transparent;\n fill: transparent;\n color: var(--nivel-mermaid-node-text, var(--color-base-content));\n}\n\n#${diagramId} .edgeLabel,\n#${diagramId} .edgeLabel *,\n#${diagramId} .edgeLabel span,\n#${diagramId} .edgeLabel p {\n background-color: var(--nivel-mermaid-edge-label-fill, var(--color-base-100));\n color: var(--nivel-mermaid-edge-label-text, var(--nivel-mermaid-node-text, var(--color-base-content)));\n}\n\n#${diagramId} .edgePath .path,\n#${diagramId} .flowchart-link,\n#${diagramId} .relationshipLine,\n#${diagramId} .messageLine0,\n#${diagramId} .messageLine1 {\n stroke: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n stroke-width: var(--nivel-mermaid-line-width, 1.5px);\n}\n\n#${diagramId} marker path,\n#${diagramId} .marker {\n fill: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n stroke: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n}\n\n#${diagramId} .cluster rect {\n fill: var(--nivel-mermaid-cluster-fill, var(--color-base-100));\n stroke: var(--nivel-mermaid-cluster-stroke, var(--color-primary-muted-light));\n stroke-width: var(--nivel-mermaid-cluster-stroke-width, 1px);\n}\n`\n\nconst loadMermaidClient = async () => {\n if ((import.meta as ViteImportMeta).env.SSR) {\n throw new Error('Mermaid diagrams can only be rendered in the browser.')\n }\n\n mermaidClientModulePromise ??= import('./renderMermaid.client.js')\n return mermaidClientModulePromise\n}\n\nconst decorateSvg = (svg: string, diagramId: string) => {\n const svgWithClassName = svg.replace(/<svg\\b([^>]*?)>/, (match, attributes: string) => {\n const classMatch = attributes.match(/\\sclass=\"([^\"]*)\"/)\n if (classMatch) {\n const mergedClassNames = `${classMatch[1]} ${MERMAID_SVG_CLASS_NAME}`.trim()\n return `<svg${attributes.replace(/\\sclass=\"([^\"]*)\"/, ` class=\"${mergedClassNames}\"`)} data-mermaid-graphic=\"\">`\n }\n\n return `<svg${attributes} class=\"${MERMAID_SVG_CLASS_NAME}\" data-mermaid-graphic=\"\">`\n })\n\n return svgWithClassName.replace('</svg>', `<style>${getMermaidSvgOverrideCss(diagramId)}</style></svg>`)\n}\n\nconst MermaidSource = ({ source }: { source: string }) => {\n return (\n <pre className=\"sr-only\" data-mermaid-source=\"\">\n <code>{source}</code>\n </pre>\n )\n}\n\nconst MermaidDiagram = ({ className, source }: { className?: string; source: string }) => {\n const [svg, setSvg] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const diagramId = useId()\n\n useEffect(() => {\n let isActive = true\n\n const renderDiagram = async () => {\n try {\n const { renderMermaidSvg } = await loadMermaidClient()\n const renderedSvg = await renderMermaidSvg(`nivel-mermaid-${diagramId}`, source)\n\n if (!isActive) {\n return\n }\n\n setSvg(decorateSvg(renderedSvg, `nivel-mermaid-${diagramId}`))\n setError(null)\n } catch (renderError) {\n if (!isActive) {\n return\n }\n\n const message = renderError instanceof Error ? renderError.message : 'Failed to render Mermaid diagram.'\n setError(message)\n setSvg(null)\n }\n }\n\n void renderDiagram()\n\n return () => {\n isActive = false\n }\n }, [diagramId, source])\n\n if (error) {\n return (\n <div\n className={cmMerge(MERMAID_ROOT_CLASS_NAME, 'space-y-3', className)}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"error\"\n >\n <div className=\"rounded-box border border-error/30 bg-error/8 px-4 py-3 text-sm text-error\">{error}</div>\n <pre className=\"doc-code-pre m-0 overflow-x-auto bg-base-200! p-4 text-sm\">\n <code>{source}</code>\n </pre>\n </div>\n )\n }\n\n if (!svg) {\n return (\n <div\n className={cmMerge(MERMAID_ROOT_CLASS_NAME, 'space-y-3', className)}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"loading\"\n >\n <div className=\"px-4 py-10 text-center text-sm flex gap-2 items-center justify-center\">\n <span className=\"loading loading-spinner loading-md\"></span>\n Rendering diagram...\n </div>\n <MermaidSource source={source} />\n </div>\n )\n }\n\n return (\n <div\n className={cmMerge(\n MERMAID_ROOT_CLASS_NAME,\n 'overflow-x-auto bg-base-200 px-3 py-4 [&_svg]:mx-auto [&_svg]:h-auto [&_svg]:max-w-full',\n className,\n )}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"ready\"\n >\n <div dangerouslySetInnerHTML={{ __html: svg }} />\n <MermaidSource source={source} />\n </div>\n )\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 { MermaidDiagram } from './MermaidDiagram.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 render?: 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 getNodeText = (node: ReactNode): string => {\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node)\n }\n\n if (Array.isArray(node)) {\n return node.map((child) => getNodeText(child)).join('')\n }\n\n if (!isValidElement(node)) {\n return ''\n }\n\n return getNodeText((node as ReactElement<{ children?: ReactNode }>).props.children)\n}\n\nconst Pre = ({ children, className, ...props }: PreProps) => {\n const preRef = useRef<HTMLPreElement>(null)\n const isInChoiceGroup = useIsInCodeBlockGroup()\n const language = asTrimmedString(props['data-language']) ?? getLanguageFromChildren(children)\n const label =\n asTrimmedString(props['data-code-title']) ??\n getLanguageLabel({ ...props, children, 'data-language': language ?? undefined })\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 const shouldRenderMermaid = language === 'mermaid' && props.render === 'true'\n const sourceText = trimTrailingWhitespace(getNodeText(children))\n\n const copyButton =\n hideMenu || isInChoiceGroup ? null : (\n <CodeBlockCopyButton\n actionDetail={{\n action: 'code.copy',\n component: 'code-block',\n env,\n label,\n language,\n }}\n onCopy={async () => {\n const text = shouldRenderMermaid ? sourceText : 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 min-w-0 max-w-full not-prose overflow-hidden',\n isInChoiceGroup ? '' : 'rounded-box border border-base-muted-light',\n className,\n )}\n data-code-block-frame=\"\"\n data-file-state={fileState ?? undefined}\n data-nivel-component=\"code-block\"\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 {shouldRenderMermaid ? (\n <MermaidDiagram className=\"min-w-0\" source={sourceText} />\n ) : (\n <pre\n {...props}\n ref={preRef}\n className={cmMerge(\n 'doc-code-pre m-0 h-full min-w-0 max-w-full overflow-x-auto bg-base-200! p-4 text-sm',\n className,\n )}\n data-code-block-content=\"\"\n >\n {children}\n </pre>\n )}\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 my-6\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/runtime.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 cm from '@classmatejs/react'\nimport 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 = ({ href, title }: OverviewLinkItem) => {\n return (\n <StyleOverviewCard href={withSiteBaseUrl(href)}>\n <span className=\"text-lg font-semibold text-base-content\">{renderInlineMarkdown(title)}</span>\n </StyleOverviewCard>\n )\n}\n\nconst StyleOverviewCard = cm.a`\n flex h-full flex-col gap-3 \n rounded-box border \n border-base-muted-light hover:border-primary-muted\n hover:bg-primary-muted-superlight \n no-underline transition-colors \n shadow shadow-transparent hover:shadow-primary-muted-light\n p-5\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-3 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, { cmMerge } from '@classmatejs/react'\nimport type { ComponentPropsWithoutRef } from '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 <TableScrollContainer>\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 </TableScrollContainer>\n )\n}\n\nexport const MdxTable = ({ className, ...props }: ComponentPropsWithoutRef<'table'>) => {\n return (\n <TableScrollContainer>\n <table\n className={cmMerge(\n `\n table\n w-full\n min-w-[48rem]\n text-sm\n [&_code]:whitespace-nowrap\n [&_td]:align-top\n [&_td]:bg-base-200\n [&_td]:p-3\n [&_td]:[overflow-wrap:normal]\n [&_td]:[word-break:normal]\n [&_th]:align-top\n [&_th]:bg-base-muted-superlight\n [&_th]:font-semibold\n [&_th]:p-3\n [&_th]:[overflow-wrap:normal]\n [&_th]:[word-break:normal]\n [&_thead]:border-base-muted-light\n [&_tr]:border-base-muted-light\n `,\n className,\n )}\n {...props}\n />\n </TableScrollContainer>\n )\n}\n\nconst TableScrollContainer = cm.div`\n not-prose \n my-8 \n max-w-full overflow-x-auto \n rounded-box shadow\n`\n\nconst StyledTable = cm.table.variants<{ $size: TableProps['size'] }>({\n base: `\n table\n w-full\n min-w-[48rem]\n table-zebra\n [&_td]:[overflow-wrap:normal]\n [&_td]:[word-break:normal]\n [&_th]:[overflow-wrap:normal]\n [&_th]:[word-break:normal]\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":["jsx","jsx","useState","useState","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","cmMerge","useEffect","useId","useState","jsx","jsxs","jsx","useState","useId","useEffect","jsxs","cmMerge","cmMerge","Children","isValidElement","useRef","jsx","jsxs","asTrimmedString","Children","isValidElement","useRef","jsx","jsxs","cmMerge","cm","cmMerge","Check","Fragment","jsx","jsxs","cmMerge","Fragment","jsx","jsxs","cmMerge","cm","jsx","jsxs","assertUsage","cm","jsx","jsxs","cm","cmMerge","jsx","jsxs"]}
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ import {
10
10
  Pre,
11
11
  RepoLink,
12
12
  Table
13
- } from "./chunk-LSRCZKTI.js";
13
+ } from "./chunk-AEZVNXKM.js";
14
14
  import {
15
15
  NIVEL_ACTION_EVENT,
16
16
  UniversalMdxProvider,
package/dist/mdx.js CHANGED
@@ -5,11 +5,12 @@ import {
5
5
  FileAdded,
6
6
  FileRemoved,
7
7
  Link,
8
+ MdxTable,
8
9
  Overview,
9
10
  Pre,
10
11
  RepoLink,
11
12
  Table
12
- } from "./chunk-LSRCZKTI.js";
13
+ } from "./chunk-AEZVNXKM.js";
13
14
  import "./chunk-KIBIF3Y6.js";
14
15
  import "./chunk-7MAISHRP.js";
15
16
  import "./chunk-PYYPYIBD.js";
@@ -27,6 +28,7 @@ var useMDXComponents = (components) => {
27
28
  FileAdded,
28
29
  FileRemoved,
29
30
  pre: Pre,
31
+ table: MdxTable,
30
32
  ...components
31
33
  };
32
34
  };
package/dist/mdx.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mdx/index.ts"],"sourcesContent":["import {\n Alert,\n ChoiceGroup,\n CodeBlockTransformer,\n FileAdded,\n FileRemoved,\n Link,\n Overview,\n Pre,\n RepoLink,\n Table,\n} from '../index.js'\n\ntype MdxComponents = Record<string, unknown>\n\nexport const useMDXComponents = (components?: MdxComponents): MdxComponents => {\n return {\n Alert,\n Link,\n RepoLink,\n Table,\n Overview,\n ChoiceGroup,\n CodeBlockTransformer,\n FileAdded,\n FileRemoved,\n pre: Pre,\n ...components,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAeO,IAAM,mBAAmB,CAAC,eAA8C;AAC7E,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/mdx/index.ts"],"sourcesContent":["import {\n Alert,\n ChoiceGroup,\n CodeBlockTransformer,\n FileAdded,\n FileRemoved,\n Link,\n Overview,\n Pre,\n RepoLink,\n Table,\n} from '../index.js'\nimport { MdxTable } from './components/Table.js'\n\ntype MdxComponents = Record<string, unknown>\n\nexport const useMDXComponents = (components?: MdxComponents): MdxComponents => {\n return {\n Alert,\n Link,\n RepoLink,\n Table,\n Overview,\n ChoiceGroup,\n CodeBlockTransformer,\n FileAdded,\n FileRemoved,\n pre: Pre,\n table: MdxTable,\n ...components,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBO,IAAM,mBAAmB,CAAC,eAA8C;AAC7E,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,OAAO;AAAA,IACP,GAAG;AAAA,EACL;AACF;","names":[]}
@@ -0,0 +1,29 @@
1
+ // src/mdx/code-blocks/renderMermaid.client.ts
2
+ var isMermaidInitialized = false;
3
+ var mermaidModulePromise = null;
4
+ var loadMermaid = async () => {
5
+ mermaidModulePromise ??= import("mermaid").then((module) => module.default);
6
+ return mermaidModulePromise;
7
+ };
8
+ var ensureMermaidInitialized = async () => {
9
+ const mermaid = await loadMermaid();
10
+ if (isMermaidInitialized) {
11
+ return mermaid;
12
+ }
13
+ mermaid.initialize({
14
+ startOnLoad: false,
15
+ suppressErrorRendering: true,
16
+ theme: "base"
17
+ });
18
+ isMermaidInitialized = true;
19
+ return mermaid;
20
+ };
21
+ var renderMermaidSvg = async (diagramId, source) => {
22
+ const mermaid = await ensureMermaidInitialized();
23
+ const { svg } = await mermaid.render(diagramId, source);
24
+ return svg;
25
+ };
26
+ export {
27
+ renderMermaidSvg
28
+ };
29
+ //# sourceMappingURL=renderMermaid.client-J5F5DPEX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mdx/code-blocks/renderMermaid.client.ts"],"sourcesContent":["export { renderMermaidSvg }\n\nlet isMermaidInitialized = false\nlet mermaidModulePromise: Promise<typeof import('mermaid').default> | null = null\n\nconst loadMermaid = async () => {\n mermaidModulePromise ??= import('mermaid').then((module) => module.default)\n return mermaidModulePromise\n}\n\nconst ensureMermaidInitialized = async () => {\n const mermaid = await loadMermaid()\n\n if (isMermaidInitialized) {\n return mermaid\n }\n\n mermaid.initialize({\n startOnLoad: false,\n suppressErrorRendering: true,\n theme: 'base',\n })\n isMermaidInitialized = true\n\n return mermaid\n}\n\nconst renderMermaidSvg = async (diagramId: string, source: string) => {\n const mermaid = await ensureMermaidInitialized()\n const { svg } = await mermaid.render(diagramId, source)\n return svg\n}\n"],"mappings":";AAEA,IAAI,uBAAuB;AAC3B,IAAI,uBAAyE;AAE7E,IAAM,cAAc,YAAY;AAC9B,2BAAyB,OAAO,SAAS,EAAE,KAAK,CAAC,WAAW,OAAO,OAAO;AAC1E,SAAO;AACT;AAEA,IAAM,2BAA2B,YAAY;AAC3C,QAAM,UAAU,MAAM,YAAY;AAElC,MAAI,sBAAsB;AACxB,WAAO;AAAA,EACT;AAEA,UAAQ,WAAW;AAAA,IACjB,aAAa;AAAA,IACb,wBAAwB;AAAA,IACxB,OAAO;AAAA,EACT,CAAC;AACD,yBAAuB;AAEvB,SAAO;AACT;AAEA,IAAM,mBAAmB,OAAO,WAAmB,WAAmB;AACpE,QAAM,UAAU,MAAM,yBAAyB;AAC/C,QAAM,EAAE,IAAI,IAAI,MAAM,QAAQ,OAAO,WAAW,MAAM;AACtD,SAAO;AACT;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unterberg/nivel",
3
- "version": "0.2.48",
3
+ "version": "0.2.51",
4
4
  "type": "module",
5
5
  "description": "Deterministic structure engine for documentation systems",
6
6
  "sideEffects": false,
@@ -1 +0,0 @@
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/useSelectedChoice.ts","../src/mdx/code-blocks/CodeBlockTransformer.tsx","../src/mdx/code-blocks/FileState.tsx","../src/mdx/code-blocks/MermaidDiagram.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, useId, useRef } from 'react'\nimport { dispatchNivelAction } from '../../shared/nivelActionEvents.js'\nimport { CodeBlockHeaderMeta } from './CodeBlockHeaderMeta.js'\nimport { CodeBlockCopyButton, trimTrailingWhitespace } from './CopyButton.js'\nimport { CodeBlockGroupProvider } from './context.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 selectId = useId()\n const labelId = `${selectId}-label`\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 data-nivel-component=\"code-choice-group\"\n className=\"my-6 flex h-full min-w-0 max-w-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\" htmlFor={selectId}>\n <span id={labelId} className=\"sr-only\">\n Choose code example variant\n </span>\n <select\n id={selectId}\n aria-labelledby={labelId}\n name={`choicesFor-${choiceGroup.name}`}\n data-nivel-action=\"code.choice_change\"\n value={activeChoiceElement.props['data-choice-value']}\n onChange={(event) => {\n const choice = event.currentTarget.value\n setSelectedChoice(choice)\n dispatchNivelAction(event.currentTarget, {\n action: 'code.choice_change',\n choice,\n choiceGroup: choiceGroup.name,\n component: 'code-choice-group',\n })\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 actionDetail={{\n action: 'code.copy',\n choice: activeChoiceElement.props['data-choice-value'] ?? null,\n choiceGroup: choiceGroup.name,\n component: 'code-choice-group',\n env: activeCodeBlockMeta.env,\n label: headerLabel,\n }}\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\n ref={bodyRef}\n className=\"h-full min-w-0 max-w-full flex-1 bg-base-200! [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\"\n >\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 {env && <StyledBadge $env={effectiveEnv}>{env}</StyledBadge>}\n <div className=\"font-mono text-xs font-semibold text-base-muted\">{label}</div>\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'\nimport { dispatchNivelAction, type NivelActionEventDetail } from '../../shared/nivelActionEvents.js'\n\nconst trimTrailingWhitespace = (text: string) => {\n return text\n .split('\\n')\n .map((line) => line.trimEnd())\n .join('\\n')\n}\n\nconst CodeBlockCopyButton = ({\n actionDetail,\n onCopy,\n className = '',\n}: {\n actionDetail?: Omit<NivelActionEventDetail, 'success'>\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 data-nivel-action={actionDetail?.action}\n onClick={async (event) => {\n const button = event.currentTarget\n const success = await onCopy()\n if (actionDetail) {\n dispatchNivelAction(button, {\n ...actionDetail,\n success,\n })\n }\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, 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 { MermaidDiagram }\n\nimport { cmMerge } from '@classmatejs/react'\nimport { useEffect, useId, useState } from 'react'\n\nlet isMermaidInitialized = false\nlet mermaidModulePromise: Promise<typeof import('mermaid').default> | null = null\nconst MERMAID_SVG_CLASS_NAME = 'nivel-mermaid-svg'\nconst MERMAID_ROOT_CLASS_NAME = 'nivel-mermaid'\n\nconst getMermaidSvgOverrideCss = (diagramId: string) => `\n#${diagramId}.${MERMAID_SVG_CLASS_NAME} {\n font-family: var(--font-sans);\n}\n\n#${diagramId} .node rect,\n#${diagramId} .node circle,\n#${diagramId} .node ellipse,\n#${diagramId} .node polygon,\n#${diagramId} .node path {\n fill: var(--nivel-mermaid-node-fill, var(--color-primary-muted-superlight));\n stroke: var(--nivel-mermaid-node-stroke, var(--color-primary-muted-medium));\n stroke-width: var(--nivel-mermaid-node-stroke-width, 1px);\n}\n\n#${diagramId} .node .label,\n#${diagramId} .node .label text,\n#${diagramId} .nodeLabel,\n#${diagramId} .nodeLabel *,\n#${diagramId} .cluster-label text,\n#${diagramId} .label text {\n background-color: transparent;\n fill: transparent;\n color: var(--nivel-mermaid-node-text, var(--color-base-content));\n}\n\n#${diagramId} .edgeLabel,\n#${diagramId} .edgeLabel *,\n#${diagramId} .edgeLabel span,\n#${diagramId} .edgeLabel p {\n background-color: var(--nivel-mermaid-edge-label-fill, var(--color-base-100));\n color: var(--nivel-mermaid-edge-label-text, var(--nivel-mermaid-node-text, var(--color-base-content)));\n}\n\n#${diagramId} .edgePath .path,\n#${diagramId} .flowchart-link,\n#${diagramId} .relationshipLine,\n#${diagramId} .messageLine0,\n#${diagramId} .messageLine1 {\n stroke: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n stroke-width: var(--nivel-mermaid-line-width, 1.5px);\n}\n\n#${diagramId} marker path,\n#${diagramId} .marker {\n fill: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n stroke: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n}\n\n#${diagramId} .cluster rect {\n fill: var(--nivel-mermaid-cluster-fill, var(--color-base-100));\n stroke: var(--nivel-mermaid-cluster-stroke, var(--color-primary-muted-light));\n stroke-width: var(--nivel-mermaid-cluster-stroke-width, 1px);\n}\n`\n\nconst loadMermaid = async () => {\n mermaidModulePromise ??= import('mermaid').then((module) => module.default)\n return mermaidModulePromise\n}\n\nconst ensureMermaidInitialized = async () => {\n const mermaid = await loadMermaid()\n\n if (isMermaidInitialized) {\n return mermaid\n }\n\n mermaid.initialize({\n startOnLoad: false,\n suppressErrorRendering: true,\n theme: 'base',\n })\n isMermaidInitialized = true\n\n return mermaid\n}\n\nconst decorateSvg = (svg: string, diagramId: string) => {\n const svgWithClassName = svg.replace(/<svg\\b([^>]*?)>/, (match, attributes: string) => {\n const classMatch = attributes.match(/\\sclass=\"([^\"]*)\"/)\n if (classMatch) {\n const mergedClassNames = `${classMatch[1]} ${MERMAID_SVG_CLASS_NAME}`.trim()\n return `<svg${attributes.replace(/\\sclass=\"([^\"]*)\"/, ` class=\"${mergedClassNames}\"`)} data-mermaid-graphic=\"\">`\n }\n\n return `<svg${attributes} class=\"${MERMAID_SVG_CLASS_NAME}\" data-mermaid-graphic=\"\">`\n })\n\n return svgWithClassName.replace('</svg>', `<style>${getMermaidSvgOverrideCss(diagramId)}</style></svg>`)\n}\n\nconst MermaidSource = ({ source }: { source: string }) => {\n return (\n <pre className=\"sr-only\" data-mermaid-source=\"\">\n <code>{source}</code>\n </pre>\n )\n}\n\nconst MermaidDiagram = ({ className, source }: { className?: string; source: string }) => {\n const [svg, setSvg] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const diagramId = useId()\n\n useEffect(() => {\n let isActive = true\n\n const renderDiagram = async () => {\n try {\n const mermaid = await ensureMermaidInitialized()\n const { svg: renderedSvg } = await mermaid.render(`nivel-mermaid-${diagramId}`, source)\n\n if (!isActive) {\n return\n }\n\n setSvg(decorateSvg(renderedSvg, `nivel-mermaid-${diagramId}`))\n setError(null)\n } catch (renderError) {\n if (!isActive) {\n return\n }\n\n const message = renderError instanceof Error ? renderError.message : 'Failed to render Mermaid diagram.'\n setError(message)\n setSvg(null)\n }\n }\n\n void renderDiagram()\n\n return () => {\n isActive = false\n }\n }, [diagramId, source])\n\n if (error) {\n return (\n <div\n className={cmMerge(MERMAID_ROOT_CLASS_NAME, 'space-y-3', className)}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"error\"\n >\n <div className=\"rounded-box border border-error/30 bg-error/8 px-4 py-3 text-sm text-error\">{error}</div>\n <pre className=\"doc-code-pre m-0 overflow-x-auto bg-base-200! p-4 text-sm\">\n <code>{source}</code>\n </pre>\n </div>\n )\n }\n\n if (!svg) {\n return (\n <div\n className={cmMerge(MERMAID_ROOT_CLASS_NAME, 'space-y-3', className)}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"loading\"\n >\n <div className=\"px-4 py-10 text-center text-sm flex gap-2 items-center justify-center\">\n <span className=\"loading loading-spinner loading-md\"></span>\n Rendering diagram...\n </div>\n <MermaidSource source={source} />\n </div>\n )\n }\n\n return (\n <div\n className={cmMerge(\n MERMAID_ROOT_CLASS_NAME,\n 'overflow-x-auto bg-base-200 px-3 py-4 [&_svg]:mx-auto [&_svg]:h-auto [&_svg]:max-w-full',\n className,\n )}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"ready\"\n >\n <div dangerouslySetInnerHTML={{ __html: svg }} />\n <MermaidSource source={source} />\n </div>\n )\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 { MermaidDiagram } from './MermaidDiagram.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 render?: 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 getNodeText = (node: ReactNode): string => {\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node)\n }\n\n if (Array.isArray(node)) {\n return node.map((child) => getNodeText(child)).join('')\n }\n\n if (!isValidElement(node)) {\n return ''\n }\n\n return getNodeText((node as ReactElement<{ children?: ReactNode }>).props.children)\n}\n\nconst Pre = ({ children, className, ...props }: PreProps) => {\n const preRef = useRef<HTMLPreElement>(null)\n const isInChoiceGroup = useIsInCodeBlockGroup()\n const language = asTrimmedString(props['data-language']) ?? getLanguageFromChildren(children)\n const label =\n asTrimmedString(props['data-code-title']) ??\n getLanguageLabel({ ...props, children, 'data-language': language ?? undefined })\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 const shouldRenderMermaid = language === 'mermaid' && props.render === 'true'\n const sourceText = trimTrailingWhitespace(getNodeText(children))\n\n const copyButton =\n hideMenu || isInChoiceGroup ? null : (\n <CodeBlockCopyButton\n actionDetail={{\n action: 'code.copy',\n component: 'code-block',\n env,\n label,\n language,\n }}\n onCopy={async () => {\n const text = shouldRenderMermaid ? sourceText : 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 min-w-0 max-w-full not-prose overflow-hidden',\n isInChoiceGroup ? '' : 'rounded-box border border-base-muted-light',\n className,\n )}\n data-code-block-frame=\"\"\n data-file-state={fileState ?? undefined}\n data-nivel-component=\"code-block\"\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 {shouldRenderMermaid ? (\n <MermaidDiagram className=\"min-w-0\" source={sourceText} />\n ) : (\n <pre\n {...props}\n ref={preRef}\n className={cmMerge(\n 'doc-code-pre m-0 h-full min-w-0 max-w-full overflow-x-auto bg-base-200! p-4 text-sm',\n className,\n )}\n data-code-block-content=\"\"\n >\n {children}\n </pre>\n )}\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 my-6\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/runtime.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 cm from '@classmatejs/react'\nimport 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 = ({ href, title }: OverviewLinkItem) => {\n return (\n <StyleOverviewCard href={withSiteBaseUrl(href)}>\n <span className=\"text-lg font-semibold text-base-content\">{renderInlineMarkdown(title)}</span>\n </StyleOverviewCard>\n )\n}\n\nconst StyleOverviewCard = cm.a`\n flex h-full flex-col gap-3 \n rounded-box border \n border-base-muted-light hover:border-primary-muted\n hover:bg-primary-muted-superlight \n no-underline transition-colors \n shadow shadow-transparent hover:shadow-primary-muted-light\n p-5\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-3 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 <div className=\"overflow-x-auto\">\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 </div>\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":["jsx","jsx","useState","useState","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","cmMerge","useEffect","useId","useState","jsx","jsxs","jsx","useState","useId","useEffect","jsxs","cmMerge","cmMerge","Children","isValidElement","useRef","jsx","jsxs","asTrimmedString","Children","isValidElement","useRef","jsx","jsxs","cmMerge","cm","cmMerge","Check","Fragment","jsx","jsxs","cmMerge","Fragment","jsx","jsxs","cmMerge","cm","jsx","jsxs","assertUsage","cm","jsx","jsxs","cm","jsx","jsxs"]}