@livemark/markdown 0.0.0-stage → 0.44.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +9 -0
- package/README.md +5 -2
- package/build/actions/markdown/compile.d.ts +27 -0
- package/build/actions/markdown/compile.js +48 -0
- package/build/actions/processor/create.d.ts +17 -0
- package/build/actions/processor/create.js +212 -0
- package/build/components/Abbr.d.ts +5 -0
- package/build/components/Abbr.js +7 -0
- package/build/components/AnsiCode.d.ts +4 -0
- package/build/components/AnsiCode.js +7 -0
- package/build/components/Audio.d.ts +4 -0
- package/build/components/Audio.js +9 -0
- package/build/components/Badge.d.ts +5 -0
- package/build/components/Badge.js +7 -0
- package/build/components/Button.d.ts +7 -0
- package/build/components/Button.js +11 -0
- package/build/components/Callout.d.ts +8 -0
- package/build/components/Callout.js +41 -0
- package/build/components/Card.d.ts +7 -0
- package/build/components/Card.js +16 -0
- package/build/components/Cards.d.ts +4 -0
- package/build/components/Cards.js +6 -0
- package/build/components/CodeBlock.d.ts +1 -0
- package/build/components/CodeBlock.js +50 -0
- package/build/components/CodeTabs.d.ts +6 -0
- package/build/components/CodeTabs.js +48 -0
- package/build/components/Column.d.ts +4 -0
- package/build/components/Column.js +6 -0
- package/build/components/Columns.d.ts +5 -0
- package/build/components/Columns.js +8 -0
- package/build/components/DefinitionList.d.ts +7 -0
- package/build/components/DefinitionList.js +14 -0
- package/build/components/Details.d.ts +5 -0
- package/build/components/Details.js +10 -0
- package/build/components/Filetree.d.ts +4 -0
- package/build/components/Filetree.js +22 -0
- package/build/components/FootnoteRef.d.ts +4 -0
- package/build/components/FootnoteRef.js +33 -0
- package/build/components/Heading.d.ts +8 -0
- package/build/components/Heading.js +18 -0
- package/build/components/Icon.d.ts +5 -0
- package/build/components/Icon.js +10 -0
- package/build/components/Markdown.d.ts +13 -0
- package/build/components/Markdown.js +75 -0
- package/build/components/Mermaid.d.ts +4 -0
- package/build/components/Mermaid.js +10 -0
- package/build/components/MermaidRenderer.d.ts +4 -0
- package/build/components/MermaidRenderer.js +44 -0
- package/build/components/PackageTabs.d.ts +9 -0
- package/build/components/PackageTabs.js +26 -0
- package/build/components/SortableTable.d.ts +5 -0
- package/build/components/SortableTable.js +63 -0
- package/build/components/Tab.d.ts +5 -0
- package/build/components/Tab.js +6 -0
- package/build/components/Tabs.d.ts +5 -0
- package/build/components/Tabs.js +46 -0
- package/build/components/Toc.d.ts +4 -0
- package/build/components/Toc.js +14 -0
- package/build/components/Video.d.ts +4 -0
- package/build/components/Video.js +13 -0
- package/build/components/ZoomImage.d.ts +4 -0
- package/build/components/ZoomImage.js +26 -0
- package/build/elements/badge.d.ts +7 -0
- package/build/elements/badge.js +36 -0
- package/build/elements/button.d.ts +8 -0
- package/build/elements/button.js +37 -0
- package/build/elements/card.d.ts +11 -0
- package/build/elements/card.js +25 -0
- package/build/elements/collapsible.d.ts +5 -0
- package/build/elements/collapsible.js +13 -0
- package/build/elements/hover-card.d.ts +5 -0
- package/build/elements/hover-card.js +14 -0
- package/build/elements/separator.d.ts +3 -0
- package/build/elements/separator.js +8 -0
- package/build/elements/table.d.ts +9 -0
- package/build/elements/table.js +28 -0
- package/build/elements/tooltip.d.ts +6 -0
- package/build/elements/tooltip.js +17 -0
- package/build/helpers/ansi.d.ts +3 -0
- package/build/helpers/ansi.js +208 -0
- package/build/helpers/article-link.d.ts +7 -0
- package/build/helpers/article-link.js +8 -0
- package/build/helpers/code-icon.d.ts +2 -0
- package/build/helpers/code-icon.js +57 -0
- package/build/helpers/content-warnings.d.ts +8 -0
- package/build/helpers/content-warnings.js +47 -0
- package/build/helpers/dynamic-icon-resolver.d.ts +5 -0
- package/build/helpers/dynamic-icon-resolver.js +11 -0
- package/build/helpers/dynamic-icon.d.ts +5 -0
- package/build/helpers/dynamic-icon.js +14 -0
- package/build/helpers/frontmatter.d.ts +5 -0
- package/build/helpers/frontmatter.js +16 -0
- package/build/helpers/icon-names.d.ts +11 -0
- package/build/helpers/icon-names.js +35 -0
- package/build/helpers/message-format.d.ts +2 -0
- package/build/helpers/message-format.js +7 -0
- package/build/helpers/node-text.d.ts +9 -0
- package/build/helpers/node-text.js +9 -0
- package/build/helpers/site-messages.d.ts +86 -0
- package/build/helpers/site-messages.js +7 -0
- package/build/helpers/toc-context.d.ts +5 -0
- package/build/helpers/toc-context.js +8 -0
- package/build/helpers/toc-outline.d.ts +3 -0
- package/build/helpers/toc-outline.js +16 -0
- package/build/helpers/youtube-id.d.ts +2 -0
- package/build/helpers/youtube-id.js +25 -0
- package/build/hooks/icons.d.ts +13 -0
- package/build/hooks/icons.js +12 -0
- package/build/hooks/messages.d.ts +95 -0
- package/build/hooks/messages.js +17 -0
- package/build/models/message.d.ts +177 -0
- package/build/models/message.js +88 -0
- package/build/models/plugins.d.ts +10 -0
- package/build/models/plugins.js +6 -0
- package/build/models/theme.d.ts +76 -0
- package/build/models/theme.js +71 -0
- package/build/models/toc.d.ts +5 -0
- package/build/models/toc.js +2 -0
- package/build/plugins/twoslash.d.ts +13 -0
- package/build/plugins/twoslash.js +146 -0
- package/package.json +63 -3
- package/source/actions/markdown/compile.ts +82 -0
- package/source/actions/processor/create.ts +235 -0
- package/source/components/Abbr.tsx +13 -0
- package/source/components/AnsiCode.tsx +17 -0
- package/source/components/Audio.tsx +18 -0
- package/source/components/Badge.tsx +9 -0
- package/source/components/Button.tsx +33 -0
- package/source/components/Callout.tsx +68 -0
- package/source/components/Card.tsx +48 -0
- package/source/components/Cards.tsx +8 -0
- package/source/components/CodeBlock.tsx +144 -0
- package/source/components/CodeTabs.tsx +81 -0
- package/source/components/Column.tsx +4 -0
- package/source/components/Columns.tsx +10 -0
- package/source/components/DefinitionList.tsx +18 -0
- package/source/components/Details.tsx +30 -0
- package/source/components/Filetree.tsx +63 -0
- package/source/components/FootnoteRef.tsx +52 -0
- package/source/components/Heading.tsx +20 -0
- package/source/components/Icon.tsx +10 -0
- package/source/components/Markdown.tsx +89 -0
- package/source/components/Mermaid.tsx +20 -0
- package/source/components/MermaidRenderer.tsx +48 -0
- package/source/components/PackageTabs.tsx +72 -0
- package/source/components/SortableTable.tsx +81 -0
- package/source/components/Tab.tsx +4 -0
- package/source/components/Tabs.tsx +75 -0
- package/source/components/Toc.tsx +30 -0
- package/source/components/Video.tsx +28 -0
- package/source/components/ZoomImage.tsx +25 -0
- package/source/elements/badge.tsx +53 -0
- package/source/elements/button.tsx +61 -0
- package/source/elements/card.tsx +102 -0
- package/source/elements/collapsible.tsx +15 -0
- package/source/elements/hover-card.tsx +47 -0
- package/source/elements/separator.tsx +22 -0
- package/source/elements/table.tsx +103 -0
- package/source/elements/tooltip.tsx +60 -0
- package/source/helpers/ansi.ts +210 -0
- package/source/helpers/article-link.ts +11 -0
- package/source/helpers/code-icon.ts +59 -0
- package/source/helpers/content-warnings.ts +56 -0
- package/source/helpers/dynamic-icon-resolver.tsx +9 -0
- package/source/helpers/dynamic-icon.tsx +19 -0
- package/source/helpers/frontmatter.ts +16 -0
- package/source/helpers/icon-names.ts +37 -0
- package/source/helpers/message-format.ts +5 -0
- package/source/helpers/node-text.ts +14 -0
- package/source/helpers/site-messages.ts +8 -0
- package/source/helpers/toc-context.ts +10 -0
- package/source/helpers/toc-outline.ts +23 -0
- package/source/helpers/youtube-id.ts +23 -0
- package/source/hooks/icons.ts +18 -0
- package/source/hooks/messages.ts +28 -0
- package/source/models/message.ts +96 -0
- package/source/models/plugins.ts +11 -0
- package/source/models/theme.ts +78 -0
- package/source/models/toc.ts +5 -0
- package/source/plugins/twoslash.ts +163 -0
- package/source/standalone.css +7 -0
- package/source/styles/general.css +214 -0
- package/source/styles/markdown.css +231 -0
- package/source/styles/shape.css +14 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Check, ChevronDown, Clipboard, WrapText } from "lucide-react";
|
|
3
|
+
import { isValidElement, useRef, useState } from "react";
|
|
4
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "../elements/tooltip.js";
|
|
5
|
+
import { readCodeIcon } from "../helpers/code-icon.js";
|
|
6
|
+
import { useMessages } from "../hooks/messages.js";
|
|
7
|
+
export function CodeBlock(props) {
|
|
8
|
+
const [copied, setCopied] = useState(false);
|
|
9
|
+
const t = useMessages();
|
|
10
|
+
const [wrap, setWrap] = useState(false);
|
|
11
|
+
const [expanded, setExpanded] = useState(false);
|
|
12
|
+
const preRef = useRef(null);
|
|
13
|
+
const extra = props;
|
|
14
|
+
const meta = extra["data-meta"];
|
|
15
|
+
const title = meta?.match(/title="([^"]+)"/)?.[1];
|
|
16
|
+
const maxLines = meta?.match(/maxLines=(\d+)/)?.[1];
|
|
17
|
+
const icon = readCodeIcon(readLanguage(props.children));
|
|
18
|
+
const lineNumbers = meta?.match(/\blineNumbers(?:=(\d+))?(?!\S)/);
|
|
19
|
+
const style = props.style;
|
|
20
|
+
const collapsedHeight = maxLines ? `${Number(maxLines) * 1.5 + 1.75}rem` : undefined;
|
|
21
|
+
const handleCopy = () => {
|
|
22
|
+
const text = preRef.current?.textContent ?? "";
|
|
23
|
+
navigator.clipboard.writeText(text);
|
|
24
|
+
setCopied(true);
|
|
25
|
+
setTimeout(() => setCopied(false), 2000);
|
|
26
|
+
};
|
|
27
|
+
const handleWrapToggle = () => {
|
|
28
|
+
setWrap(prev => !prev);
|
|
29
|
+
};
|
|
30
|
+
return (_jsxs("figure", { className: "shiki not-prose my-4 relative rounded-card border shadow-sm overflow-hidden text-sm bg-sidebar dark:bg-sidebar", style: { ...style, backgroundColor: undefined }, children: [title ? (_jsxs("div", { className: "flex items-center gap-2 h-9.5 border-b px-4 text-muted-foreground", children: [icon && (_jsx("span", { className: "size-3.5 [&>svg]:size-full", dangerouslySetInnerHTML: { __html: icon } })), _jsx("span", { className: "flex-1 truncate text-xs font-medium", children: title }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { onClick: handleWrapToggle, "aria-label": wrap ? t("code.wrapOff") : t("code.wrapOn"), className: `-me-2 p-1.5 rounded-control hover:text-foreground transition-colors ${wrap ? "text-foreground" : ""}`, children: _jsx(WrapText, { className: "size-3.5" }) }), _jsx(TooltipContent, { children: wrap ? t("code.wrapOff") : t("code.wrapOn") })] }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { onClick: handleCopy, "aria-label": copied ? t("code.copied") : t("code.copy"), className: "-me-2 p-1.5 rounded-control hover:text-foreground transition-colors", children: copied ? (_jsx(Check, { className: "size-3.5" })) : (_jsx(Clipboard, { className: "size-3.5" })) }), _jsx(TooltipContent, { children: copied ? t("code.copied") : t("code.copy") })] })] })) : (_jsxs("div", { className: "empty:hidden absolute top-2 right-2 z-10 backdrop-blur-lg rounded-control text-muted-foreground", children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { onClick: handleWrapToggle, "aria-label": wrap ? t("code.wrapOff") : t("code.wrapOn"), className: `p-1.5 rounded-control hover:text-foreground transition-colors ${wrap ? "text-foreground" : ""}`, children: _jsx(WrapText, { className: "size-3.5" }) }), _jsx(TooltipContent, { children: wrap ? t("code.wrapOff") : t("code.wrapOn") })] }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { onClick: handleCopy, "aria-label": copied ? t("code.copied") : t("code.copy"), className: "p-1.5 rounded-control hover:text-foreground transition-colors", children: copied ? (_jsx(Check, { className: "size-3.5" })) : (_jsx(Clipboard, { className: "size-3.5" })) }), _jsx(TooltipContent, { children: copied ? t("code.copied") : t("code.copy") })] })] })), _jsx("div", { className: "text-[0.8125rem] py-3.5 overflow-auto transition-[max-height] duration-300", style: {
|
|
31
|
+
maxHeight: collapsedHeight && !expanded ? collapsedHeight : "600px",
|
|
32
|
+
}, children: _jsx("pre", { ...props, ref: preRef, style: lineNumbers
|
|
33
|
+
? { counterReset: `line ${Number(lineNumbers[1] ?? 1) - 1}` }
|
|
34
|
+
: undefined, className: [
|
|
35
|
+
props.className,
|
|
36
|
+
lineNumbers && "line-numbers",
|
|
37
|
+
wrap
|
|
38
|
+
? "min-w-full whitespace-pre-wrap break-words [&>code]:flex [&>code]:flex-col"
|
|
39
|
+
: "min-w-full w-max [&>code]:flex [&>code]:flex-col",
|
|
40
|
+
]
|
|
41
|
+
.filter(Boolean)
|
|
42
|
+
.join(" ") }) }), collapsedHeight && !expanded && (_jsxs("button", { type: "button", onClick: () => setExpanded(true), className: "flex items-center justify-center gap-1 w-full py-1.5 text-xs text-muted-foreground hover:text-foreground border-t cursor-pointer transition-colors", children: [_jsx(ChevronDown, { className: "size-3.5" }), t("code.expand")] }))] }));
|
|
43
|
+
}
|
|
44
|
+
// html.highlight names the language in a class of the `<code>` inside `<pre>`
|
|
45
|
+
function readLanguage(children) {
|
|
46
|
+
if (!isValidElement(children))
|
|
47
|
+
return undefined;
|
|
48
|
+
return children.props.className?.match(/\blanguage-(\S+)/)?.[1];
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29kZUJsb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvQ29kZUJsb2NrLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFFeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXlCLENBQUE7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVsRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWtDO0lBQzFELE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNDLE1BQU0sQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFBO0lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9DLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDLENBQUE7SUFDM0MsTUFBTSxLQUFLLEdBQUcsS0FBZ0MsQ0FBQTtJQUM5QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsV0FBVyxDQUF1QixDQUFBO0lBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sUUFBUSxHQUFHLElB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O2lCQUNwRSxZQUVELGlCQUNNLEtBQUssRUFDVCxHQUFHLEVBQUUsTUFBTSxFQUNYLEtBQUssRUFDSCxXQUFXO3dCQUNULENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxRQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7d0JBQzdELENBQUMsQ0FBQyxTQUFTLEVBRWYsU0FBUyxFQUFFO3dCQUNULEtBQUssQ0FBQyxTQUFTO3dCQUNmLFdBQVcsSUFBSSxjQUFjO3dCQUM3QixJQUFJOzRCQUNGLENBQUMsQ0FBQyw0RUFBNEU7NEJBQzlFLENBQUMsQ0FBQyxrREFBa0Q7cUJBQ3ZEO3lCQUNFLE1BQU0sQ0FBQyxPQUFPLENBQUM7eUJBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUNaLEdBQ0UsRUFDTCxlQUFlLElBQUksQ0FBQyxRQUFRLElBQUksQ0FDL0Isa0JBQ0UsSUFBSSxFQUFDLFFBQVEsRUFDYixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUNoQyxTQUFTLEVBQUMsb0pBQW9KLGFBRTlKLEtBQUMsV0FBVyxJQUFDLFNBQVMsRUFBQyxVQUFVLEdBQUcsRUFDbkMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUNWLENBQ1YsSUFDTSxDQUNWLENBQUE7QUFDSCxDQUFDO0FBRUQsOEVBQThFO0FBQzlFLFNBQVMsWUFBWSxDQUFDLFFBQW1CO0lBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQXlCLFFBQVEsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQ3ZFLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25Eb3duLCBDbGlwYm9hcmQsIFdyYXBUZXh0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQgeyBpc1ZhbGlkRWxlbWVudCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBUb29sdGlwLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vZWxlbWVudHMvdG9vbHRpcC50c3hcIlxuaW1wb3J0IHsgcmVhZENvZGVJY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29kZS1pY29uLnRzXCJcbmltcG9ydCB7IHVzZU1lc3NhZ2VzIH0gZnJvbSBcIi4uL2hvb2tzL21lc3NhZ2VzLnRzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIENvZGVCbG9jayhwcm9wczogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJwcmVcIj4pIHtcbiAgY29uc3QgW2NvcGllZCwgc2V0Q29waWVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0ID0gdXNlTWVzc2FnZXMoKVxuICBjb25zdCBbd3JhcCwgc2V0V3JhcF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2V4cGFuZGVkLCBzZXRFeHBhbmRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgcHJlUmVmID0gdXNlUmVmPEhUTUxQcmVFbGVtZW50PihudWxsKVxuICBjb25zdCBleHRyYSA9IHByb3BzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGNvbnN0IG1ldGEgPSBleHRyYVtcImRhdGEtbWV0YVwiXSBhcyBzdHJpbmcgfCB1bmRlZmluZWRcbiAgY29uc3QgdGl0bGUgPSBtZXRhPy5tYXRjaCgvdGl0bGU9XCIoW15cIl0rKVwiLyk/LlsxXVxuICBjb25zdCBtYXhMaW5lcyA9IG1ldGE/Lm1hdGNoKC9tYXhMaW5lcz0oXFxkKykvKT8uWzFdXG4gIGNvbnN0IGljb24gPSByZWFkQ29kZUljb24ocmVhZExhbmd1YWdlKHByb3BzLmNoaWxkcmVuKSlcbiAgY29uc3QgbGluZU51bWJlcnMgPSBtZXRhPy5tYXRjaCgvXFxibGluZU51bWJlcnMoPzo9KFxcZCspKT8oPyFcXFMpLylcbiAgY29uc3Qgc3R5bGUgPSBwcm9wcy5zdHlsZSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4gIGNvbnN0IGNvbGxhcHNlZEhlaWdodCA9IG1heExpbmVzID8gYCR7TnVtYmVyKG1heExpbmVzKSAqIDEuNSArIDEuNzV9cmVtYCA6IHVuZGVmaW5lZFxuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgY29uc3QgdGV4dCA9IHByZVJlZi5jdXJyZW50Py50ZXh0Q29udGVudCA/PyBcIlwiXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dClcbiAgICBzZXRDb3BpZWQodHJ1ZSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHNldENvcGllZChmYWxzZSksIDIwMDApXG4gIH1cblxuICBjb25zdCBoYW5kbGVXcmFwVG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFdyYXAocHJldiA9PiAhcHJldilcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGZpZ3VyZVxuICAgICAgY2xhc3NOYW1lPVwic2hpa2kgbm90LXByb3NlIG15LTQgcmVsYXRpdmUgcm91bmRlZC1jYXJkIGJvcmRlciBzaGFkb3ctc20gb3ZlcmZsb3ctaGlkZGVuIHRleHQtc20gYmctc2lkZWJhciBkYXJrOmJnLXNpZGViYXJcIlxuICAgICAgc3R5bGU9e3sgLi4uc3R5bGUsIGJhY2tncm91bmRDb2xvcjogdW5kZWZpbmVkIH19XG4gICAgPlxuICAgICAge3RpdGxlID8gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGgtOS41IGJvcmRlci1iIHB4LTQgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAge2ljb24gJiYgKFxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2l6ZS0zLjUgWyY+c3ZnXTpzaXplLWZ1bGxcIlxuICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGljb24gfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4LTEgdHJ1bmNhdGUgdGV4dC14cyBmb250LW1lZGl1bVwiPnt0aXRsZX08L3NwYW4+XG4gICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICA8VG9vbHRpcFRyaWdnZXJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlV3JhcFRvZ2dsZX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17d3JhcCA/IHQoXCJjb2RlLndyYXBPZmZcIikgOiB0KFwiY29kZS53cmFwT25cIil9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YC1tZS0yIHAtMS41IHJvdW5kZWQtY29udHJvbCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMgJHt3cmFwID8gXCJ0ZXh0LWZvcmVncm91bmRcIiA6IFwiXCJ9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFdyYXBUZXh0IGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz5cbiAgICAgICAgICAgIDwvVG9vbHRpcFRyaWdnZXI+XG4gICAgICAgICAgICA8VG9vbHRpcENvbnRlbnQ+e3dyYXAgPyB0KFwiY29kZS53cmFwT2ZmXCIpIDogdChcImNvZGUud3JhcE9uXCIpfTwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgIDxUb29sdGlwPlxuICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2NvcGllZCA/IHQoXCJjb2RlLmNvcGllZFwiKSA6IHQoXCJjb2RlLmNvcHlcIil9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cIi1tZS0yIHAtMS41IHJvdW5kZWQtY29udHJvbCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7Y29waWVkID8gKFxuICAgICAgICAgICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJzaXplLTMuNVwiIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPENsaXBib2FyZCBjbGFzc05hbWU9XCJzaXplLTMuNVwiIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgPFRvb2x0aXBDb250ZW50Pntjb3BpZWQgPyB0KFwiY29kZS5jb3BpZWRcIikgOiB0KFwiY29kZS5jb3B5XCIpfTwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkgOiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZW1wdHk6aGlkZGVuIGFic29sdXRlIHRvcC0yIHJpZ2h0LTIgei0xMCBiYWNrZHJvcC1ibHVyLWxnIHJvdW5kZWQtY29udHJvbCB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICA8VG9vbHRpcD5cbiAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlclxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVXcmFwVG9nZ2xlfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt3cmFwID8gdChcImNvZGUud3JhcE9mZlwiKSA6IHQoXCJjb2RlLndyYXBPblwiKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcC0xLjUgcm91bmRlZC1jb250cm9sIGhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9ycyAke3dyYXAgPyBcInRleHQtZm9yZWdyb3VuZFwiIDogXCJcIn1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8V3JhcFRleHQgY2xhc3NOYW1lPVwic2l6ZS0zLjVcIiAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgIDxUb29sdGlwQ29udGVudD57d3JhcCA/IHQoXCJjb2RlLndyYXBPZmZcIikgOiB0KFwiY29kZS53cmFwT25cIil9PC9Ub29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICA8VG9vbHRpcFRyaWdnZXJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29weX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Y29waWVkID8gdChcImNvZGUuY29waWVkXCIpIDogdChcImNvZGUuY29weVwiKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicC0xLjUgcm91bmRlZC1jb250cm9sIGhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtjb3BpZWQgPyAoXG4gICAgICAgICAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8Q2xpcGJvYXJkIGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVG9vbHRpcFRyaWdnZXI+XG4gICAgICAgICAgICA8VG9vbHRpcENvbnRlbnQ+e2NvcGllZCA/IHQoXCJjb2RlLmNvcGllZFwiKSA6IHQoXCJjb2RlLmNvcHlcIil9PC9Ub29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1bMC44MTI1cmVtXSBweS0zLjUgb3ZlcmZsb3ctYXV0byB0cmFuc2l0aW9uLVttYXgtaGVpZ2h0XSBkdXJhdGlvbi0zMDBcIlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIG1heEhlaWdodDogY29sbGFwc2VkSGVpZ2h0ICYmICFleHBhbmRlZCA/IGNvbGxhcHNlZEhlaWdodCA6IFwiNjAwcHhcIixcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPHByZVxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICByZWY9e3ByZVJlZn1cbiAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICBsaW5lTnVtYmVyc1xuICAgICAgICAgICAgICA/IHsgY291bnRlclJlc2V0OiBgbGluZSAke051bWJlcihsaW5lTnVtYmVyc1sxXSA/PyAxKSAtIDF9YCB9XG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIGNsYXNzTmFtZT17W1xuICAgICAgICAgICAgcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgICAgbGluZU51bWJlcnMgJiYgXCJsaW5lLW51bWJlcnNcIixcbiAgICAgICAgICAgIHdyYXBcbiAgICAgICAgICAgICAgPyBcIm1pbi13LWZ1bGwgd2hpdGVzcGFjZS1wcmUtd3JhcCBicmVhay13b3JkcyBbJj5jb2RlXTpmbGV4IFsmPmNvZGVdOmZsZXgtY29sXCJcbiAgICAgICAgICAgICAgOiBcIm1pbi13LWZ1bGwgdy1tYXggWyY+Y29kZV06ZmxleCBbJj5jb2RlXTpmbGV4LWNvbFwiLFxuICAgICAgICAgIF1cbiAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgIC5qb2luKFwiIFwiKX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAge2NvbGxhcHNlZEhlaWdodCAmJiAhZXhwYW5kZWQgJiYgKFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0RXhwYW5kZWQodHJ1ZSl9XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTEgdy1mdWxsIHB5LTEuNSB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgYm9yZGVyLXQgY3Vyc29yLXBvaW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICA+XG4gICAgICAgICAgPENoZXZyb25Eb3duIGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz5cbiAgICAgICAgICB7dChcImNvZGUuZXhwYW5kXCIpfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9maWd1cmU+XG4gIClcbn1cblxuLy8gaHRtbC5oaWdobGlnaHQgbmFtZXMgdGhlIGxhbmd1YWdlIGluIGEgY2xhc3Mgb2YgdGhlIGA8Y29kZT5gIGluc2lkZSBgPHByZT5gXG5mdW5jdGlvbiByZWFkTGFuZ3VhZ2UoY2hpbGRyZW46IFJlYWN0Tm9kZSkge1xuICBpZiAoIWlzVmFsaWRFbGVtZW50PHsgY2xhc3NOYW1lPzogc3RyaW5nIH0+KGNoaWxkcmVuKSkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gY2hpbGRyZW4ucHJvcHMuY2xhc3NOYW1lPy5tYXRjaCgvXFxibGFuZ3VhZ2UtKFxcUyspLyk/LlsxXVxufVxuIl19
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Children, useEffect, useState } from "react";
|
|
3
|
+
/** Tabbed code block component for grouping multiple code blocks with optional sync */
|
|
4
|
+
export function CodeTabs(props) {
|
|
5
|
+
const names = JSON.parse(props.tabs);
|
|
6
|
+
const children = Children.toArray(props.children);
|
|
7
|
+
const getInitialIndex = () => {
|
|
8
|
+
if (!props.sync)
|
|
9
|
+
return 0;
|
|
10
|
+
const saved = typeof window !== "undefined"
|
|
11
|
+
? localStorage.getItem("livemark-tab-" + props.sync)
|
|
12
|
+
: null;
|
|
13
|
+
if (!saved)
|
|
14
|
+
return 0;
|
|
15
|
+
const idx = names.indexOf(saved);
|
|
16
|
+
return idx >= 0 ? idx : 0;
|
|
17
|
+
};
|
|
18
|
+
const [active, setActive] = useState(getInitialIndex);
|
|
19
|
+
const handleSelect = (i) => {
|
|
20
|
+
setActive(i);
|
|
21
|
+
if (props.sync) {
|
|
22
|
+
localStorage.setItem("livemark-tab-" + props.sync, names[i]);
|
|
23
|
+
window.dispatchEvent(new CustomEvent("livemark-tab-sync", {
|
|
24
|
+
detail: { sync: props.sync, title: names[i] },
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (!props.sync)
|
|
30
|
+
return;
|
|
31
|
+
const handler = (e) => {
|
|
32
|
+
const { sync, title } = e.detail;
|
|
33
|
+
if (sync !== props.sync)
|
|
34
|
+
return;
|
|
35
|
+
const idx = names.indexOf(title);
|
|
36
|
+
if (idx >= 0)
|
|
37
|
+
setActive(idx);
|
|
38
|
+
};
|
|
39
|
+
window.addEventListener("livemark-tab-sync", handler);
|
|
40
|
+
return () => window.removeEventListener("livemark-tab-sync", handler);
|
|
41
|
+
}, [props.sync, names]);
|
|
42
|
+
return (_jsxs("div", { className: "not-prose my-4 rounded-card border shadow-sm overflow-hidden text-sm bg-sidebar dark:bg-sidebar", children: [_jsx("div", { className: "flex border-b", children: names.map((name, i) => (_jsx("button", { type: "button", onClick: () => handleSelect(i), className: `px-4 py-2 text-xs font-medium transition-colors cursor-pointer ${i === active
|
|
43
|
+
? "text-foreground border-b-2 border-primary -mb-px"
|
|
44
|
+
: "text-muted-foreground hover:text-foreground"}`, children: name }, name))) }), children.map((child, i) => (_jsx("div", { className: i === active
|
|
45
|
+
? "[&>figure]:my-0 [&>figure]:rounded-none [&>figure]:border-0 [&>figure]:shadow-none"
|
|
46
|
+
: "hidden", children: child }, names[i])))] }));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29kZVRhYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9Db2RlVGFicy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUVyRCx1RkFBdUY7QUFDdkYsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUl4QjtJQUNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBYSxDQUFBO0lBQ2hELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRWpELE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRTtRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7WUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN6QixNQUFNLEtBQUssR0FDVCxPQUFPLE1BQU0sS0FBSyxXQUFXO1lBQzNCLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3BELENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDVixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzQixDQUFDLENBQUE7SUFFRCxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUVyRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFO1FBQ2pDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNaLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQTtZQUM3RCxNQUFNLENBQUMsYUFBYSxDQUNsQixJQUFJLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRTtnQkFDbkMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTthQUM5QyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQUUsT0FBTTtRQUN2QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFO1lBQzNCLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUksQ0FBa0QsQ0FBQyxNQUFNLENBQUE7WUFDbEYsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUk7Z0JBQUUsT0FBTTtZQUMvQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2hDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzlCLENBQUMsQ0FBQTtRQUNELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNyRCxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN2RSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFFdkIsT0FBTyxDQUNMLGVBQUssU0FBUyxFQUFDLGlHQUFpRyxhQUM5RyxjQUFLLFNBQVMsRUFBQyxlQUFlLFlBQzNCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUN0QixpQkFFRSxJQUFJLEVBQUMsUUFBUSxFQUNiLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQzlCLFNBQVMsRUFBRSxrRUFDVCxDQUFDLEtBQUssTUFBTTt3QkFDVixDQUFDLENBQUMsa0RBQWtEO3dCQUNwRCxDQUFDLENBQUMsNkNBQ04sRUFBRSxZQUVELElBQUksSUFUQSxJQUFJLENBVUYsQ0FDVixDQUFDLEdBQ0UsRUFDTCxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDMUIsY0FFRSxTQUFTLEVBQ1AsQ0FBQyxLQUFLLE1BQU07b0JBQ1YsQ0FBQyxDQUFDLG9GQUFvRjtvQkFDdEYsQ0FBQyxDQUFDLFFBQVEsWUFHYixLQUFLLElBUEQsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQVFULENBQ1AsQ0FBQyxJQUNFLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGlsZHJlbiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5cbi8qKiBUYWJiZWQgY29kZSBibG9jayBjb21wb25lbnQgZm9yIGdyb3VwaW5nIG11bHRpcGxlIGNvZGUgYmxvY2tzIHdpdGggb3B0aW9uYWwgc3luYyAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvZGVUYWJzKHByb3BzOiB7XG4gIHRhYnM6IHN0cmluZ1xuICBzeW5jPzogc3RyaW5nXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgY29uc3QgbmFtZXMgPSBKU09OLnBhcnNlKHByb3BzLnRhYnMpIGFzIHN0cmluZ1tdXG4gIGNvbnN0IGNoaWxkcmVuID0gQ2hpbGRyZW4udG9BcnJheShwcm9wcy5jaGlsZHJlbilcblxuICBjb25zdCBnZXRJbml0aWFsSW5kZXggPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5zeW5jKSByZXR1cm4gMFxuICAgIGNvbnN0IHNhdmVkID1cbiAgICAgIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxpdmVtYXJrLXRhYi1cIiArIHByb3BzLnN5bmMpXG4gICAgICAgIDogbnVsbFxuICAgIGlmICghc2F2ZWQpIHJldHVybiAwXG4gICAgY29uc3QgaWR4ID0gbmFtZXMuaW5kZXhPZihzYXZlZClcbiAgICByZXR1cm4gaWR4ID49IDAgPyBpZHggOiAwXG4gIH1cblxuICBjb25zdCBbYWN0aXZlLCBzZXRBY3RpdmVdID0gdXNlU3RhdGUoZ2V0SW5pdGlhbEluZGV4KVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdCA9IChpOiBudW1iZXIpID0+IHtcbiAgICBzZXRBY3RpdmUoaSlcbiAgICBpZiAocHJvcHMuc3luYykge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJsaXZlbWFyay10YWItXCIgKyBwcm9wcy5zeW5jLCBuYW1lc1tpXSEpXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEN1c3RvbUV2ZW50KFwibGl2ZW1hcmstdGFiLXN5bmNcIiwge1xuICAgICAgICAgIGRldGFpbDogeyBzeW5jOiBwcm9wcy5zeW5jLCB0aXRsZTogbmFtZXNbaV0gfSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXByb3BzLnN5bmMpIHJldHVyblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgc3luYywgdGl0bGUgfSA9IChlIGFzIEN1c3RvbUV2ZW50PHsgc3luYzogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0+KS5kZXRhaWxcbiAgICAgIGlmIChzeW5jICE9PSBwcm9wcy5zeW5jKSByZXR1cm5cbiAgICAgIGNvbnN0IGlkeCA9IG5hbWVzLmluZGV4T2YodGl0bGUpXG4gICAgICBpZiAoaWR4ID49IDApIHNldEFjdGl2ZShpZHgpXG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibGl2ZW1hcmstdGFiLXN5bmNcIiwgaGFuZGxlcilcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJsaXZlbWFyay10YWItc3luY1wiLCBoYW5kbGVyKVxuICB9LCBbcHJvcHMuc3luYywgbmFtZXNdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJub3QtcHJvc2UgbXktNCByb3VuZGVkLWNhcmQgYm9yZGVyIHNoYWRvdy1zbSBvdmVyZmxvdy1oaWRkZW4gdGV4dC1zbSBiZy1zaWRlYmFyIGRhcms6Ymctc2lkZWJhclwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGJvcmRlci1iXCI+XG4gICAgICAgIHtuYW1lcy5tYXAoKG5hbWUsIGkpID0+IChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChpKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTQgcHktMiB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyICR7XG4gICAgICAgICAgICAgIGkgPT09IGFjdGl2ZVxuICAgICAgICAgICAgICAgID8gXCJ0ZXh0LWZvcmVncm91bmQgYm9yZGVyLWItMiBib3JkZXItcHJpbWFyeSAtbWItcHhcIlxuICAgICAgICAgICAgICAgIDogXCJ0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kXCJcbiAgICAgICAgICAgIH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtuYW1lfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgICAge2NoaWxkcmVuLm1hcCgoY2hpbGQsIGkpID0+IChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGtleT17bmFtZXNbaV19XG4gICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgIGkgPT09IGFjdGl2ZVxuICAgICAgICAgICAgICA/IFwiWyY+ZmlndXJlXTpteS0wIFsmPmZpZ3VyZV06cm91bmRlZC1ub25lIFsmPmZpZ3VyZV06Ym9yZGVyLTAgWyY+ZmlndXJlXTpzaGFkb3ctbm9uZVwiXG4gICAgICAgICAgICAgIDogXCJoaWRkZW5cIlxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZH1cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Single column within a Columns grid */
|
|
3
|
+
export function Column(props) {
|
|
4
|
+
return _jsx("div", { className: "max-w-none", children: props.children });
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvQ29sdW1uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxNQUFNLENBQUMsS0FBb0M7SUFDekQsT0FBTyxjQUFLLFNBQVMsRUFBQyxZQUFZLFlBQUUsS0FBSyxDQUFDLFFBQVEsR0FBTyxDQUFBO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU2luZ2xlIGNvbHVtbiB3aXRoaW4gYSBDb2x1bW5zIGdyaWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW4ocHJvcHM6IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LW5vbmVcIj57cHJvcHMuY2hpbGRyZW59PC9kaXY+XG59XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Grid layout for arranging content side by side */
|
|
3
|
+
export function Columns(props) {
|
|
4
|
+
const cols = props.cols ? parseInt(props.cols, 10) : undefined;
|
|
5
|
+
const style = cols ? { gridTemplateColumns: `repeat(${cols}, 1fr)` } : undefined;
|
|
6
|
+
return (_jsx("div", { className: "grid gap-6 my-4 sm:grid-cols-2", style: style, children: props.children }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0NvbHVtbnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxREFBcUQ7QUFDckQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFtRDtJQUN6RSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQzlELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNoRixPQUFPLENBQ0wsY0FBSyxTQUFTLEVBQUMsZ0NBQWdDLEVBQUMsS0FBSyxFQUFFLEtBQUssWUFDekQsS0FBSyxDQUFDLFFBQVEsR0FDWCxDQUNQLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEdyaWQgbGF5b3V0IGZvciBhcnJhbmdpbmcgY29udGVudCBzaWRlIGJ5IHNpZGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW5zKHByb3BzOiB7IGNvbHM/OiBzdHJpbmc7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICBjb25zdCBjb2xzID0gcHJvcHMuY29scyA/IHBhcnNlSW50KHByb3BzLmNvbHMsIDEwKSA6IHVuZGVmaW5lZFxuICBjb25zdCBzdHlsZSA9IGNvbHMgPyB7IGdyaWRUZW1wbGF0ZUNvbHVtbnM6IGByZXBlYXQoJHtjb2xzfSwgMWZyKWAgfSA6IHVuZGVmaW5lZFxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBnYXAtNiBteS00IHNtOmdyaWQtY29scy0yXCIgc3R5bGU9e3N0eWxlfT5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ComponentProps } from "react";
|
|
2
|
+
/** Styled wrapper for definition lists produced by remark-definition-list */
|
|
3
|
+
export declare function DefinitionList(props: ComponentProps<"dl">): import("react").JSX.Element;
|
|
4
|
+
/** Styled definition term rendered as bold text */
|
|
5
|
+
export declare function DefinitionTerm(props: ComponentProps<"dt">): import("react").JSX.Element;
|
|
6
|
+
/** Styled definition detail with a left border accent */
|
|
7
|
+
export declare function DefinitionDetail(props: ComponentProps<"dd">): import("react").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Styled wrapper for definition lists produced by remark-definition-list */
|
|
3
|
+
export function DefinitionList(props) {
|
|
4
|
+
return _jsx("dl", { ...props, className: "not-prose space-y-4" });
|
|
5
|
+
}
|
|
6
|
+
/** Styled definition term rendered as bold text */
|
|
7
|
+
export function DefinitionTerm(props) {
|
|
8
|
+
return _jsx("dt", { ...props, className: "text-foreground font-semibold" });
|
|
9
|
+
}
|
|
10
|
+
/** Styled definition detail with a left border accent */
|
|
11
|
+
export function DefinitionDetail(props) {
|
|
12
|
+
return (_jsx("dd", { ...props, className: "ml-0 pl-4 border-l-2 border-border text-muted-foreground" }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmaW5pdGlvbkxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9EZWZpbml0aW9uTGlzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLDZFQUE2RTtBQUM3RSxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQTJCO0lBQ3hELE9BQU8sZ0JBQVEsS0FBSyxFQUFFLFNBQVMsRUFBQyxxQkFBcUIsR0FBRyxDQUFBO0FBQzFELENBQUM7QUFFRCxtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUEyQjtJQUN4RCxPQUFPLGdCQUFRLEtBQUssRUFBRSxTQUFTLEVBQUMsK0JBQStCLEdBQUcsQ0FBQTtBQUNwRSxDQUFDO0FBRUQseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUEyQjtJQUMxRCxPQUFPLENBQ0wsZ0JBQVEsS0FBSyxFQUFFLFNBQVMsRUFBQywwREFBMEQsR0FBRyxDQUN2RixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcG9uZW50UHJvcHMgfSBmcm9tIFwicmVhY3RcIlxuXG4vKiogU3R5bGVkIHdyYXBwZXIgZm9yIGRlZmluaXRpb24gbGlzdHMgcHJvZHVjZWQgYnkgcmVtYXJrLWRlZmluaXRpb24tbGlzdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIERlZmluaXRpb25MaXN0KHByb3BzOiBDb21wb25lbnRQcm9wczxcImRsXCI+KSB7XG4gIHJldHVybiA8ZGwgey4uLnByb3BzfSBjbGFzc05hbWU9XCJub3QtcHJvc2Ugc3BhY2UteS00XCIgLz5cbn1cblxuLyoqIFN0eWxlZCBkZWZpbml0aW9uIHRlcm0gcmVuZGVyZWQgYXMgYm9sZCB0ZXh0ICovXG5leHBvcnQgZnVuY3Rpb24gRGVmaW5pdGlvblRlcm0ocHJvcHM6IENvbXBvbmVudFByb3BzPFwiZHRcIj4pIHtcbiAgcmV0dXJuIDxkdCB7Li4ucHJvcHN9IGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBmb250LXNlbWlib2xkXCIgLz5cbn1cblxuLyoqIFN0eWxlZCBkZWZpbml0aW9uIGRldGFpbCB3aXRoIGEgbGVmdCBib3JkZXIgYWNjZW50ICovXG5leHBvcnQgZnVuY3Rpb24gRGVmaW5pdGlvbkRldGFpbChwcm9wczogQ29tcG9uZW50UHJvcHM8XCJkZFwiPikge1xuICByZXR1cm4gKFxuICAgIDxkZCB7Li4ucHJvcHN9IGNsYXNzTmFtZT1cIm1sLTAgcGwtNCBib3JkZXItbC0yIGJvcmRlci1ib3JkZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgKVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { ChevronRight } from "lucide-react";
|
|
4
|
+
import { Collapsible, CollapsibleTrigger, CollapsibleContent, } from "../elements/collapsible.js";
|
|
5
|
+
/** Collapsible content section with a summary label */
|
|
6
|
+
export function Details(props) {
|
|
7
|
+
const [open, setOpen] = useState(false);
|
|
8
|
+
return (_jsxs(Collapsible, { open: open, onOpenChange: setOpen, className: "not-prose my-4 rounded-card border border-border bg-card px-4 py-3", children: [_jsxs(CollapsibleTrigger, { className: "flex w-full cursor-pointer items-center gap-2 text-sm font-semibold select-none", children: [_jsx(ChevronRight, { className: `size-4 shrink-0 transition-transform ${open ? "rotate-90" : ""}` }), props.summary] }), _jsx(CollapsibleContent, { className: "mt-3 text-sm [&>p]:my-1 [&>p:first-child]:mt-0 [&>p:last-child]:mb-0", children: props.children })] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGV0YWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0RldGFpbHMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUNMLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsa0JBQWtCLEdBQ25CLE1BQU0sNEJBQTZCLENBQUE7QUFFcEMsdURBQXVEO0FBQ3ZELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBcUQ7SUFDM0UsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFdkMsT0FBTyxDQUNMLE1BQUMsV0FBVyxJQUNWLElBQUksRUFBRSxJQUFJLEVBQ1YsWUFBWSxFQUFFLE9BQU8sRUFDckIsU0FBUyxFQUFDLG9FQUFvRSxhQUU5RSxNQUFDLGtCQUFrQixJQUFDLFNBQVMsRUFBQyxpRkFBaUYsYUFDN0csS0FBQyxZQUFZLElBQ1gsU0FBUyxFQUFFLHdDQUF3QyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQzVFLEVBQ0QsS0FBSyxDQUFDLE9BQU8sSUFDSyxFQUNyQixLQUFDLGtCQUFrQixJQUFDLFNBQVMsRUFBQyxzRUFBc0UsWUFDakcsS0FBSyxDQUFDLFFBQVEsR0FDSSxJQUNULENBQ2YsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBDaGV2cm9uUmlnaHQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcbmltcG9ydCB7XG4gIENvbGxhcHNpYmxlLFxuICBDb2xsYXBzaWJsZVRyaWdnZXIsXG4gIENvbGxhcHNpYmxlQ29udGVudCxcbn0gZnJvbSBcIi4uL2VsZW1lbnRzL2NvbGxhcHNpYmxlLnRzeFwiXG5cbi8qKiBDb2xsYXBzaWJsZSBjb250ZW50IHNlY3Rpb24gd2l0aCBhIHN1bW1hcnkgbGFiZWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBEZXRhaWxzKHByb3BzOiB7IHN1bW1hcnk6IHN0cmluZzsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIHJldHVybiAoXG4gICAgPENvbGxhcHNpYmxlXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25PcGVuQ2hhbmdlPXtzZXRPcGVufVxuICAgICAgY2xhc3NOYW1lPVwibm90LXByb3NlIG15LTQgcm91bmRlZC1jYXJkIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWNhcmQgcHgtNCBweS0zXCJcbiAgICA+XG4gICAgICA8Q29sbGFwc2libGVUcmlnZ2VyIGNsYXNzTmFtZT1cImZsZXggdy1mdWxsIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgc2VsZWN0LW5vbmVcIj5cbiAgICAgICAgPENoZXZyb25SaWdodFxuICAgICAgICAgIGNsYXNzTmFtZT17YHNpemUtNCBzaHJpbmstMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSAke29wZW4gPyBcInJvdGF0ZS05MFwiIDogXCJcIn1gfVxuICAgICAgICAvPlxuICAgICAgICB7cHJvcHMuc3VtbWFyeX1cbiAgICAgIDwvQ29sbGFwc2libGVUcmlnZ2VyPlxuICAgICAgPENvbGxhcHNpYmxlQ29udGVudCBjbGFzc05hbWU9XCJtdC0zIHRleHQtc20gWyY+cF06bXktMSBbJj5wOmZpcnN0LWNoaWxkXTptdC0wIFsmPnA6bGFzdC1jaGlsZF06bWItMFwiPlxuICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICA8L0NvbGxhcHNpYmxlQ29udGVudD5cbiAgICA8L0NvbGxhcHNpYmxlPlxuICApXG59XG4iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { File, Folder } from "lucide-react";
|
|
3
|
+
/** Renders a file/directory tree from a JSON-serialized tree structure */
|
|
4
|
+
export function Filetree(props) {
|
|
5
|
+
const items = JSON.parse(props.tree);
|
|
6
|
+
return (_jsx("div", { className: "not-prose my-4 rounded-card border border-border bg-card p-4 font-mono text-sm", children: _jsx(TreeItems, { items: items, depth: 0 }) }));
|
|
7
|
+
}
|
|
8
|
+
function TreeItems(props) {
|
|
9
|
+
return (_jsx("ul", { className: props.depth > 0 ? "ml-4 border-l border-border pl-2" : "", children: props.items.map((item, index) => (_jsx(TreeNode, { item: item, depth: props.depth }, `${item.name}-${index}`))) }));
|
|
10
|
+
}
|
|
11
|
+
function TreeNode(props) {
|
|
12
|
+
const { item, depth } = props;
|
|
13
|
+
const isDir = item.type === "directory";
|
|
14
|
+
return (_jsxs("li", { className: "py-0.5", children: [_jsxs("span", { className: "inline-flex items-center gap-2", children: [isDir && _jsx(Folder, { className: "size-4 shrink-0 text-primary" }), item.type === "file" && (_jsx(File, { className: "size-4 shrink-0 text-muted-foreground" })), _jsx("span", { className: [
|
|
15
|
+
isDir && "font-semibold",
|
|
16
|
+
item.type === "placeholder" && "text-muted-foreground",
|
|
17
|
+
item.highlighted && "rounded bg-primary/10 px-1 text-primary",
|
|
18
|
+
]
|
|
19
|
+
.filter(Boolean)
|
|
20
|
+
.join(" "), children: item.name }), item.comment && (_jsx("span", { className: "font-sans text-xs text-muted-foreground", children: item.comment }))] }), item.children && item.children.length > 0 && (_jsx(TreeItems, { items: item.children, depth: depth + 1 }))] }));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZXRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9GaWxldHJlZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBVTNDLDBFQUEwRTtBQUMxRSxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQXVCO0lBQzlDLE1BQU0sS0FBSyxHQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRWhELE9BQU8sQ0FDTCxjQUFLLFNBQVMsRUFBQyxnRkFBZ0YsWUFDN0YsS0FBQyxTQUFTLElBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFJLEdBQ2pDLENBQ1AsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUEyQztJQUM1RCxPQUFPLENBQ0wsYUFBSSxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQ3JFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDaEMsS0FBQyxRQUFRLElBQStCLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQXZELEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBb0MsQ0FDM0UsQ0FBQyxHQUNDLENBQ04sQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxLQUF3QztJQUN4RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQTtJQUV2QyxPQUFPLENBQ0wsY0FBSSxTQUFTLEVBQUMsUUFBUSxhQUNwQixnQkFBTSxTQUFTLEVBQUMsZ0NBQWdDLGFBQzdDLEtBQUssSUFBSSxLQUFDLE1BQU0sSUFBQyxTQUFTLEVBQUMsOEJBQThCLEdBQUcsRUFDNUQsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksQ0FDdkIsS0FBQyxJQUFJLElBQUMsU0FBUyxFQUFDLHVDQUF1QyxHQUFHLENBQzNELEVBQ0QsZUFDRSxTQUFTLEVBQUU7NEJBQ1QsS0FBSyxJQUFJLGVBQWU7NEJBQ3hCLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxJQUFJLHVCQUF1Qjs0QkFDdEQsSUFBSSxDQUFDLFdBQVcsSUFBSSx5Q0FBeUM7eUJBQzlEOzZCQUNFLE1BQU0sQ0FBQyxPQUFPLENBQUM7NkJBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUVYLElBQUksQ0FBQyxJQUFJLEdBQ0wsRUFDTixJQUFJLENBQUMsT0FBTyxJQUFJLENBQ2YsZUFBTSxTQUFTLEVBQUMseUNBQXlDLFlBQUUsSUFBSSxDQUFDLE9BQU8sR0FBUSxDQUNoRixJQUNJLEVBQ04sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FDNUMsS0FBQyxTQUFTLElBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLEdBQUksQ0FDdEQsSUFDRSxDQUNOLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZSwgRm9sZGVyIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5cbmludGVyZmFjZSBUcmVlSXRlbSB7XG4gIG5hbWU6IHN0cmluZ1xuICB0eXBlOiBcImRpcmVjdG9yeVwiIHwgXCJmaWxlXCIgfCBcInBsYWNlaG9sZGVyXCJcbiAgY29tbWVudD86IHN0cmluZ1xuICBoaWdobGlnaHRlZD86IGJvb2xlYW5cbiAgY2hpbGRyZW4/OiBUcmVlSXRlbVtdXG59XG5cbi8qKiBSZW5kZXJzIGEgZmlsZS9kaXJlY3RvcnkgdHJlZSBmcm9tIGEgSlNPTi1zZXJpYWxpemVkIHRyZWUgc3RydWN0dXJlICovXG5leHBvcnQgZnVuY3Rpb24gRmlsZXRyZWUocHJvcHM6IHsgdHJlZTogc3RyaW5nIH0pIHtcbiAgY29uc3QgaXRlbXM6IFRyZWVJdGVtW10gPSBKU09OLnBhcnNlKHByb3BzLnRyZWUpXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vdC1wcm9zZSBteS00IHJvdW5kZWQtY2FyZCBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1jYXJkIHAtNCBmb250LW1vbm8gdGV4dC1zbVwiPlxuICAgICAgPFRyZWVJdGVtcyBpdGVtcz17aXRlbXN9IGRlcHRoPXswfSAvPlxuICAgIDwvZGl2PlxuICApXG59XG5cbmZ1bmN0aW9uIFRyZWVJdGVtcyhwcm9wczogeyBpdGVtczogVHJlZUl0ZW1bXTsgZGVwdGg6IG51bWJlciB9KSB7XG4gIHJldHVybiAoXG4gICAgPHVsIGNsYXNzTmFtZT17cHJvcHMuZGVwdGggPiAwID8gXCJtbC00IGJvcmRlci1sIGJvcmRlci1ib3JkZXIgcGwtMlwiIDogXCJcIn0+XG4gICAgICB7cHJvcHMuaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gKFxuICAgICAgICA8VHJlZU5vZGUga2V5PXtgJHtpdGVtLm5hbWV9LSR7aW5kZXh9YH0gaXRlbT17aXRlbX0gZGVwdGg9e3Byb3BzLmRlcHRofSAvPlxuICAgICAgKSl9XG4gICAgPC91bD5cbiAgKVxufVxuXG5mdW5jdGlvbiBUcmVlTm9kZShwcm9wczogeyBpdGVtOiBUcmVlSXRlbTsgZGVwdGg6IG51bWJlciB9KSB7XG4gIGNvbnN0IHsgaXRlbSwgZGVwdGggfSA9IHByb3BzXG4gIGNvbnN0IGlzRGlyID0gaXRlbS50eXBlID09PSBcImRpcmVjdG9yeVwiXG5cbiAgcmV0dXJuIChcbiAgICA8bGkgY2xhc3NOYW1lPVwicHktMC41XCI+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAge2lzRGlyICYmIDxGb2xkZXIgY2xhc3NOYW1lPVwic2l6ZS00IHNocmluay0wIHRleHQtcHJpbWFyeVwiIC8+fVxuICAgICAgICB7aXRlbS50eXBlID09PSBcImZpbGVcIiAmJiAoXG4gICAgICAgICAgPEZpbGUgY2xhc3NOYW1lPVwic2l6ZS00IHNocmluay0wIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtbXG4gICAgICAgICAgICBpc0RpciAmJiBcImZvbnQtc2VtaWJvbGRcIixcbiAgICAgICAgICAgIGl0ZW0udHlwZSA9PT0gXCJwbGFjZWhvbGRlclwiICYmIFwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgICBpdGVtLmhpZ2hsaWdodGVkICYmIFwicm91bmRlZCBiZy1wcmltYXJ5LzEwIHB4LTEgdGV4dC1wcmltYXJ5XCIsXG4gICAgICAgICAgXVxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgLmpvaW4oXCIgXCIpfVxuICAgICAgICA+XG4gICAgICAgICAge2l0ZW0ubmFtZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXRlbS5jb21tZW50ICYmIChcbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LXNhbnMgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj57aXRlbS5jb21tZW50fTwvc3Bhbj5cbiAgICAgICAgKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxUcmVlSXRlbXMgaXRlbXM9e2l0ZW0uY2hpbGRyZW59IGRlcHRoPXtkZXB0aCArIDF9IC8+XG4gICAgICApfVxuICAgIDwvbGk+XG4gIClcbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ComponentProps } from "react";
|
|
2
|
+
/** Wraps footnote reference links in a HoverCard that previews footnote content inline,
|
|
3
|
+
* and points relative links to Markdown files at their articles */
|
|
4
|
+
export declare function FootnoteRef(props: ComponentProps<"a">): import("react").JSX.Element;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { HoverCard, HoverCardContent, HoverCardTrigger } from "../elements/hover-card.js";
|
|
4
|
+
import { useArticleHref } from "../helpers/article-link.js";
|
|
5
|
+
import { useMessages } from "../hooks/messages.js";
|
|
6
|
+
const FOOTNOTE_PREFIX = "#user-content-fn-";
|
|
7
|
+
/** Wraps footnote reference links in a HoverCard that previews footnote content inline,
|
|
8
|
+
* and points relative links to Markdown files at their articles */
|
|
9
|
+
export function FootnoteRef(props) {
|
|
10
|
+
const href = useArticleHref(props.href) ?? "";
|
|
11
|
+
if (!href.startsWith(FOOTNOTE_PREFIX)) {
|
|
12
|
+
return _jsx("a", { ...props, href: props.href && href });
|
|
13
|
+
}
|
|
14
|
+
return _jsx(FootnoteHoverCard, { ...props, href: href });
|
|
15
|
+
}
|
|
16
|
+
function FootnoteHoverCard(props) {
|
|
17
|
+
const [footnoteHtml, setFootnoteHtml] = useState("");
|
|
18
|
+
const t = useMessages();
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
const targetId = props.href.slice(1);
|
|
21
|
+
const el = document.getElementById(targetId);
|
|
22
|
+
if (!el)
|
|
23
|
+
return;
|
|
24
|
+
const wrapper = document.createElement("div");
|
|
25
|
+
wrapper.innerHTML = el.innerHTML;
|
|
26
|
+
for (const backref of wrapper.querySelectorAll("[data-footnote-backref]")) {
|
|
27
|
+
backref.remove();
|
|
28
|
+
}
|
|
29
|
+
setFootnoteHtml(wrapper.innerHTML);
|
|
30
|
+
}, [props.href]);
|
|
31
|
+
return (_jsxs(HoverCard, { children: [_jsx(HoverCardTrigger, { render: _jsx("a", { ...props }) }), _jsx(HoverCardContent, { className: "prose dark:prose-invert text-sm w-80 [&>p]:my-1 [&>p:first-child]:mt-0 [&>p:last-child]:mb-0", side: "top", sideOffset: 8, children: footnoteHtml ? (_jsx("div", { dangerouslySetInnerHTML: { __html: footnoteHtml } })) : (_jsx("p", { className: "text-muted-foreground", children: t("footnote.missing") })) })] }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9vdG5vdGVSZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9Gb290bm90ZVJlZi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBdUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTRCLENBQUE7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVsRCxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQTtBQUUzQztvRUFDb0U7QUFDcEUsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUEwQjtJQUNwRCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sZUFBTyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFJLENBQUE7SUFDbkQsQ0FBQztJQUVELE9BQU8sS0FBQyxpQkFBaUIsT0FBSyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBSSxDQUFBO0FBQ3JELENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBQTZDO0lBQ3RFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3BELE1BQU0sQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFBO0lBRXZCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNwQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzVDLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTTtRQUVmLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0MsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFBO1FBQ2hDLEtBQUssTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQztZQUMxRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDbEIsQ0FBQztRQUNELGVBQWUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDcEMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFFaEIsT0FBTyxDQUNMLE1BQUMsU0FBUyxlQUNSLEtBQUMsZ0JBQWdCLElBQUMsTUFBTSxFQUFFLGVBQU8sS0FBSyxHQUFJLEdBQUksRUFDOUMsS0FBQyxnQkFBZ0IsSUFDZixTQUFTLEVBQUMsOEZBQThGLEVBQ3hHLElBQUksRUFBQyxLQUFLLEVBQ1YsVUFBVSxFQUFFLENBQUMsWUFFWixZQUFZLENBQUMsQ0FBQyxDQUFDLENBQ2QsY0FBSyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBSSxDQUMzRCxDQUFDLENBQUMsQ0FBQyxDQUNGLFlBQUcsU0FBUyxFQUFDLHVCQUF1QixZQUFFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFLLENBQ2pFLEdBQ2dCLElBQ1QsQ0FDYixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ29tcG9uZW50UHJvcHMsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgSG92ZXJDYXJkLCBIb3ZlckNhcmRDb250ZW50LCBIb3ZlckNhcmRUcmlnZ2VyIH0gZnJvbSBcIi4uL2VsZW1lbnRzL2hvdmVyLWNhcmQudHN4XCJcbmltcG9ydCB7IHVzZUFydGljbGVIcmVmIH0gZnJvbSBcIi4uL2hlbHBlcnMvYXJ0aWNsZS1saW5rLnRzXCJcbmltcG9ydCB7IHVzZU1lc3NhZ2VzIH0gZnJvbSBcIi4uL2hvb2tzL21lc3NhZ2VzLnRzXCJcblxuY29uc3QgRk9PVE5PVEVfUFJFRklYID0gXCIjdXNlci1jb250ZW50LWZuLVwiXG5cbi8qKiBXcmFwcyBmb290bm90ZSByZWZlcmVuY2UgbGlua3MgaW4gYSBIb3ZlckNhcmQgdGhhdCBwcmV2aWV3cyBmb290bm90ZSBjb250ZW50IGlubGluZSxcbiAqICBhbmQgcG9pbnRzIHJlbGF0aXZlIGxpbmtzIHRvIE1hcmtkb3duIGZpbGVzIGF0IHRoZWlyIGFydGljbGVzICovXG5leHBvcnQgZnVuY3Rpb24gRm9vdG5vdGVSZWYocHJvcHM6IENvbXBvbmVudFByb3BzPFwiYVwiPikge1xuICBjb25zdCBocmVmID0gdXNlQXJ0aWNsZUhyZWYocHJvcHMuaHJlZikgPz8gXCJcIlxuICBpZiAoIWhyZWYuc3RhcnRzV2l0aChGT09UTk9URV9QUkVGSVgpKSB7XG4gICAgcmV0dXJuIDxhIHsuLi5wcm9wc30gaHJlZj17cHJvcHMuaHJlZiAmJiBocmVmfSAvPlxuICB9XG5cbiAgcmV0dXJuIDxGb290bm90ZUhvdmVyQ2FyZCB7Li4ucHJvcHN9IGhyZWY9e2hyZWZ9IC8+XG59XG5cbmZ1bmN0aW9uIEZvb3Rub3RlSG92ZXJDYXJkKHByb3BzOiBDb21wb25lbnRQcm9wczxcImFcIj4gJiB7IGhyZWY6IHN0cmluZyB9KSB7XG4gIGNvbnN0IFtmb290bm90ZUh0bWwsIHNldEZvb3Rub3RlSHRtbF0gPSB1c2VTdGF0ZShcIlwiKVxuICBjb25zdCB0ID0gdXNlTWVzc2FnZXMoKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0SWQgPSBwcm9wcy5ocmVmLnNsaWNlKDEpXG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRJZClcbiAgICBpZiAoIWVsKSByZXR1cm5cblxuICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpXG4gICAgd3JhcHBlci5pbm5lckhUTUwgPSBlbC5pbm5lckhUTUxcbiAgICBmb3IgKGNvbnN0IGJhY2tyZWYgb2Ygd3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtZm9vdG5vdGUtYmFja3JlZl1cIikpIHtcbiAgICAgIGJhY2tyZWYucmVtb3ZlKClcbiAgICB9XG4gICAgc2V0Rm9vdG5vdGVIdG1sKHdyYXBwZXIuaW5uZXJIVE1MKVxuICB9LCBbcHJvcHMuaHJlZl0pXG5cbiAgcmV0dXJuIChcbiAgICA8SG92ZXJDYXJkPlxuICAgICAgPEhvdmVyQ2FyZFRyaWdnZXIgcmVuZGVyPXs8YSB7Li4ucHJvcHN9IC8+fSAvPlxuICAgICAgPEhvdmVyQ2FyZENvbnRlbnRcbiAgICAgICAgY2xhc3NOYW1lPVwicHJvc2UgZGFyazpwcm9zZS1pbnZlcnQgdGV4dC1zbSB3LTgwIFsmPnBdOm15LTEgWyY+cDpmaXJzdC1jaGlsZF06bXQtMCBbJj5wOmxhc3QtY2hpbGRdOm1iLTBcIlxuICAgICAgICBzaWRlPVwidG9wXCJcbiAgICAgICAgc2lkZU9mZnNldD17OH1cbiAgICAgID5cbiAgICAgICAge2Zvb3Rub3RlSHRtbCA/IChcbiAgICAgICAgICA8ZGl2IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogZm9vdG5vdGVIdG1sIH19IC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e3QoXCJmb290bm90ZS5taXNzaW5nXCIpfTwvcD5cbiAgICAgICAgKX1cbiAgICAgIDwvSG92ZXJDYXJkQ29udGVudD5cbiAgICA8L0hvdmVyQ2FyZD5cbiAgKVxufVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const headingComponents: {
|
|
2
|
+
h1: (props: React.HTMLAttributes<HTMLHeadingElement>) => import("react").JSX.Element;
|
|
3
|
+
h2: (props: React.HTMLAttributes<HTMLHeadingElement>) => import("react").JSX.Element;
|
|
4
|
+
h3: (props: React.HTMLAttributes<HTMLHeadingElement>) => import("react").JSX.Element;
|
|
5
|
+
h4: (props: React.HTMLAttributes<HTMLHeadingElement>) => import("react").JSX.Element;
|
|
6
|
+
h5: (props: React.HTMLAttributes<HTMLHeadingElement>) => import("react").JSX.Element;
|
|
7
|
+
h6: (props: React.HTMLAttributes<HTMLHeadingElement>) => import("react").JSX.Element;
|
|
8
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Heading component that wraps content in an anchor link to itself */
|
|
3
|
+
function createHeading(Tag) {
|
|
4
|
+
return function Heading(props) {
|
|
5
|
+
if (!props.id)
|
|
6
|
+
return _jsx(Tag, { ...props });
|
|
7
|
+
return (_jsx(Tag, { ...props, children: _jsx("a", { href: `#${props.id}`, children: props.children }) }));
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export const headingComponents = {
|
|
11
|
+
h1: createHeading("h1"),
|
|
12
|
+
h2: createHeading("h2"),
|
|
13
|
+
h3: createHeading("h3"),
|
|
14
|
+
h4: createHeading("h4"),
|
|
15
|
+
h5: createHeading("h5"),
|
|
16
|
+
h6: createHeading("h6"),
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVhZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0hlYWRpbmcudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1RUFBdUU7QUFDdkUsU0FBUyxhQUFhLENBQUMsR0FBNEM7SUFDakUsT0FBTyxTQUFTLE9BQU8sQ0FBQyxLQUErQztRQUNyRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLEtBQUMsR0FBRyxPQUFLLEtBQUssR0FBSSxDQUFBO1FBQ3hDLE9BQU8sQ0FDTCxLQUFDLEdBQUcsT0FBSyxLQUFLLFlBQ1osWUFBRyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLFlBQUcsS0FBSyxDQUFDLFFBQVEsR0FBSyxHQUN6QyxDQUNQLENBQUE7SUFDSCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7Q0FDeEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBIZWFkaW5nIGNvbXBvbmVudCB0aGF0IHdyYXBzIGNvbnRlbnQgaW4gYW4gYW5jaG9yIGxpbmsgdG8gaXRzZWxmICovXG5mdW5jdGlvbiBjcmVhdGVIZWFkaW5nKFRhZzogXCJoMVwiIHwgXCJoMlwiIHwgXCJoM1wiIHwgXCJoNFwiIHwgXCJoNVwiIHwgXCJoNlwiKSB7XG4gIHJldHVybiBmdW5jdGlvbiBIZWFkaW5nKHByb3BzOiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+KSB7XG4gICAgaWYgKCFwcm9wcy5pZCkgcmV0dXJuIDxUYWcgey4uLnByb3BzfSAvPlxuICAgIHJldHVybiAoXG4gICAgICA8VGFnIHsuLi5wcm9wc30+XG4gICAgICAgIDxhIGhyZWY9e2AjJHtwcm9wcy5pZH1gfT57cHJvcHMuY2hpbGRyZW59PC9hPlxuICAgICAgPC9UYWc+XG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBoZWFkaW5nQ29tcG9uZW50cyA9IHtcbiAgaDE6IGNyZWF0ZUhlYWRpbmcoXCJoMVwiKSxcbiAgaDI6IGNyZWF0ZUhlYWRpbmcoXCJoMlwiKSxcbiAgaDM6IGNyZWF0ZUhlYWRpbmcoXCJoM1wiKSxcbiAgaDQ6IGNyZWF0ZUhlYWRpbmcoXCJoNFwiKSxcbiAgaDU6IGNyZWF0ZUhlYWRpbmcoXCJoNVwiKSxcbiAgaDY6IGNyZWF0ZUhlYWRpbmcoXCJoNlwiKSxcbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DynamicIcon } from "../helpers/dynamic-icon.js";
|
|
3
|
+
/** Renders a Lucide icon inline by name */
|
|
4
|
+
export function Icon(props) {
|
|
5
|
+
const className = props.className
|
|
6
|
+
? `inline-block size-4 align-text-bottom ${props.className}`
|
|
7
|
+
: "inline-block size-4 align-text-bottom";
|
|
8
|
+
return _jsx(DynamicIcon, { name: props.name, className: className });
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSWNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0ljb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTZCLENBQUE7QUFFekQsMkNBQTJDO0FBQzNDLE1BQU0sVUFBVSxJQUFJLENBQUMsS0FBMkM7SUFDOUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVM7UUFDL0IsQ0FBQyxDQUFDLHlDQUF5QyxLQUFLLENBQUMsU0FBUyxFQUFFO1FBQzVELENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQTtJQUUzQyxPQUFPLEtBQUMsV0FBVyxJQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUksQ0FBQTtBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY0ljb24gfSBmcm9tIFwiLi4vaGVscGVycy9keW5hbWljLWljb24udHN4XCJcblxuLyoqIFJlbmRlcnMgYSBMdWNpZGUgaWNvbiBpbmxpbmUgYnkgbmFtZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEljb24ocHJvcHM6IHsgbmFtZTogc3RyaW5nOyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICBjb25zdCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWVcbiAgICA/IGBpbmxpbmUtYmxvY2sgc2l6ZS00IGFsaWduLXRleHQtYm90dG9tICR7cHJvcHMuY2xhc3NOYW1lfWBcbiAgICA6IFwiaW5saW5lLWJsb2NrIHNpemUtNCBhbGlnbi10ZXh0LWJvdHRvbVwiXG5cbiAgcmV0dXJuIDxEeW5hbWljSWNvbiBuYW1lPXtwcm9wcy5uYW1lfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gLz5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ComponentType } from "react";
|
|
2
|
+
import type { TocItem } from "../models/toc.ts";
|
|
3
|
+
type MarkdownComponents = Record<string, ComponentType<never>>;
|
|
4
|
+
/** Renders compiled Markdown with Livemark's components for its HTML elements,
|
|
5
|
+
* directives and code blocks; `components` adds or replaces any of them. */
|
|
6
|
+
export declare function Markdown(props: {
|
|
7
|
+
component: ComponentType<{
|
|
8
|
+
components?: object;
|
|
9
|
+
}>;
|
|
10
|
+
toc?: TocItem[];
|
|
11
|
+
components?: MarkdownComponents;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { TocContext } from "../helpers/toc-context.js";
|
|
3
|
+
import { Abbr } from "./Abbr.js";
|
|
4
|
+
import { AnsiCode } from "./AnsiCode.js";
|
|
5
|
+
import { Audio } from "./Audio.js";
|
|
6
|
+
import { Badge } from "./Badge.js";
|
|
7
|
+
import { Button } from "./Button.js";
|
|
8
|
+
import { Callout } from "./Callout.js";
|
|
9
|
+
import { Card } from "./Card.js";
|
|
10
|
+
import { Cards } from "./Cards.js";
|
|
11
|
+
import { CodeBlock } from "./CodeBlock.js";
|
|
12
|
+
import { CodeTabs } from "./CodeTabs.js";
|
|
13
|
+
import { Column } from "./Column.js";
|
|
14
|
+
import { Columns } from "./Columns.js";
|
|
15
|
+
import { DefinitionDetail, DefinitionList, DefinitionTerm } from "./DefinitionList.js";
|
|
16
|
+
import { Details } from "./Details.js";
|
|
17
|
+
import { Filetree } from "./Filetree.js";
|
|
18
|
+
import { FootnoteRef } from "./FootnoteRef.js";
|
|
19
|
+
import { headingComponents } from "./Heading.js";
|
|
20
|
+
import { Icon } from "./Icon.js";
|
|
21
|
+
import { Mermaid } from "./Mermaid.js";
|
|
22
|
+
import { PackageTabs } from "./PackageTabs.js";
|
|
23
|
+
import { SortableTable, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "./SortableTable.js";
|
|
24
|
+
import { Tab } from "./Tab.js";
|
|
25
|
+
import { Tabs } from "./Tabs.js";
|
|
26
|
+
import { Toc } from "./Toc.js";
|
|
27
|
+
import { Video } from "./Video.js";
|
|
28
|
+
import { ZoomImage } from "./ZoomImage.js";
|
|
29
|
+
import { Separator } from "../elements/separator.js";
|
|
30
|
+
/** Renders compiled Markdown with Livemark's components for its HTML elements,
|
|
31
|
+
* directives and code blocks; `components` adds or replaces any of them. */
|
|
32
|
+
export function Markdown(props) {
|
|
33
|
+
const Content = props.component;
|
|
34
|
+
const content = _jsx(Content, { components: { ...COMPONENTS, ...props.components } });
|
|
35
|
+
if (!props.toc)
|
|
36
|
+
return content;
|
|
37
|
+
return _jsx(TocContext.Provider, { value: props.toc, children: content });
|
|
38
|
+
}
|
|
39
|
+
const COMPONENTS = {
|
|
40
|
+
hr: Separator,
|
|
41
|
+
img: ZoomImage,
|
|
42
|
+
pre: CodeBlock,
|
|
43
|
+
table: SortableTable,
|
|
44
|
+
thead: TableHeader,
|
|
45
|
+
tbody: TableBody,
|
|
46
|
+
tr: TableRow,
|
|
47
|
+
th: TableHead,
|
|
48
|
+
td: TableCell,
|
|
49
|
+
a: FootnoteRef,
|
|
50
|
+
Abbr,
|
|
51
|
+
AnsiCode,
|
|
52
|
+
Audio,
|
|
53
|
+
Badge,
|
|
54
|
+
Button,
|
|
55
|
+
Callout,
|
|
56
|
+
Card,
|
|
57
|
+
Cards,
|
|
58
|
+
Column,
|
|
59
|
+
Columns,
|
|
60
|
+
CodeTabs,
|
|
61
|
+
DefinitionDetail,
|
|
62
|
+
DefinitionList,
|
|
63
|
+
DefinitionTerm,
|
|
64
|
+
Details,
|
|
65
|
+
Filetree,
|
|
66
|
+
Icon,
|
|
67
|
+
Mermaid,
|
|
68
|
+
PackageTabs,
|
|
69
|
+
Tab,
|
|
70
|
+
Tabs,
|
|
71
|
+
Toc,
|
|
72
|
+
Video,
|
|
73
|
+
...headingComponents,
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFya2Rvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9NYXJrZG93bi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBWSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFnQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFhLENBQUE7QUFDbkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQWEsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVksQ0FBQTtBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBYSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZ0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBc0IsQ0FBQTtBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBZSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFnQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVksQ0FBQTtBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBZSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFdBQVcsRUFDWCxRQUFRLEdBQ1QsTUFBTSxvQkFBcUIsQ0FBQTtBQUM1QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sVUFBVyxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFZLENBQUE7QUFDakMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVcsQ0FBQTtBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBYSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTJCLENBQUE7QUFJckQ7NkVBQzZFO0FBQzdFLE1BQU0sVUFBVSxRQUFRLENBQUMsS0FJeEI7SUFDQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFBO0lBQy9CLE1BQU0sT0FBTyxHQUFHLEtBQUMsT0FBTyxJQUFDLFVBQVUsRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFJLENBQUE7SUFDL0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHO1FBQUUsT0FBTyxPQUFPLENBQUE7SUFDOUIsT0FBTyxLQUFDLFVBQVUsQ0FBQyxRQUFRLElBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLFlBQUcsT0FBTyxHQUF1QixDQUFBO0FBQy9FLENBQUM7QUFFRCxNQUFNLFVBQVUsR0FBRztJQUNqQixFQUFFLEVBQUUsU0FBUztJQUNiLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxLQUFLLEVBQUUsYUFBYTtJQUNwQixLQUFLLEVBQUUsV0FBVztJQUNsQixLQUFLLEVBQUUsU0FBUztJQUNoQixFQUFFLEVBQUUsUUFBUTtJQUNaLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLFNBQVM7SUFDYixDQUFDLEVBQUUsV0FBVztJQUNkLElBQUk7SUFDSixRQUFRO0lBQ1IsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sT0FBTztJQUNQLElBQUk7SUFDSixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLGNBQWM7SUFDZCxjQUFjO0lBQ2QsT0FBTztJQUNQLFFBQVE7SUFDUixJQUFJO0lBQ0osT0FBTztJQUNQLFdBQVc7SUFDWCxHQUFHO0lBQ0gsSUFBSTtJQUNKLEdBQUc7SUFDSCxLQUFLO0lBQ0wsR0FBRyxpQkFBaUI7Q0FDckIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcG9uZW50VHlwZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBUb2NDb250ZXh0IH0gZnJvbSBcIi4uL2hlbHBlcnMvdG9jLWNvbnRleHQudHNcIlxuaW1wb3J0IHR5cGUgeyBUb2NJdGVtIH0gZnJvbSBcIi4uL21vZGVscy90b2MudHNcIlxuaW1wb3J0IHsgQWJiciB9IGZyb20gXCIuL0FiYnIudHN4XCJcbmltcG9ydCB7IEFuc2lDb2RlIH0gZnJvbSBcIi4vQW5zaUNvZGUudHN4XCJcbmltcG9ydCB7IEF1ZGlvIH0gZnJvbSBcIi4vQXVkaW8udHN4XCJcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4vQmFkZ2UudHN4XCJcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuL0J1dHRvbi50c3hcIlxuaW1wb3J0IHsgQ2FsbG91dCB9IGZyb20gXCIuL0NhbGxvdXQudHN4XCJcbmltcG9ydCB7IENhcmQgfSBmcm9tIFwiLi9DYXJkLnRzeFwiXG5pbXBvcnQgeyBDYXJkcyB9IGZyb20gXCIuL0NhcmRzLnRzeFwiXG5pbXBvcnQgeyBDb2RlQmxvY2sgfSBmcm9tIFwiLi9Db2RlQmxvY2sudHN4XCJcbmltcG9ydCB7IENvZGVUYWJzIH0gZnJvbSBcIi4vQ29kZVRhYnMudHN4XCJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuL0NvbHVtbi50c3hcIlxuaW1wb3J0IHsgQ29sdW1ucyB9IGZyb20gXCIuL0NvbHVtbnMudHN4XCJcbmltcG9ydCB7IERlZmluaXRpb25EZXRhaWwsIERlZmluaXRpb25MaXN0LCBEZWZpbml0aW9uVGVybSB9IGZyb20gXCIuL0RlZmluaXRpb25MaXN0LnRzeFwiXG5pbXBvcnQgeyBEZXRhaWxzIH0gZnJvbSBcIi4vRGV0YWlscy50c3hcIlxuaW1wb3J0IHsgRmlsZXRyZWUgfSBmcm9tIFwiLi9GaWxldHJlZS50c3hcIlxuaW1wb3J0IHsgRm9vdG5vdGVSZWYgfSBmcm9tIFwiLi9Gb290bm90ZVJlZi50c3hcIlxuaW1wb3J0IHsgaGVhZGluZ0NvbXBvbmVudHMgfSBmcm9tIFwiLi9IZWFkaW5nLnRzeFwiXG5pbXBvcnQgeyBJY29uIH0gZnJvbSBcIi4vSWNvbi50c3hcIlxuaW1wb3J0IHsgTWVybWFpZCB9IGZyb20gXCIuL01lcm1haWQudHN4XCJcbmltcG9ydCB7IFBhY2thZ2VUYWJzIH0gZnJvbSBcIi4vUGFja2FnZVRhYnMudHN4XCJcbmltcG9ydCB7XG4gIFNvcnRhYmxlVGFibGUsXG4gIFRhYmxlQm9keSxcbiAgVGFibGVDZWxsLFxuICBUYWJsZUhlYWQsXG4gIFRhYmxlSGVhZGVyLFxuICBUYWJsZVJvdyxcbn0gZnJvbSBcIi4vU29ydGFibGVUYWJsZS50c3hcIlxuaW1wb3J0IHsgVGFiIH0gZnJvbSBcIi4vVGFiLnRzeFwiXG5pbXBvcnQgeyBUYWJzIH0gZnJvbSBcIi4vVGFicy50c3hcIlxuaW1wb3J0IHsgVG9jIH0gZnJvbSBcIi4vVG9jLnRzeFwiXG5pbXBvcnQgeyBWaWRlbyB9IGZyb20gXCIuL1ZpZGVvLnRzeFwiXG5pbXBvcnQgeyBab29tSW1hZ2UgfSBmcm9tIFwiLi9ab29tSW1hZ2UudHN4XCJcbmltcG9ydCB7IFNlcGFyYXRvciB9IGZyb20gXCIuLi9lbGVtZW50cy9zZXBhcmF0b3IudHN4XCJcblxudHlwZSBNYXJrZG93bkNvbXBvbmVudHMgPSBSZWNvcmQ8c3RyaW5nLCBDb21wb25lbnRUeXBlPG5ldmVyPj5cblxuLyoqIFJlbmRlcnMgY29tcGlsZWQgTWFya2Rvd24gd2l0aCBMaXZlbWFyaydzIGNvbXBvbmVudHMgZm9yIGl0cyBIVE1MIGVsZW1lbnRzLFxuICogIGRpcmVjdGl2ZXMgYW5kIGNvZGUgYmxvY2tzOyBgY29tcG9uZW50c2AgYWRkcyBvciByZXBsYWNlcyBhbnkgb2YgdGhlbS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNYXJrZG93bihwcm9wczoge1xuICBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8eyBjb21wb25lbnRzPzogb2JqZWN0IH0+XG4gIHRvYz86IFRvY0l0ZW1bXVxuICBjb21wb25lbnRzPzogTWFya2Rvd25Db21wb25lbnRzXG59KSB7XG4gIGNvbnN0IENvbnRlbnQgPSBwcm9wcy5jb21wb25lbnRcbiAgY29uc3QgY29udGVudCA9IDxDb250ZW50IGNvbXBvbmVudHM9e3sgLi4uQ09NUE9ORU5UUywgLi4ucHJvcHMuY29tcG9uZW50cyB9fSAvPlxuICBpZiAoIXByb3BzLnRvYykgcmV0dXJuIGNvbnRlbnRcbiAgcmV0dXJuIDxUb2NDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwcm9wcy50b2N9Pntjb250ZW50fTwvVG9jQ29udGV4dC5Qcm92aWRlcj5cbn1cblxuY29uc3QgQ09NUE9ORU5UUyA9IHtcbiAgaHI6IFNlcGFyYXRvcixcbiAgaW1nOiBab29tSW1hZ2UsXG4gIHByZTogQ29kZUJsb2NrLFxuICB0YWJsZTogU29ydGFibGVUYWJsZSxcbiAgdGhlYWQ6IFRhYmxlSGVhZGVyLFxuICB0Ym9keTogVGFibGVCb2R5LFxuICB0cjogVGFibGVSb3csXG4gIHRoOiBUYWJsZUhlYWQsXG4gIHRkOiBUYWJsZUNlbGwsXG4gIGE6IEZvb3Rub3RlUmVmLFxuICBBYmJyLFxuICBBbnNpQ29kZSxcbiAgQXVkaW8sXG4gIEJhZGdlLFxuICBCdXR0b24sXG4gIENhbGxvdXQsXG4gIENhcmQsXG4gIENhcmRzLFxuICBDb2x1bW4sXG4gIENvbHVtbnMsXG4gIENvZGVUYWJzLFxuICBEZWZpbml0aW9uRGV0YWlsLFxuICBEZWZpbml0aW9uTGlzdCxcbiAgRGVmaW5pdGlvblRlcm0sXG4gIERldGFpbHMsXG4gIEZpbGV0cmVlLFxuICBJY29uLFxuICBNZXJtYWlkLFxuICBQYWNrYWdlVGFicyxcbiAgVGFiLFxuICBUYWJzLFxuICBUb2MsXG4gIFZpZGVvLFxuICAuLi5oZWFkaW5nQ29tcG9uZW50cyxcbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Suspense, lazy } from "react";
|
|
3
|
+
import { useMessages } from "../hooks/messages.js";
|
|
4
|
+
const MermaidRenderer = lazy(() => import("./MermaidRenderer.js"));
|
|
5
|
+
/** Lazily loads and renders a Mermaid diagram */
|
|
6
|
+
export function Mermaid(props) {
|
|
7
|
+
const t = useMessages();
|
|
8
|
+
return (_jsx(Suspense, { fallback: _jsx("div", { className: "not-prose mermaid flex justify-center", children: t("media.loadingDiagram") }), children: _jsx(MermaidRenderer, { children: props.children }) }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVybWFpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL01lcm1haWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFbEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxzQkFBdUIsQ0FBQyxDQUFDLENBQUE7QUFFbkUsaURBQWlEO0FBQ2pELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBMkI7SUFDakQsTUFBTSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUE7SUFDdkIsT0FBTyxDQUNMLEtBQUMsUUFBUSxJQUNQLFFBQVEsRUFDTixjQUFLLFNBQVMsRUFBQyx1Q0FBdUMsWUFDbkQsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEdBQ3RCLFlBR1IsS0FBQyxlQUFlLGNBQUUsS0FBSyxDQUFDLFFBQVEsR0FBbUIsR0FDMUMsQ0FDWixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1c3BlbnNlLCBsYXp5IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZU1lc3NhZ2VzIH0gZnJvbSBcIi4uL2hvb2tzL21lc3NhZ2VzLnRzXCJcblxuY29uc3QgTWVybWFpZFJlbmRlcmVyID0gbGF6eSgoKSA9PiBpbXBvcnQoXCIuL01lcm1haWRSZW5kZXJlci50c3hcIikpXG5cbi8qKiBMYXppbHkgbG9hZHMgYW5kIHJlbmRlcnMgYSBNZXJtYWlkIGRpYWdyYW0gKi9cbmV4cG9ydCBmdW5jdGlvbiBNZXJtYWlkKHByb3BzOiB7IGNoaWxkcmVuOiBzdHJpbmcgfSkge1xuICBjb25zdCB0ID0gdXNlTWVzc2FnZXMoKVxuICByZXR1cm4gKFxuICAgIDxTdXNwZW5zZVxuICAgICAgZmFsbGJhY2s9e1xuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vdC1wcm9zZSBtZXJtYWlkIGZsZXgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICB7dChcIm1lZGlhLmxvYWRpbmdEaWFncmFtXCIpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA+XG4gICAgICA8TWVybWFpZFJlbmRlcmVyPntwcm9wcy5jaGlsZHJlbn08L01lcm1haWRSZW5kZXJlcj5cbiAgICA8L1N1c3BlbnNlPlxuICApXG59XG4iXX0=
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
import mermaid from "mermaid";
|
|
4
|
+
mermaid.initialize({ startOnLoad: false });
|
|
5
|
+
// Module-wide so runs never overlap, even across effect re-runs: overlapping runs on
|
|
6
|
+
// one node reject with "reading 'firstChild'".
|
|
7
|
+
let renderQueue = Promise.resolve();
|
|
8
|
+
/** Renders a Mermaid diagram from a chart definition string */
|
|
9
|
+
export default function MermaidRenderer(props) {
|
|
10
|
+
const ref = useRef(null);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const el = ref.current;
|
|
13
|
+
if (!el)
|
|
14
|
+
return;
|
|
15
|
+
const render = () => {
|
|
16
|
+
renderQueue = renderQueue
|
|
17
|
+
.then(() => {
|
|
18
|
+
if (!el.isConnected)
|
|
19
|
+
return;
|
|
20
|
+
const isDark = document.documentElement.classList.contains("dark");
|
|
21
|
+
mermaid.initialize({
|
|
22
|
+
startOnLoad: false,
|
|
23
|
+
theme: isDark ? "dark" : "default",
|
|
24
|
+
});
|
|
25
|
+
el.textContent = props.children;
|
|
26
|
+
el.removeAttribute("data-processed");
|
|
27
|
+
return mermaid.run({ nodes: [el] });
|
|
28
|
+
})
|
|
29
|
+
.catch(error => {
|
|
30
|
+
if (el.isConnected)
|
|
31
|
+
console.error(error);
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
render();
|
|
35
|
+
const observer = new MutationObserver(render);
|
|
36
|
+
observer.observe(document.documentElement, {
|
|
37
|
+
attributes: true,
|
|
38
|
+
attributeFilter: ["class"],
|
|
39
|
+
});
|
|
40
|
+
return () => observer.disconnect();
|
|
41
|
+
}, [props.children]);
|
|
42
|
+
return _jsx("div", { ref: ref, className: "not-prose mermaid flex justify-center" });
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVybWFpZFJlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvTWVybWFpZFJlbmRlcmVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFBO0FBRTdCLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUUxQyxxRkFBcUY7QUFDckYsK0NBQStDO0FBQy9DLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtBQUVuQywrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE9BQU8sVUFBVSxlQUFlLENBQUMsS0FBMkI7SUFDakUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFpQixJQUFJLENBQUMsQ0FBQTtJQUV4QyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU07UUFFZixNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDbEIsV0FBVyxHQUFHLFdBQVc7aUJBQ3RCLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXO29CQUFFLE9BQU07Z0JBQzNCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDbEUsT0FBTyxDQUFDLFVBQVUsQ0FBQztvQkFDakIsV0FBVyxFQUFFLEtBQUs7b0JBQ2xCLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUztpQkFDbkMsQ0FBQyxDQUFBO2dCQUNGLEVBQUUsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQTtnQkFDL0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO2dCQUNwQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDckMsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDYixJQUFJLEVBQUUsQ0FBQyxXQUFXO29CQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDMUMsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLENBQUE7UUFFRCxNQUFNLEVBQUUsQ0FBQTtRQUVSLE1BQU0sUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDN0MsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFO1lBQ3pDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQztTQUMzQixDQUFDLENBQUE7UUFFRixPQUFPLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUNwQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUVwQixPQUFPLGNBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsdUNBQXVDLEdBQUcsQ0FBQTtBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IG1lcm1haWQgZnJvbSBcIm1lcm1haWRcIlxuXG5tZXJtYWlkLmluaXRpYWxpemUoeyBzdGFydE9uTG9hZDogZmFsc2UgfSlcblxuLy8gTW9kdWxlLXdpZGUgc28gcnVucyBuZXZlciBvdmVybGFwLCBldmVuIGFjcm9zcyBlZmZlY3QgcmUtcnVuczogb3ZlcmxhcHBpbmcgcnVucyBvblxuLy8gb25lIG5vZGUgcmVqZWN0IHdpdGggXCJyZWFkaW5nICdmaXJzdENoaWxkJ1wiLlxubGV0IHJlbmRlclF1ZXVlID0gUHJvbWlzZS5yZXNvbHZlKClcblxuLyoqIFJlbmRlcnMgYSBNZXJtYWlkIGRpYWdyYW0gZnJvbSBhIGNoYXJ0IGRlZmluaXRpb24gc3RyaW5nICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNZXJtYWlkUmVuZGVyZXIocHJvcHM6IHsgY2hpbGRyZW46IHN0cmluZyB9KSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gcmVmLmN1cnJlbnRcbiAgICBpZiAoIWVsKSByZXR1cm5cblxuICAgIGNvbnN0IHJlbmRlciA9ICgpID0+IHtcbiAgICAgIHJlbmRlclF1ZXVlID0gcmVuZGVyUXVldWVcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGlmICghZWwuaXNDb25uZWN0ZWQpIHJldHVyblxuICAgICAgICAgIGNvbnN0IGlzRGFyayA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJkYXJrXCIpXG4gICAgICAgICAgbWVybWFpZC5pbml0aWFsaXplKHtcbiAgICAgICAgICAgIHN0YXJ0T25Mb2FkOiBmYWxzZSxcbiAgICAgICAgICAgIHRoZW1lOiBpc0RhcmsgPyBcImRhcmtcIiA6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgZWwudGV4dENvbnRlbnQgPSBwcm9wcy5jaGlsZHJlblxuICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShcImRhdGEtcHJvY2Vzc2VkXCIpXG4gICAgICAgICAgcmV0dXJuIG1lcm1haWQucnVuKHsgbm9kZXM6IFtlbF0gfSlcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBpZiAoZWwuaXNDb25uZWN0ZWQpIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcmVuZGVyKClcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIocmVuZGVyKVxuICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbXCJjbGFzc1wiXSxcbiAgICB9KVxuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICB9LCBbcHJvcHMuY2hpbGRyZW5dKVxuXG4gIHJldHVybiA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9XCJub3QtcHJvc2UgbWVybWFpZCBmbGV4IGp1c3RpZnktY2VudGVyXCIgLz5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface PackageTabsProps {
|
|
2
|
+
npm: string;
|
|
3
|
+
pnpm: string;
|
|
4
|
+
yarn: string;
|
|
5
|
+
bun: string;
|
|
6
|
+
}
|
|
7
|
+
/** Tabbed code block showing a command for each package manager */
|
|
8
|
+
export declare function PackageTabs(props: PackageTabsProps): import("react").JSX.Element;
|
|
9
|
+
export {};
|