@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,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Check, Clipboard } from "lucide-react";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { useMessages } from "../hooks/messages.js";
|
|
5
|
+
const managers = ["npm", "pnpm", "yarn", "bun"];
|
|
6
|
+
/** Tabbed code block showing a command for each package manager */
|
|
7
|
+
export function PackageTabs(props) {
|
|
8
|
+
const [active, setActive] = useState("npm");
|
|
9
|
+
const [copied, setCopied] = useState(false);
|
|
10
|
+
const t = useMessages();
|
|
11
|
+
const commands = {
|
|
12
|
+
npm: props.npm,
|
|
13
|
+
pnpm: props.pnpm,
|
|
14
|
+
yarn: props.yarn,
|
|
15
|
+
bun: props.bun,
|
|
16
|
+
};
|
|
17
|
+
const handleCopy = () => {
|
|
18
|
+
navigator.clipboard.writeText(commands[active]);
|
|
19
|
+
setCopied(true);
|
|
20
|
+
setTimeout(() => setCopied(false), 2000);
|
|
21
|
+
};
|
|
22
|
+
return (_jsxs("figure", { className: "not-prose my-4 relative rounded-card border shadow-sm overflow-hidden text-sm bg-sidebar dark:bg-sidebar", children: [_jsxs("div", { className: "flex items-center border-b", children: [_jsx("div", { className: "flex flex-1 items-center", children: managers.map(pm => (_jsx("button", { type: "button", onClick: () => setActive(pm), className: `px-3 py-2 text-xs font-medium transition-colors ${pm === active
|
|
23
|
+
? "text-foreground border-b-2 border-foreground"
|
|
24
|
+
: "text-muted-foreground hover:text-foreground"}`, children: pm }, pm))) }), _jsx("button", { type: "button", onClick: handleCopy, className: "me-2 p-1 rounded-control text-muted-foreground hover:text-foreground transition-colors", "aria-label": t("code.copy"), children: copied ? _jsx(Check, { className: "size-3.5" }) : _jsx(Clipboard, { className: "size-3.5" }) })] }), _jsx("div", { className: "text-[0.8125rem] py-3.5 overflow-auto max-h-[600px]", children: _jsx("pre", { className: "min-w-full w-max", children: _jsx("code", { className: "flex flex-col", children: _jsx("span", { className: "px-4", children: commands[active] }) }) }) })] }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVRhYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9QYWNrYWdlVGFicy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDaEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBSWxELE1BQU0sUUFBUSxHQUFjLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFTMUQsbUVBQW1FO0FBQ25FLE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBdUI7SUFDakQsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxRQUFRLENBQVUsS0FBSyxDQUFDLENBQUE7SUFDcEQsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDM0MsTUFBTSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUE7SUFFdkIsTUFBTSxRQUFRLEdBQTRCO1FBQ3hDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztRQUNkLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtRQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDaEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO0tBQ2YsQ0FBQTtJQUVELE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRTtRQUN0QixTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUMvQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDZixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzFDLENBQUMsQ0FBQTtJQUVELE9BQU8sQ0FDTCxrQkFBUSxTQUFTLEVBQUMsMEdBQTBHLGFBQzFILGVBQUssU0FBUyxFQUFDLDRCQUE0QixhQUN6QyxjQUFLLFNBQVMsRUFBQywwQkFBMEIsWUFDdEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQ2xCLGlCQUVFLElBQUksRUFBQyxRQUFRLEVBQ2IsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFDNUIsU0FBUyxFQUFFLG1EQUNULEVBQUUsS0FBSyxNQUFNO2dDQUNYLENBQUMsQ0FBQyw4Q0FBOEM7Z0NBQ2hELENBQUMsQ0FBQyw2Q0FDTixFQUFFLFlBRUQsRUFBRSxJQVRFLEVBQUUsQ0FVQSxDQUNWLENBQUMsR0FDRSxFQUNOLGlCQUNFLElBQUksRUFBQyxRQUFRLEVBQ2IsT0FBTyxFQUFFLFVBQVUsRUFDbkIsU0FBUyxFQUFDLHdGQUF3RixnQkFDdEYsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUV6QixNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUMsS0FBSyxJQUFDLFNBQVMsRUFBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBQyxTQUFTLElBQUMsU0FBUyxFQUFDLFVBQVUsR0FBRyxHQUN0RSxJQUNMLEVBQ04sY0FBSyxTQUFTLEVBQUMscURBQXFELFlBQ2xFLGNBQUssU0FBUyxFQUFDLGtCQUFrQixZQUMvQixlQUFNLFNBQVMsRUFBQyxlQUFlLFlBQzdCLGVBQU0sU0FBUyxFQUFDLE1BQU0sWUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQVEsR0FDM0MsR0FDSCxHQUNGLElBQ0MsQ0FDVixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoZWNrLCBDbGlwYm9hcmQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZU1lc3NhZ2VzIH0gZnJvbSBcIi4uL2hvb2tzL21lc3NhZ2VzLnRzXCJcblxudHlwZSBNYW5hZ2VyID0gXCJucG1cIiB8IFwicG5wbVwiIHwgXCJ5YXJuXCIgfCBcImJ1blwiXG5cbmNvbnN0IG1hbmFnZXJzOiBNYW5hZ2VyW10gPSBbXCJucG1cIiwgXCJwbnBtXCIsIFwieWFyblwiLCBcImJ1blwiXVxuXG5pbnRlcmZhY2UgUGFja2FnZVRhYnNQcm9wcyB7XG4gIG5wbTogc3RyaW5nXG4gIHBucG06IHN0cmluZ1xuICB5YXJuOiBzdHJpbmdcbiAgYnVuOiBzdHJpbmdcbn1cblxuLyoqIFRhYmJlZCBjb2RlIGJsb2NrIHNob3dpbmcgYSBjb21tYW5kIGZvciBlYWNoIHBhY2thZ2UgbWFuYWdlciAqL1xuZXhwb3J0IGZ1bmN0aW9uIFBhY2thZ2VUYWJzKHByb3BzOiBQYWNrYWdlVGFic1Byb3BzKSB7XG4gIGNvbnN0IFthY3RpdmUsIHNldEFjdGl2ZV0gPSB1c2VTdGF0ZTxNYW5hZ2VyPihcIm5wbVwiKVxuICBjb25zdCBbY29waWVkLCBzZXRDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHQgPSB1c2VNZXNzYWdlcygpXG5cbiAgY29uc3QgY29tbWFuZHM6IFJlY29yZDxNYW5hZ2VyLCBzdHJpbmc+ID0ge1xuICAgIG5wbTogcHJvcHMubnBtLFxuICAgIHBucG06IHByb3BzLnBucG0sXG4gICAgeWFybjogcHJvcHMueWFybixcbiAgICBidW46IHByb3BzLmJ1bixcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29tbWFuZHNbYWN0aXZlXSlcbiAgICBzZXRDb3BpZWQodHJ1ZSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHNldENvcGllZChmYWxzZSksIDIwMDApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxmaWd1cmUgY2xhc3NOYW1lPVwibm90LXByb3NlIG15LTQgcmVsYXRpdmUgcm91bmRlZC1jYXJkIGJvcmRlciBzaGFkb3ctc20gb3ZlcmZsb3ctaGlkZGVuIHRleHQtc20gYmctc2lkZWJhciBkYXJrOmJnLXNpZGViYXJcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgYm9yZGVyLWJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtMSBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICB7bWFuYWdlcnMubWFwKHBtID0+IChcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAga2V5PXtwbX1cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZShwbSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTMgcHktMiB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgcG0gPT09IGFjdGl2ZVxuICAgICAgICAgICAgICAgICAgPyBcInRleHQtZm9yZWdyb3VuZCBib3JkZXItYi0yIGJvcmRlci1mb3JlZ3JvdW5kXCJcbiAgICAgICAgICAgICAgICAgIDogXCJ0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kXCJcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtwbX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgY2xhc3NOYW1lPVwibWUtMiBwLTEgcm91bmRlZC1jb250cm9sIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9e3QoXCJjb2RlLmNvcHlcIil9XG4gICAgICAgID5cbiAgICAgICAgICB7Y29waWVkID8gPENoZWNrIGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz4gOiA8Q2xpcGJvYXJkIGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz59XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWzAuODEyNXJlbV0gcHktMy41IG92ZXJmbG93LWF1dG8gbWF4LWgtWzYwMHB4XVwiPlxuICAgICAgICA8cHJlIGNsYXNzTmFtZT1cIm1pbi13LWZ1bGwgdy1tYXhcIj5cbiAgICAgICAgICA8Y29kZSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJweC00XCI+e2NvbW1hbmRzW2FjdGl2ZV19PC9zcGFuPlxuICAgICAgICAgIDwvY29kZT5cbiAgICAgICAgPC9wcmU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZ3VyZT5cbiAgKVxufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ComponentProps } from "react";
|
|
2
|
+
import { TableHeader, TableBody, TableRow, TableHead, TableCell } from "../elements/table.tsx";
|
|
3
|
+
/** Wraps markdown tables with click-to-sort column headers */
|
|
4
|
+
export declare function SortableTable(props: ComponentProps<"table">): import("react").JSX.Element;
|
|
5
|
+
export { TableHeader, TableBody, TableRow, TableHead, TableCell };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
import { Table, TableHeader, TableBody, TableRow, TableHead, TableCell, } from "../elements/table.js";
|
|
4
|
+
/** Wraps markdown tables with click-to-sort column headers */
|
|
5
|
+
export function SortableTable(props) {
|
|
6
|
+
const ref = useRef(null);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const container = ref.current;
|
|
9
|
+
if (!container)
|
|
10
|
+
return;
|
|
11
|
+
let activeCol = -1;
|
|
12
|
+
let ascending = true;
|
|
13
|
+
const headers = container.querySelectorAll("th");
|
|
14
|
+
const cleanups = [];
|
|
15
|
+
headers.forEach((th, colIndex) => {
|
|
16
|
+
th.style.cursor = "pointer";
|
|
17
|
+
th.classList.add("select-none");
|
|
18
|
+
const handler = () => {
|
|
19
|
+
if (activeCol === colIndex) {
|
|
20
|
+
ascending = !ascending;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
activeCol = colIndex;
|
|
24
|
+
ascending = true;
|
|
25
|
+
}
|
|
26
|
+
const tbody = container.querySelector("tbody");
|
|
27
|
+
if (!tbody)
|
|
28
|
+
return;
|
|
29
|
+
const rows = Array.from(tbody.querySelectorAll("tr"));
|
|
30
|
+
rows.sort((a, b) => {
|
|
31
|
+
const aVal = a.children[colIndex]?.textContent?.trim() ?? "";
|
|
32
|
+
const bVal = b.children[colIndex]?.textContent?.trim() ?? "";
|
|
33
|
+
const aNum = Number(aVal);
|
|
34
|
+
const bNum = Number(bVal);
|
|
35
|
+
const cmp = aVal !== "" && bVal !== "" && !isNaN(aNum) && !isNaN(bNum)
|
|
36
|
+
? aNum - bNum
|
|
37
|
+
: aVal.localeCompare(bVal);
|
|
38
|
+
return ascending ? cmp : -cmp;
|
|
39
|
+
});
|
|
40
|
+
for (const row of rows)
|
|
41
|
+
tbody.appendChild(row);
|
|
42
|
+
headers.forEach((h, i) => {
|
|
43
|
+
const indicator = h.querySelector("[data-sort]");
|
|
44
|
+
if (indicator)
|
|
45
|
+
indicator.remove();
|
|
46
|
+
if (i === colIndex) {
|
|
47
|
+
const span = document.createElement("span");
|
|
48
|
+
span.dataset.sort = "";
|
|
49
|
+
span.className = "ml-1 text-muted-foreground";
|
|
50
|
+
span.textContent = ascending ? "↑" : "↓";
|
|
51
|
+
h.appendChild(span);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
th.addEventListener("click", handler);
|
|
56
|
+
cleanups.push(() => th.removeEventListener("click", handler));
|
|
57
|
+
});
|
|
58
|
+
return () => cleanups.forEach(fn => fn());
|
|
59
|
+
}, []);
|
|
60
|
+
return (_jsx("div", { ref: ref, className: "not-prose", children: _jsx(Table, { ...props }) }));
|
|
61
|
+
}
|
|
62
|
+
export { TableHeader, TableBody, TableRow, TableHead, TableCell };
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29ydGFibGVUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL1NvcnRhYmxlVGFibGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBdUIsTUFBTSxPQUFPLENBQUE7QUFDOUQsT0FBTyxFQUNMLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sc0JBQXVCLENBQUE7QUFFOUIsOERBQThEO0FBQzlELE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBOEI7SUFDMUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFpQixJQUFJLENBQUMsQ0FBQTtJQUV4QyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQTtRQUM3QixJQUFJLENBQUMsU0FBUztZQUFFLE9BQU07UUFFdEIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbEIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFBO1FBRXBCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBYyxJQUFJLENBQUMsQ0FBQTtRQUM3RCxNQUFNLFFBQVEsR0FBbUIsRUFBRSxDQUFBO1FBRW5DLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDL0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFBO1lBQzNCLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBRS9CLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQzNCLFNBQVMsR0FBRyxDQUFDLFNBQVMsQ0FBQTtnQkFDeEIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFNBQVMsR0FBRyxRQUFRLENBQUE7b0JBQ3BCLFNBQVMsR0FBRyxJQUFJLENBQUE7Z0JBQ2xCLENBQUM7Z0JBRUQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtnQkFDOUMsSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTTtnQkFFbEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtnQkFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDakIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFBO29CQUM1RCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUE7b0JBQzVELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtvQkFDekIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO29CQUN6QixNQUFNLEdBQUcsR0FDUCxJQUFJLEtBQUssRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUN4RCxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUk7d0JBQ2IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQzlCLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO2dCQUMvQixDQUFDLENBQUMsQ0FBQTtnQkFDRixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUk7b0JBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFFOUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdkIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQTtvQkFDaEQsSUFBSSxTQUFTO3dCQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtvQkFDakMsSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ25CLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7d0JBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTt3QkFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyw0QkFBNEIsQ0FBQTt3QkFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO3dCQUN4QyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO29CQUNyQixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQyxDQUFBO1lBRUQsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUMvRCxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDM0MsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRU4sT0FBTyxDQUNMLGNBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsV0FBVyxZQUNsQyxLQUFDLEtBQUssT0FBSyxLQUFLLEdBQUksR0FDaEIsQ0FDUCxDQUFBO0FBQ0gsQ0FBQztBQUVELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdHlwZSBDb21wb25lbnRQcm9wcyB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1xuICBUYWJsZSxcbiAgVGFibGVIZWFkZXIsXG4gIFRhYmxlQm9keSxcbiAgVGFibGVSb3csXG4gIFRhYmxlSGVhZCxcbiAgVGFibGVDZWxsLFxufSBmcm9tIFwiLi4vZWxlbWVudHMvdGFibGUudHN4XCJcblxuLyoqIFdyYXBzIG1hcmtkb3duIHRhYmxlcyB3aXRoIGNsaWNrLXRvLXNvcnQgY29sdW1uIGhlYWRlcnMgKi9cbmV4cG9ydCBmdW5jdGlvbiBTb3J0YWJsZVRhYmxlKHByb3BzOiBDb21wb25lbnRQcm9wczxcInRhYmxlXCI+KSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIpIHJldHVyblxuXG4gICAgbGV0IGFjdGl2ZUNvbCA9IC0xXG4gICAgbGV0IGFzY2VuZGluZyA9IHRydWVcblxuICAgIGNvbnN0IGhlYWRlcnMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oXCJ0aFwiKVxuICAgIGNvbnN0IGNsZWFudXBzOiAoKCkgPT4gdm9pZClbXSA9IFtdXG5cbiAgICBoZWFkZXJzLmZvckVhY2goKHRoLCBjb2xJbmRleCkgPT4ge1xuICAgICAgdGguc3R5bGUuY3Vyc29yID0gXCJwb2ludGVyXCJcbiAgICAgIHRoLmNsYXNzTGlzdC5hZGQoXCJzZWxlY3Qtbm9uZVwiKVxuXG4gICAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICBpZiAoYWN0aXZlQ29sID09PSBjb2xJbmRleCkge1xuICAgICAgICAgIGFzY2VuZGluZyA9ICFhc2NlbmRpbmdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY3RpdmVDb2wgPSBjb2xJbmRleFxuICAgICAgICAgIGFzY2VuZGluZyA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRib2R5ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCJ0Ym9keVwiKVxuICAgICAgICBpZiAoIXRib2R5KSByZXR1cm5cblxuICAgICAgICBjb25zdCByb3dzID0gQXJyYXkuZnJvbSh0Ym9keS5xdWVyeVNlbGVjdG9yQWxsKFwidHJcIikpXG4gICAgICAgIHJvd3Muc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIGNvbnN0IGFWYWwgPSBhLmNoaWxkcmVuW2NvbEluZGV4XT8udGV4dENvbnRlbnQ/LnRyaW0oKSA/PyBcIlwiXG4gICAgICAgICAgY29uc3QgYlZhbCA9IGIuY2hpbGRyZW5bY29sSW5kZXhdPy50ZXh0Q29udGVudD8udHJpbSgpID8/IFwiXCJcbiAgICAgICAgICBjb25zdCBhTnVtID0gTnVtYmVyKGFWYWwpXG4gICAgICAgICAgY29uc3QgYk51bSA9IE51bWJlcihiVmFsKVxuICAgICAgICAgIGNvbnN0IGNtcCA9XG4gICAgICAgICAgICBhVmFsICE9PSBcIlwiICYmIGJWYWwgIT09IFwiXCIgJiYgIWlzTmFOKGFOdW0pICYmICFpc05hTihiTnVtKVxuICAgICAgICAgICAgICA/IGFOdW0gLSBiTnVtXG4gICAgICAgICAgICAgIDogYVZhbC5sb2NhbGVDb21wYXJlKGJWYWwpXG4gICAgICAgICAgcmV0dXJuIGFzY2VuZGluZyA/IGNtcCA6IC1jbXBcbiAgICAgICAgfSlcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykgdGJvZHkuYXBwZW5kQ2hpbGQocm93KVxuXG4gICAgICAgIGhlYWRlcnMuZm9yRWFjaCgoaCwgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluZGljYXRvciA9IGgucXVlcnlTZWxlY3RvcihcIltkYXRhLXNvcnRdXCIpXG4gICAgICAgICAgaWYgKGluZGljYXRvcikgaW5kaWNhdG9yLnJlbW92ZSgpXG4gICAgICAgICAgaWYgKGkgPT09IGNvbEluZGV4KSB7XG4gICAgICAgICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIilcbiAgICAgICAgICAgIHNwYW4uZGF0YXNldC5zb3J0ID0gXCJcIlxuICAgICAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSBcIm1sLTEgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCJcbiAgICAgICAgICAgIHNwYW4udGV4dENvbnRlbnQgPSBhc2NlbmRpbmcgPyBcIuKGkVwiIDogXCLihpNcIlxuICAgICAgICAgICAgaC5hcHBlbmRDaGlsZChzcGFuKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgdGguYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZXIpXG4gICAgICBjbGVhbnVwcy5wdXNoKCgpID0+IHRoLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVyKSlcbiAgICB9KVxuXG4gICAgcmV0dXJuICgpID0+IGNsZWFudXBzLmZvckVhY2goZm4gPT4gZm4oKSlcbiAgfSwgW10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9XCJub3QtcHJvc2VcIj5cbiAgICAgIDxUYWJsZSB7Li4ucHJvcHN9IC8+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZXhwb3J0IHsgVGFibGVIZWFkZXIsIFRhYmxlQm9keSwgVGFibGVSb3csIFRhYmxlSGVhZCwgVGFibGVDZWxsIH1cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Simple wrapper that provides a title prop for Tabs to read */
|
|
3
|
+
export function Tab(props) {
|
|
4
|
+
return _jsx("div", { children: props.children });
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvVGFiLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUVBQWlFO0FBQ2pFLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBbUQ7SUFDckUsT0FBTyx3QkFBTSxLQUFLLENBQUMsUUFBUSxHQUFPLENBQUE7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBTaW1wbGUgd3JhcHBlciB0aGF0IHByb3ZpZGVzIGEgdGl0bGUgcHJvcCBmb3IgVGFicyB0byByZWFkICovXG5leHBvcnQgZnVuY3Rpb24gVGFiKHByb3BzOiB7IHRpdGxlOiBzdHJpbmc7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICByZXR1cm4gPGRpdj57cHJvcHMuY2hpbGRyZW59PC9kaXY+XG59XG4iXX0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Children, isValidElement, useEffect, useState } from "react";
|
|
3
|
+
/** Tabbed container component for grouping content tabs with optional sync across groups */
|
|
4
|
+
export function Tabs(props) {
|
|
5
|
+
const children = Children.toArray(props.children);
|
|
6
|
+
const titles = children.map(child => isValidElement(child) ? child.props.title : "");
|
|
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 = titles.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, titles[i]);
|
|
23
|
+
window.dispatchEvent(new CustomEvent("livemark-tab-sync", {
|
|
24
|
+
detail: { sync: props.sync, title: titles[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 = titles.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, titles]);
|
|
42
|
+
return (_jsxs("div", { className: "not-prose my-4 rounded-card border bg-card", children: [_jsx("div", { className: "flex border-b", children: titles.map((title, i) => (_jsx("button", { type: "button", onClick: () => handleSelect(i), className: `px-4 py-2 text-sm 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: title }, title))) }), children.map((child, i) => (_jsx("div", { className: i === active ? "p-4 prose dark:prose-invert max-w-none" : "hidden", children: child }, titles[i])))] }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL1RhYnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRXJFLDRGQUE0RjtBQUM1RixNQUFNLFVBQVUsSUFBSSxDQUFDLEtBQW1EO0lBQ3RFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDbEMsY0FBYyxDQUFvQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDbEUsQ0FBQTtJQUVELE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRTtRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7WUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN6QixNQUFNLEtBQUssR0FDVCxPQUFPLE1BQU0sS0FBSyxXQUFXO1lBQzNCLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3BELENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDVixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDakMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzQixDQUFDLENBQUE7SUFFRCxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUVyRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFO1FBQ2pDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNaLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQTtZQUM5RCxNQUFNLENBQUMsYUFBYSxDQUNsQixJQUFJLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRTtnQkFDbkMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTthQUMvQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQUUsT0FBTTtRQUN2QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFO1lBQzNCLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUksQ0FBa0QsQ0FBQyxNQUFNLENBQUE7WUFDbEYsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUk7Z0JBQUUsT0FBTTtZQUMvQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2pDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzlCLENBQUMsQ0FBQTtRQUNELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNyRCxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN2RSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFFeEIsT0FBTyxDQUNMLGVBQUssU0FBUyxFQUFDLDRDQUE0QyxhQUN6RCxjQUFLLFNBQVMsRUFBQyxlQUFlLFlBQzNCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUN4QixpQkFFRSxJQUFJLEVBQUMsUUFBUSxFQUNiLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQzlCLFNBQVMsRUFBRSxrRUFDVCxDQUFDLEtBQUssTUFBTTt3QkFDVixDQUFDLENBQUMsa0RBQWtEO3dCQUNwRCxDQUFDLENBQUMsNkNBQ04sRUFBRSxZQUVELEtBQUssSUFURCxLQUFLLENBVUgsQ0FDVixDQUFDLEdBQ0UsRUFDTCxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDMUIsY0FFRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxDQUFDLFFBQVEsWUFFNUUsS0FBSyxJQUhELE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FJVixDQUNQLENBQUMsSUFDRSxDQUNQLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hpbGRyZW4sIGlzVmFsaWRFbGVtZW50LCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcblxuLyoqIFRhYmJlZCBjb250YWluZXIgY29tcG9uZW50IGZvciBncm91cGluZyBjb250ZW50IHRhYnMgd2l0aCBvcHRpb25hbCBzeW5jIGFjcm9zcyBncm91cHMgKi9cbmV4cG9ydCBmdW5jdGlvbiBUYWJzKHByb3BzOiB7IHN5bmM/OiBzdHJpbmc7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICBjb25zdCBjaGlsZHJlbiA9IENoaWxkcmVuLnRvQXJyYXkocHJvcHMuY2hpbGRyZW4pXG4gIGNvbnN0IHRpdGxlcyA9IGNoaWxkcmVuLm1hcChjaGlsZCA9PlxuICAgIGlzVmFsaWRFbGVtZW50PHsgdGl0bGU6IHN0cmluZyB9PihjaGlsZCkgPyBjaGlsZC5wcm9wcy50aXRsZSA6IFwiXCIsXG4gIClcblxuICBjb25zdCBnZXRJbml0aWFsSW5kZXggPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5zeW5jKSByZXR1cm4gMFxuICAgIGNvbnN0IHNhdmVkID1cbiAgICAgIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxpdmVtYXJrLXRhYi1cIiArIHByb3BzLnN5bmMpXG4gICAgICAgIDogbnVsbFxuICAgIGlmICghc2F2ZWQpIHJldHVybiAwXG4gICAgY29uc3QgaWR4ID0gdGl0bGVzLmluZGV4T2Yoc2F2ZWQpXG4gICAgcmV0dXJuIGlkeCA+PSAwID8gaWR4IDogMFxuICB9XG5cbiAgY29uc3QgW2FjdGl2ZSwgc2V0QWN0aXZlXSA9IHVzZVN0YXRlKGdldEluaXRpYWxJbmRleClcblxuICBjb25zdCBoYW5kbGVTZWxlY3QgPSAoaTogbnVtYmVyKSA9PiB7XG4gICAgc2V0QWN0aXZlKGkpXG4gICAgaWYgKHByb3BzLnN5bmMpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibGl2ZW1hcmstdGFiLVwiICsgcHJvcHMuc3luYywgdGl0bGVzW2ldISlcbiAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoXCJsaXZlbWFyay10YWItc3luY1wiLCB7XG4gICAgICAgICAgZGV0YWlsOiB7IHN5bmM6IHByb3BzLnN5bmMsIHRpdGxlOiB0aXRsZXNbaV0gfSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXByb3BzLnN5bmMpIHJldHVyblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgc3luYywgdGl0bGUgfSA9IChlIGFzIEN1c3RvbUV2ZW50PHsgc3luYzogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0+KS5kZXRhaWxcbiAgICAgIGlmIChzeW5jICE9PSBwcm9wcy5zeW5jKSByZXR1cm5cbiAgICAgIGNvbnN0IGlkeCA9IHRpdGxlcy5pbmRleE9mKHRpdGxlKVxuICAgICAgaWYgKGlkeCA+PSAwKSBzZXRBY3RpdmUoaWR4KVxuICAgIH1cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxpdmVtYXJrLXRhYi1zeW5jXCIsIGhhbmRsZXIpXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibGl2ZW1hcmstdGFiLXN5bmNcIiwgaGFuZGxlcilcbiAgfSwgW3Byb3BzLnN5bmMsIHRpdGxlc10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vdC1wcm9zZSBteS00IHJvdW5kZWQtY2FyZCBib3JkZXIgYmctY2FyZFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGJvcmRlci1iXCI+XG4gICAgICAgIHt0aXRsZXMubWFwKCh0aXRsZSwgaSkgPT4gKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGtleT17dGl0bGV9XG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChpKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyICR7XG4gICAgICAgICAgICAgIGkgPT09IGFjdGl2ZVxuICAgICAgICAgICAgICAgID8gXCJ0ZXh0LWZvcmVncm91bmQgYm9yZGVyLWItMiBib3JkZXItcHJpbWFyeSAtbWItcHhcIlxuICAgICAgICAgICAgICAgIDogXCJ0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kXCJcbiAgICAgICAgICAgIH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIHtjaGlsZHJlbi5tYXAoKGNoaWxkLCBpKSA9PiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBrZXk9e3RpdGxlc1tpXX1cbiAgICAgICAgICBjbGFzc05hbWU9e2kgPT09IGFjdGl2ZSA/IFwicC00IHByb3NlIGRhcms6cHJvc2UtaW52ZXJ0IG1heC13LW5vbmVcIiA6IFwiaGlkZGVuXCJ9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGR9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useTocItems } from "../helpers/toc-context.js";
|
|
3
|
+
import { useMessages } from "../hooks/messages.js";
|
|
4
|
+
/** Renders the page's table of contents inline within the content */
|
|
5
|
+
export function Toc(props) {
|
|
6
|
+
const allItems = useTocItems();
|
|
7
|
+
const t = useMessages();
|
|
8
|
+
const maxDepth = props.maxLevel ? Number(props.maxLevel) : 4;
|
|
9
|
+
const items = allItems.filter(item => item.depth <= maxDepth);
|
|
10
|
+
if (items.length === 0)
|
|
11
|
+
return null;
|
|
12
|
+
return (_jsxs("nav", { className: "not-prose my-8 rounded-card border border-border bg-card p-6", children: [_jsx("p", { className: "text-base font-semibold mb-4", children: t("toc.inline") }), _jsx("ul", { className: "text-base space-y-2.5", children: items.map(item => (_jsx("li", { style: { paddingLeft: `${(item.depth - 2) * 1.25}rem` }, children: _jsx("a", { href: item.url, className: "text-muted-foreground hover:text-primary transition-colors", children: item.title }) }, item.url))) })] }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvVG9jLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVsRCxxRUFBcUU7QUFDckUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUE0QjtJQUM5QyxNQUFNLFFBQVEsR0FBRyxXQUFXLEVBQUUsQ0FBQTtJQUM5QixNQUFNLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQTtJQUN2QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDNUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLENBQUE7SUFFN0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUVuQyxPQUFPLENBQ0wsZUFBSyxTQUFTLEVBQUMsOERBQThELGFBQzNFLFlBQUcsU0FBUyxFQUFDLDhCQUE4QixZQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBSyxFQUNqRSxhQUFJLFNBQVMsRUFBQyx1QkFBdUIsWUFDbEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ2pCLGFBQW1CLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssRUFBRSxZQUN4RSxZQUNFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUNkLFNBQVMsRUFBQyw0REFBNEQsWUFFckUsSUFBSSxDQUFDLEtBQUssR0FDVCxJQU5HLElBQUksQ0FBQyxHQUFHLENBT1osQ0FDTixDQUFDLEdBQ0MsSUFDRCxDQUNQLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlVG9jSXRlbXMgfSBmcm9tIFwiLi4vaGVscGVycy90b2MtY29udGV4dC50c1wiXG5pbXBvcnQgeyB1c2VNZXNzYWdlcyB9IGZyb20gXCIuLi9ob29rcy9tZXNzYWdlcy50c1wiXG5cbi8qKiBSZW5kZXJzIHRoZSBwYWdlJ3MgdGFibGUgb2YgY29udGVudHMgaW5saW5lIHdpdGhpbiB0aGUgY29udGVudCAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRvYyhwcm9wczogeyBtYXhMZXZlbD86IHN0cmluZyB9KSB7XG4gIGNvbnN0IGFsbEl0ZW1zID0gdXNlVG9jSXRlbXMoKVxuICBjb25zdCB0ID0gdXNlTWVzc2FnZXMoKVxuICBjb25zdCBtYXhEZXB0aCA9IHByb3BzLm1heExldmVsID8gTnVtYmVyKHByb3BzLm1heExldmVsKSA6IDRcbiAgY29uc3QgaXRlbXMgPSBhbGxJdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmRlcHRoIDw9IG1heERlcHRoKVxuXG4gIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIChcbiAgICA8bmF2IGNsYXNzTmFtZT1cIm5vdC1wcm9zZSBteS04IHJvdW5kZWQtY2FyZCBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1jYXJkIHAtNlwiPlxuICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgbWItNFwiPnt0KFwidG9jLmlubGluZVwiKX08L3A+XG4gICAgICA8dWwgY2xhc3NOYW1lPVwidGV4dC1iYXNlIHNwYWNlLXktMi41XCI+XG4gICAgICAgIHtpdGVtcy5tYXAoaXRlbSA9PiAoXG4gICAgICAgICAgPGxpIGtleT17aXRlbS51cmx9IHN0eWxlPXt7IHBhZGRpbmdMZWZ0OiBgJHsoaXRlbS5kZXB0aCAtIDIpICogMS4yNX1yZW1gIH19PlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaHJlZj17aXRlbS51cmx9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXRlbS50aXRsZX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApKX1cbiAgICAgIDwvdWw+XG4gICAgPC9uYXY+XG4gIClcbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { parseYoutubeId } from "../helpers/youtube-id.js";
|
|
3
|
+
import { useMessages } from "../hooks/messages.js";
|
|
4
|
+
/** Renders a responsive YouTube iframe embed */
|
|
5
|
+
export function Video(props) {
|
|
6
|
+
const t = useMessages();
|
|
7
|
+
const id = parseYoutubeId(props.url);
|
|
8
|
+
if (!id) {
|
|
9
|
+
return (_jsx("p", { children: _jsx("a", { href: props.url, children: props.url }) }));
|
|
10
|
+
}
|
|
11
|
+
return (_jsx("div", { className: "not-prose my-4 overflow-hidden rounded-card border", children: _jsx("div", { className: "aspect-video", children: _jsx("iframe", { className: "h-full w-full", src: `https://www.youtube.com/embed/${id}`, title: t("media.youtube"), allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture", allowFullScreen: true }) }) }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlkZW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9WaWRlby50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDbEQsZ0RBQWdEO0FBQ2hELE1BQU0sVUFBVSxLQUFLLENBQUMsS0FBc0I7SUFDMUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUE7SUFDdkIsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNwQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixPQUFPLENBQ0wsc0JBQ0UsWUFBRyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsWUFBRyxLQUFLLENBQUMsR0FBRyxHQUFLLEdBQ2pDLENBQ0wsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLENBQ0wsY0FBSyxTQUFTLEVBQUMsb0RBQW9ELFlBQ2pFLGNBQUssU0FBUyxFQUFDLGNBQWMsWUFDM0IsaUJBQ0UsU0FBUyxFQUFDLGVBQWUsRUFDekIsR0FBRyxFQUFFLGlDQUFpQyxFQUFFLEVBQUUsRUFDMUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFDekIsS0FBSyxFQUFDLDBGQUEwRixFQUNoRyxlQUFlLFNBQ2YsR0FDRSxHQUNGLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZVlvdXR1YmVJZCB9IGZyb20gXCIuLi9oZWxwZXJzL3lvdXR1YmUtaWQudHNcIlxuaW1wb3J0IHsgdXNlTWVzc2FnZXMgfSBmcm9tIFwiLi4vaG9va3MvbWVzc2FnZXMudHNcIlxuLyoqIFJlbmRlcnMgYSByZXNwb25zaXZlIFlvdVR1YmUgaWZyYW1lIGVtYmVkICovXG5leHBvcnQgZnVuY3Rpb24gVmlkZW8ocHJvcHM6IHsgdXJsOiBzdHJpbmcgfSkge1xuICBjb25zdCB0ID0gdXNlTWVzc2FnZXMoKVxuICBjb25zdCBpZCA9IHBhcnNlWW91dHViZUlkKHByb3BzLnVybClcbiAgaWYgKCFpZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8cD5cbiAgICAgICAgPGEgaHJlZj17cHJvcHMudXJsfT57cHJvcHMudXJsfTwvYT5cbiAgICAgIDwvcD5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibm90LXByb3NlIG15LTQgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtY2FyZCBib3JkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXNwZWN0LXZpZGVvXCI+XG4gICAgICAgIDxpZnJhbWVcbiAgICAgICAgICBjbGFzc05hbWU9XCJoLWZ1bGwgdy1mdWxsXCJcbiAgICAgICAgICBzcmM9e2BodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8ke2lkfWB9XG4gICAgICAgICAgdGl0bGU9e3QoXCJtZWRpYS55b3V0dWJlXCIpfVxuICAgICAgICAgIGFsbG93PVwiYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGNsaXBib2FyZC13cml0ZTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZVwiXG4gICAgICAgICAgYWxsb3dGdWxsU2NyZWVuXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import Zoom from "react-medium-image-zoom";
|
|
4
|
+
import "react-medium-image-zoom/dist/styles.css";
|
|
5
|
+
/** Image component with click-to-zoom and light/dark theme variant support */
|
|
6
|
+
export function ZoomImage(props) {
|
|
7
|
+
const [mounted, setMounted] = useState(false);
|
|
8
|
+
useEffect(() => setMounted(true), []);
|
|
9
|
+
const src = props.src ?? "";
|
|
10
|
+
let imgProps = props;
|
|
11
|
+
if (src.endsWith("#light")) {
|
|
12
|
+
imgProps = { ...props, src: src.slice(0, -6), className: "dark:hidden" };
|
|
13
|
+
}
|
|
14
|
+
else if (src.endsWith("#dark")) {
|
|
15
|
+
imgProps = {
|
|
16
|
+
...props,
|
|
17
|
+
src: src.slice(0, -5),
|
|
18
|
+
className: "hidden dark:block",
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const img = _jsx("img", { ...imgProps, alt: imgProps.alt ?? "" });
|
|
22
|
+
if (!mounted)
|
|
23
|
+
return img;
|
|
24
|
+
return _jsx(Zoom, { children: img });
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9vbUltYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvWm9vbUltYWdlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQXVCLE1BQU0sT0FBTyxDQUFBO0FBQ2hFLE9BQU8sSUFBSSxNQUFNLHlCQUF5QixDQUFBO0FBQzFDLE9BQU8seUNBQXlDLENBQUE7QUFFaEQsOEVBQThFO0FBQzlFLE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBNEI7SUFDcEQsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0MsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUVyQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQTtJQUMzQixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUE7SUFDcEIsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDM0IsUUFBUSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxDQUFBO0lBQzFFLENBQUM7U0FBTSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxRQUFRLEdBQUc7WUFDVCxHQUFHLEtBQUs7WUFDUixHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckIsU0FBUyxFQUFFLG1CQUFtQjtTQUMvQixDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLGlCQUFTLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUksQ0FBQTtJQUMxRCxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sR0FBRyxDQUFBO0lBQ3hCLE9BQU8sS0FBQyxJQUFJLGNBQUUsR0FBRyxHQUFRLENBQUE7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUsIHR5cGUgQ29tcG9uZW50UHJvcHMgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFpvb20gZnJvbSBcInJlYWN0LW1lZGl1bS1pbWFnZS16b29tXCJcbmltcG9ydCBcInJlYWN0LW1lZGl1bS1pbWFnZS16b29tL2Rpc3Qvc3R5bGVzLmNzc1wiXG5cbi8qKiBJbWFnZSBjb21wb25lbnQgd2l0aCBjbGljay10by16b29tIGFuZCBsaWdodC9kYXJrIHRoZW1lIHZhcmlhbnQgc3VwcG9ydCAqL1xuZXhwb3J0IGZ1bmN0aW9uIFpvb21JbWFnZShwcm9wczogQ29tcG9uZW50UHJvcHM8XCJpbWdcIj4pIHtcbiAgY29uc3QgW21vdW50ZWQsIHNldE1vdW50ZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRNb3VudGVkKHRydWUpLCBbXSlcblxuICBjb25zdCBzcmMgPSBwcm9wcy5zcmMgPz8gXCJcIlxuICBsZXQgaW1nUHJvcHMgPSBwcm9wc1xuICBpZiAoc3JjLmVuZHNXaXRoKFwiI2xpZ2h0XCIpKSB7XG4gICAgaW1nUHJvcHMgPSB7IC4uLnByb3BzLCBzcmM6IHNyYy5zbGljZSgwLCAtNiksIGNsYXNzTmFtZTogXCJkYXJrOmhpZGRlblwiIH1cbiAgfSBlbHNlIGlmIChzcmMuZW5kc1dpdGgoXCIjZGFya1wiKSkge1xuICAgIGltZ1Byb3BzID0ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBzcmM6IHNyYy5zbGljZSgwLCAtNSksXG4gICAgICBjbGFzc05hbWU6IFwiaGlkZGVuIGRhcms6YmxvY2tcIixcbiAgICB9XG4gIH1cblxuICBjb25zdCBpbWcgPSA8aW1nIHsuLi5pbWdQcm9wc30gYWx0PXtpbWdQcm9wcy5hbHQgPz8gXCJcIn0gLz5cbiAgaWYgKCFtb3VudGVkKSByZXR1cm4gaW1nXG4gIHJldHVybiA8Wm9vbT57aW1nfTwvWm9vbT5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const badgeVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "destructive" | "ghost" | "link" | "outline" | "positive" | "secondary" | "warning" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
declare function Badge({ className, variant, render, ...props }: useRender.ComponentProps<"span"> & VariantProps<typeof badgeVariants>): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
7
|
+
export { Badge, badgeVariants };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
2
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { cn } from "cn";
|
|
5
|
+
const badgeVariants = cva("h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive overflow-hidden group/badge", {
|
|
6
|
+
variants: {
|
|
7
|
+
variant: {
|
|
8
|
+
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
|
|
9
|
+
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
|
|
10
|
+
destructive: "bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20",
|
|
11
|
+
positive: "bg-positive/10 [a]:hover:bg-positive/20 focus-visible:ring-positive/20 dark:focus-visible:ring-positive/40 text-positive-tint-foreground dark:bg-positive/20",
|
|
12
|
+
warning: "bg-warning/10 [a]:hover:bg-warning/20 focus-visible:ring-warning/20 dark:focus-visible:ring-warning/40 text-warning-tint-foreground dark:bg-warning/20",
|
|
13
|
+
outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
|
|
14
|
+
ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
|
|
15
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
defaultVariants: {
|
|
19
|
+
variant: "default",
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
function Badge({ className, variant = "default", render, ...props }) {
|
|
23
|
+
return useRender({
|
|
24
|
+
defaultTagName: "span",
|
|
25
|
+
props: mergeProps({
|
|
26
|
+
className: cn(badgeVariants({ className, variant })),
|
|
27
|
+
}, props),
|
|
28
|
+
render,
|
|
29
|
+
state: {
|
|
30
|
+
slot: "badge",
|
|
31
|
+
variant,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export { Badge, badgeVariants };
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvZWxlbWVudHMvYmFkZ2UudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDckQsT0FBTyxFQUFFLEdBQUcsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRXZCLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FDdkIsNGVBQTRlLEVBQzVlO0lBQ0UsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFO1lBQ1AsT0FBTyxFQUFFLDREQUE0RDtZQUNyRSxTQUFTLEVBQUUsa0VBQWtFO1lBQzdFLFdBQVcsRUFDVCxnS0FBZ0s7WUFDbEssUUFBUSxFQUNOLDhKQUE4SjtZQUNoSyxPQUFPLEVBQ0wsd0pBQXdKO1lBQzFKLE9BQU8sRUFDTCxrRkFBa0Y7WUFDcEYsS0FBSyxFQUFFLG1FQUFtRTtZQUMxRSxJQUFJLEVBQUUsaURBQWlEO1NBQ3hEO0tBQ0Y7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsU0FBUztLQUNuQjtDQUNGLENBQ0YsQ0FBQTtBQUVELFNBQVMsS0FBSyxDQUFDLEVBQ2IsU0FBUyxFQUNULE9BQU8sR0FBRyxTQUFTLEVBQ25CLE1BQU0sRUFDTixHQUFHLEtBQUssRUFDOEQ7SUFDdEUsT0FBTyxTQUFTLENBQUM7UUFDZixjQUFjLEVBQUUsTUFBTTtRQUN0QixLQUFLLEVBQUUsVUFBVSxDQUNmO1lBQ0UsU0FBUyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNyRCxFQUNELEtBQUssQ0FDTjtRQUNELE1BQU07UUFDTixLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU87U0FDUjtLQUNGLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVyZ2VQcm9wcyB9IGZyb20gXCJAYmFzZS11aS9yZWFjdC9tZXJnZS1wcm9wc1wiXG5pbXBvcnQgeyB1c2VSZW5kZXIgfSBmcm9tIFwiQGJhc2UtdWkvcmVhY3QvdXNlLXJlbmRlclwiXG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJjblwiXG5cbmNvbnN0IGJhZGdlVmFyaWFudHMgPSBjdmEoXG4gIFwiaC01IGdhcC0xIHJvdW5kZWQtNHhsIGJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgcHgtMiBweS0wLjUgdGV4dC14cyBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBoYXMtZGF0YS1baWNvbj1pbmxpbmUtZW5kXTpwci0xLjUgaGFzLWRhdGEtW2ljb249aW5saW5lLXN0YXJ0XTpwbC0xLjUgWyY+c3ZnXTpzaXplLTMhIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LWZpdCB3aGl0ZXNwYWNlLW5vd3JhcCBzaHJpbmstMCBbJj5zdmddOnBvaW50ZXItZXZlbnRzLW5vbmUgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBmb2N1cy12aXNpYmxlOnJpbmctWzNweF0gYXJpYS1pbnZhbGlkOnJpbmctZGVzdHJ1Y3RpdmUvMjAgZGFyazphcmlhLWludmFsaWQ6cmluZy1kZXN0cnVjdGl2ZS80MCBhcmlhLWludmFsaWQ6Ym9yZGVyLWRlc3RydWN0aXZlIG92ZXJmbG93LWhpZGRlbiBncm91cC9iYWRnZVwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIFthXTpob3ZlcjpiZy1wcmltYXJ5LzgwXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJiZy1zZWNvbmRhcnkgdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBbYV06aG92ZXI6Ymctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOlxuICAgICAgICAgIFwiYmctZGVzdHJ1Y3RpdmUvMTAgW2FdOmhvdmVyOmJnLWRlc3RydWN0aXZlLzIwIGZvY3VzLXZpc2libGU6cmluZy1kZXN0cnVjdGl2ZS8yMCBkYXJrOmZvY3VzLXZpc2libGU6cmluZy1kZXN0cnVjdGl2ZS80MCB0ZXh0LWRlc3RydWN0aXZlIGRhcms6YmctZGVzdHJ1Y3RpdmUvMjBcIixcbiAgICAgICAgcG9zaXRpdmU6XG4gICAgICAgICAgXCJiZy1wb3NpdGl2ZS8xMCBbYV06aG92ZXI6YmctcG9zaXRpdmUvMjAgZm9jdXMtdmlzaWJsZTpyaW5nLXBvc2l0aXZlLzIwIGRhcms6Zm9jdXMtdmlzaWJsZTpyaW5nLXBvc2l0aXZlLzQwIHRleHQtcG9zaXRpdmUtdGludC1mb3JlZ3JvdW5kIGRhcms6YmctcG9zaXRpdmUvMjBcIixcbiAgICAgICAgd2FybmluZzpcbiAgICAgICAgICBcImJnLXdhcm5pbmcvMTAgW2FdOmhvdmVyOmJnLXdhcm5pbmcvMjAgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcvMjAgZGFyazpmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZy80MCB0ZXh0LXdhcm5pbmctdGludC1mb3JlZ3JvdW5kIGRhcms6Ymctd2FybmluZy8yMFwiLFxuICAgICAgICBvdXRsaW5lOlxuICAgICAgICAgIFwiYm9yZGVyLWJvcmRlciB0ZXh0LWZvcmVncm91bmQgW2FdOmhvdmVyOmJnLW11dGVkIFthXTpob3Zlcjp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgZ2hvc3Q6IFwiaG92ZXI6YmctbXV0ZWQgaG92ZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGRhcms6aG92ZXI6YmctbXV0ZWQvNTBcIixcbiAgICAgICAgbGluazogXCJ0ZXh0LXByaW1hcnkgdW5kZXJsaW5lLW9mZnNldC00IGhvdmVyOnVuZGVybGluZVwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbilcblxuZnVuY3Rpb24gQmFkZ2Uoe1xuICBjbGFzc05hbWUsXG4gIHZhcmlhbnQgPSBcImRlZmF1bHRcIixcbiAgcmVuZGVyLFxuICAuLi5wcm9wc1xufTogdXNlUmVuZGVyLkNvbXBvbmVudFByb3BzPFwic3BhblwiPiAmIFZhcmlhbnRQcm9wczx0eXBlb2YgYmFkZ2VWYXJpYW50cz4pIHtcbiAgcmV0dXJuIHVzZVJlbmRlcih7XG4gICAgZGVmYXVsdFRhZ05hbWU6IFwic3BhblwiLFxuICAgIHByb3BzOiBtZXJnZVByb3BzPFwic3BhblwiPihcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbihiYWRnZVZhcmlhbnRzKHsgY2xhc3NOYW1lLCB2YXJpYW50IH0pKSxcbiAgICAgIH0sXG4gICAgICBwcm9wcyxcbiAgICApLFxuICAgIHJlbmRlcixcbiAgICBzdGF0ZToge1xuICAgICAgc2xvdDogXCJiYWRnZVwiLFxuICAgICAgdmFyaWFudCxcbiAgICB9LFxuICB9KVxufVxuXG5leHBvcnQgeyBCYWRnZSwgYmFkZ2VWYXJpYW50cyB9XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Button as ButtonPrimitive } from "@base-ui/react/button";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const buttonVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "destructive" | "ghost" | "link" | "outline" | "positive" | "secondary" | "warning" | null | undefined;
|
|
5
|
+
size?: "default" | "icon" | "icon-lg" | "icon-sm" | "icon-xs" | "lg" | "sm" | "xs" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
declare function Button({ className, variant, size, ...props }: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>): import("react").JSX.Element;
|
|
8
|
+
export { Button, buttonVariants };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Button as ButtonPrimitive } from "@base-ui/react/button";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { cn } from "cn";
|
|
5
|
+
const buttonVariants = cva("focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-control border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none", {
|
|
6
|
+
variants: {
|
|
7
|
+
variant: {
|
|
8
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
9
|
+
outline: "border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground shadow-xs",
|
|
10
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
11
|
+
ghost: "hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground",
|
|
12
|
+
destructive: "bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30",
|
|
13
|
+
positive: "bg-positive/10 hover:bg-positive/20 focus-visible:ring-positive/20 dark:focus-visible:ring-positive/40 dark:bg-positive/20 text-positive-tint-foreground focus-visible:border-positive/40 dark:hover:bg-positive/30",
|
|
14
|
+
warning: "bg-warning/10 hover:bg-warning/20 focus-visible:ring-warning/20 dark:focus-visible:ring-warning/40 dark:bg-warning/20 text-warning-tint-foreground focus-visible:border-warning/40 dark:hover:bg-warning/30",
|
|
15
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
16
|
+
},
|
|
17
|
+
size: {
|
|
18
|
+
default: "h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-control has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
19
|
+
xs: "h-6 gap-1 rounded-control-xs px-2 text-xs in-data-[slot=button-group]:rounded-control has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
20
|
+
sm: "h-8 gap-1 rounded-control-sm px-2.5 in-data-[slot=button-group]:rounded-control has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5",
|
|
21
|
+
lg: "h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
|
|
22
|
+
icon: "size-9",
|
|
23
|
+
"icon-xs": "size-6 rounded-control-xs in-data-[slot=button-group]:rounded-control [&_svg:not([class*='size-'])]:size-3",
|
|
24
|
+
"icon-sm": "size-8 rounded-control-sm in-data-[slot=button-group]:rounded-control",
|
|
25
|
+
"icon-lg": "size-10",
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
defaultVariants: {
|
|
29
|
+
variant: "default",
|
|
30
|
+
size: "default",
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
function Button({ className, variant = "default", size = "default", ...props }) {
|
|
34
|
+
return (_jsx(ButtonPrimitive, { "data-slot": "button", className: cn(buttonVariants({ variant, size, className })), ...props }));
|
|
35
|
+
}
|
|
36
|
+
export { Button, buttonVariants };
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2VsZW1lbnRzL2J1dHRvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRXZCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FDeEIsK2pCQUErakIsRUFDL2pCO0lBQ0UsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFO1lBQ1AsT0FBTyxFQUFFLHdEQUF3RDtZQUNqRSxPQUFPLEVBQ0wsMkxBQTJMO1lBQzdMLFNBQVMsRUFDUCxpSUFBaUk7WUFDbkksS0FBSyxFQUNILGtIQUFrSDtZQUNwSCxXQUFXLEVBQ1QsNk5BQTZOO1lBQy9OLFFBQVEsRUFDTixxTkFBcU47WUFDdk4sT0FBTyxFQUNMLDZNQUE2TTtZQUMvTSxJQUFJLEVBQUUsaURBQWlEO1NBQ3hEO1FBQ0QsSUFBSSxFQUFFO1lBQ0osT0FBTyxFQUNMLGtJQUFrSTtZQUNwSSxFQUFFLEVBQUUsa01BQWtNO1lBQ3RNLEVBQUUsRUFBRSx1SkFBdUo7WUFDM0osRUFBRSxFQUFFLHVGQUF1RjtZQUMzRixJQUFJLEVBQUUsUUFBUTtZQUNkLFNBQVMsRUFDUCw0R0FBNEc7WUFDOUcsU0FBUyxFQUNQLHVFQUF1RTtZQUN6RSxTQUFTLEVBQUUsU0FBUztTQUNyQjtLQUNGO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsT0FBTyxFQUFFLFNBQVM7UUFDbEIsSUFBSSxFQUFFLFNBQVM7S0FDaEI7Q0FDRixDQUNGLENBQUE7QUFFRCxTQUFTLE1BQU0sQ0FBQyxFQUNkLFNBQVMsRUFDVCxPQUFPLEdBQUcsU0FBUyxFQUNuQixJQUFJLEdBQUcsU0FBUyxFQUNoQixHQUFHLEtBQUssRUFDb0Q7SUFDNUQsT0FBTyxDQUNMLEtBQUMsZUFBZSxpQkFDSixRQUFRLEVBQ2xCLFNBQVMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQ3ZELEtBQUssR0FDVCxDQUNILENBQUE7QUFDSCxDQUFDO0FBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1dHRvbiBhcyBCdXR0b25QcmltaXRpdmUgfSBmcm9tIFwiQGJhc2UtdWkvcmVhY3QvYnV0dG9uXCJcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCJcbmltcG9ydCB7IGNuIH0gZnJvbSBcImNuXCJcblxuY29uc3QgYnV0dG9uVmFyaWFudHMgPSBjdmEoXG4gIFwiZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBhcmlhLWludmFsaWQ6cmluZy1kZXN0cnVjdGl2ZS8yMCBkYXJrOmFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzQwIGFyaWEtaW52YWxpZDpib3JkZXItZGVzdHJ1Y3RpdmUgZGFyazphcmlhLWludmFsaWQ6Ym9yZGVyLWRlc3RydWN0aXZlLzUwIHJvdW5kZWQtY29udHJvbCBib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLWNsaXAtcGFkZGluZyB0ZXh0LXNtIGZvbnQtbWVkaXVtIGZvY3VzLXZpc2libGU6cmluZy1bM3B4XSBhcmlhLWludmFsaWQ6cmluZy1bM3B4XSBbJl9zdmc6bm90KFtjbGFzcyo9J3NpemUtJ10pXTpzaXplLTQgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHdoaXRlc3BhY2Utbm93cmFwIHRyYW5zaXRpb24tYWxsIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MCBbJl9zdmddOnBvaW50ZXItZXZlbnRzLW5vbmUgc2hyaW5rLTAgWyZfc3ZnXTpzaHJpbmstMCBvdXRsaW5lLW5vbmUgZ3JvdXAvYnV0dG9uIHNlbGVjdC1ub25lXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcImJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgaG92ZXI6YmctcHJpbWFyeS84MFwiLFxuICAgICAgICBvdXRsaW5lOlxuICAgICAgICAgIFwiYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIGhvdmVyOmJnLW11dGVkIGhvdmVyOnRleHQtZm9yZWdyb3VuZCBkYXJrOmJnLWlucHV0LzMwIGRhcms6Ym9yZGVyLWlucHV0IGRhcms6aG92ZXI6YmctaW5wdXQvNTAgYXJpYS1leHBhbmRlZDpiZy1tdXRlZCBhcmlhLWV4cGFuZGVkOnRleHQtZm9yZWdyb3VuZCBzaGFkb3cteHNcIixcbiAgICAgICAgc2Vjb25kYXJ5OlxuICAgICAgICAgIFwiYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzgwIGFyaWEtZXhwYW5kZWQ6Ymctc2Vjb25kYXJ5IGFyaWEtZXhwYW5kZWQ6dGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZFwiLFxuICAgICAgICBnaG9zdDpcbiAgICAgICAgICBcImhvdmVyOmJnLW11dGVkIGhvdmVyOnRleHQtZm9yZWdyb3VuZCBkYXJrOmhvdmVyOmJnLW11dGVkLzUwIGFyaWEtZXhwYW5kZWQ6YmctbXV0ZWQgYXJpYS1leHBhbmRlZDp0ZXh0LWZvcmVncm91bmRcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6XG4gICAgICAgICAgXCJiZy1kZXN0cnVjdGl2ZS8xMCBob3ZlcjpiZy1kZXN0cnVjdGl2ZS8yMCBmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmUvMjAgZGFyazpmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmUvNDAgZGFyazpiZy1kZXN0cnVjdGl2ZS8yMCB0ZXh0LWRlc3RydWN0aXZlIGZvY3VzLXZpc2libGU6Ym9yZGVyLWRlc3RydWN0aXZlLzQwIGRhcms6aG92ZXI6YmctZGVzdHJ1Y3RpdmUvMzBcIixcbiAgICAgICAgcG9zaXRpdmU6XG4gICAgICAgICAgXCJiZy1wb3NpdGl2ZS8xMCBob3ZlcjpiZy1wb3NpdGl2ZS8yMCBmb2N1cy12aXNpYmxlOnJpbmctcG9zaXRpdmUvMjAgZGFyazpmb2N1cy12aXNpYmxlOnJpbmctcG9zaXRpdmUvNDAgZGFyazpiZy1wb3NpdGl2ZS8yMCB0ZXh0LXBvc2l0aXZlLXRpbnQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOmJvcmRlci1wb3NpdGl2ZS80MCBkYXJrOmhvdmVyOmJnLXBvc2l0aXZlLzMwXCIsXG4gICAgICAgIHdhcm5pbmc6XG4gICAgICAgICAgXCJiZy13YXJuaW5nLzEwIGhvdmVyOmJnLXdhcm5pbmcvMjAgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcvMjAgZGFyazpmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZy80MCBkYXJrOmJnLXdhcm5pbmcvMjAgdGV4dC13YXJuaW5nLXRpbnQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOmJvcmRlci13YXJuaW5nLzQwIGRhcms6aG92ZXI6Ymctd2FybmluZy8zMFwiLFxuICAgICAgICBsaW5rOiBcInRleHQtcHJpbWFyeSB1bmRlcmxpbmUtb2Zmc2V0LTQgaG92ZXI6dW5kZXJsaW5lXCIsXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIFwiaC05IGdhcC0xLjUgcHgtMi41IGluLWRhdGEtW3Nsb3Q9YnV0dG9uLWdyb3VwXTpyb3VuZGVkLWNvbnRyb2wgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMiBoYXMtZGF0YS1baWNvbj1pbmxpbmUtc3RhcnRdOnBsLTJcIixcbiAgICAgICAgeHM6IFwiaC02IGdhcC0xIHJvdW5kZWQtY29udHJvbC14cyBweC0yIHRleHQteHMgaW4tZGF0YS1bc2xvdD1idXR0b24tZ3JvdXBdOnJvdW5kZWQtY29udHJvbCBoYXMtZGF0YS1baWNvbj1pbmxpbmUtZW5kXTpwci0xLjUgaGFzLWRhdGEtW2ljb249aW5saW5lLXN0YXJ0XTpwbC0xLjUgWyZfc3ZnOm5vdChbY2xhc3MqPSdzaXplLSddKV06c2l6ZS0zXCIsXG4gICAgICAgIHNtOiBcImgtOCBnYXAtMSByb3VuZGVkLWNvbnRyb2wtc20gcHgtMi41IGluLWRhdGEtW3Nsb3Q9YnV0dG9uLWdyb3VwXTpyb3VuZGVkLWNvbnRyb2wgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMS41IGhhcy1kYXRhLVtpY29uPWlubGluZS1zdGFydF06cGwtMS41XCIsXG4gICAgICAgIGxnOiBcImgtMTAgZ2FwLTEuNSBweC0yLjUgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMyBoYXMtZGF0YS1baWNvbj1pbmxpbmUtc3RhcnRdOnBsLTNcIixcbiAgICAgICAgaWNvbjogXCJzaXplLTlcIixcbiAgICAgICAgXCJpY29uLXhzXCI6XG4gICAgICAgICAgXCJzaXplLTYgcm91bmRlZC1jb250cm9sLXhzIGluLWRhdGEtW3Nsb3Q9YnV0dG9uLWdyb3VwXTpyb3VuZGVkLWNvbnRyb2wgWyZfc3ZnOm5vdChbY2xhc3MqPSdzaXplLSddKV06c2l6ZS0zXCIsXG4gICAgICAgIFwiaWNvbi1zbVwiOlxuICAgICAgICAgIFwic2l6ZS04IHJvdW5kZWQtY29udHJvbC1zbSBpbi1kYXRhLVtzbG90PWJ1dHRvbi1ncm91cF06cm91bmRlZC1jb250cm9sXCIsXG4gICAgICAgIFwiaWNvbi1sZ1wiOiBcInNpemUtMTBcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgICAgc2l6ZTogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbilcblxuZnVuY3Rpb24gQnV0dG9uKHtcbiAgY2xhc3NOYW1lLFxuICB2YXJpYW50ID0gXCJkZWZhdWx0XCIsXG4gIHNpemUgPSBcImRlZmF1bHRcIixcbiAgLi4ucHJvcHNcbn06IEJ1dHRvblByaW1pdGl2ZS5Qcm9wcyAmIFZhcmlhbnRQcm9wczx0eXBlb2YgYnV0dG9uVmFyaWFudHM+KSB7XG4gIHJldHVybiAoXG4gICAgPEJ1dHRvblByaW1pdGl2ZVxuICAgICAgZGF0YS1zbG90PVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oYnV0dG9uVmFyaWFudHMoeyB2YXJpYW50LCBzaXplLCBjbGFzc05hbWUgfSkpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZXhwb3J0IHsgQnV0dG9uLCBidXR0b25WYXJpYW50cyB9XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
declare function Card({ className, size, ...props }: React.ComponentProps<"div"> & {
|
|
3
|
+
size?: "default" | "sm";
|
|
4
|
+
}): React.JSX.Element;
|
|
5
|
+
declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
6
|
+
declare function CardTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
7
|
+
declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
8
|
+
declare function CardAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
9
|
+
declare function CardContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
10
|
+
declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
11
|
+
export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent, };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "cn";
|
|
3
|
+
function Card({ className, size = "default", ...props }) {
|
|
4
|
+
return (_jsx("div", { "data-slot": "card", "data-size": size, className: cn("ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-card py-6 text-sm shadow-xs ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-card *:[img:last-child]:rounded-b-card group/card flex flex-col", className), ...props }));
|
|
5
|
+
}
|
|
6
|
+
function CardHeader({ className, ...props }) {
|
|
7
|
+
return (_jsx("div", { "data-slot": "card-header", className: cn("gap-1 rounded-t-card px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]", className), ...props }));
|
|
8
|
+
}
|
|
9
|
+
function CardTitle({ className, ...props }) {
|
|
10
|
+
return (_jsx("div", { "data-slot": "card-title", className: cn("text-base leading-normal font-medium group-data-[size=sm]/card:text-sm", className), ...props }));
|
|
11
|
+
}
|
|
12
|
+
function CardDescription({ className, ...props }) {
|
|
13
|
+
return (_jsx("div", { "data-slot": "card-description", className: cn("text-muted-foreground text-sm", className), ...props }));
|
|
14
|
+
}
|
|
15
|
+
function CardAction({ className, ...props }) {
|
|
16
|
+
return (_jsx("div", { "data-slot": "card-action", className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className), ...props }));
|
|
17
|
+
}
|
|
18
|
+
function CardContent({ className, ...props }) {
|
|
19
|
+
return (_jsx("div", { "data-slot": "card-content", className: cn("px-6 group-data-[size=sm]/card:px-4", className), ...props }));
|
|
20
|
+
}
|
|
21
|
+
function CardFooter({ className, ...props }) {
|
|
22
|
+
return (_jsx("div", { "data-slot": "card-footer", className: cn("rounded-b-card px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent, };
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9lbGVtZW50cy9jYXJkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLElBQUksQ0FBQTtBQUV2QixTQUFTLElBQUksQ0FBQyxFQUNaLFNBQVMsRUFDVCxJQUFJLEdBQUcsU0FBUyxFQUNoQixHQUFHLEtBQUssRUFDa0Q7SUFDMUQsT0FBTyxDQUNMLDJCQUNZLE1BQU0sZUFDTCxJQUFJLEVBQ2YsU0FBUyxFQUFFLEVBQUUsQ0FDWCxxUkFBcVIsRUFDclIsU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBK0I7SUFDdEUsT0FBTyxDQUNMLDJCQUNZLGFBQWEsRUFDdkIsU0FBUyxFQUFFLEVBQUUsQ0FDWCxzU0FBc1MsRUFDdFMsU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBK0I7SUFDckUsT0FBTyxDQUNMLDJCQUNZLFlBQVksRUFDdEIsU0FBUyxFQUFFLEVBQUUsQ0FDWCx3RUFBd0UsRUFDeEUsU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBK0I7SUFDM0UsT0FBTyxDQUNMLDJCQUNZLGtCQUFrQixFQUM1QixTQUFTLEVBQUUsRUFBRSxDQUFDLCtCQUErQixFQUFFLFNBQVMsQ0FBQyxLQUNyRCxLQUFLLEdBQ1QsQ0FDSCxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUErQjtJQUN0RSxPQUFPLENBQ0wsMkJBQ1ksYUFBYSxFQUN2QixTQUFTLEVBQUUsRUFBRSxDQUNYLGdFQUFnRSxFQUNoRSxTQUFTLENBQ1YsS0FDRyxLQUFLLEdBQ1QsQ0FDSCxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUErQjtJQUN2RSxPQUFPLENBQ0wsMkJBQ1ksY0FBYyxFQUN4QixTQUFTLEVBQUUsRUFBRSxDQUFDLHFDQUFxQyxFQUFFLFNBQVMsQ0FBQyxLQUMzRCxLQUFLLEdBQ1QsQ0FDSCxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUErQjtJQUN0RSxPQUFPLENBQ0wsMkJBQ1ksYUFBYSxFQUN2QixTQUFTLEVBQUUsRUFBRSxDQUNYLGtJQUFrSSxFQUNsSSxTQUFTLENBQ1YsS0FDRyxLQUFLLEdBQ1QsQ0FDSCxDQUFBO0FBQ0gsQ0FBQztBQUVELE9BQU8sRUFDTCxJQUFJLEVBQ0osVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUNWLGVBQWUsRUFDZixXQUFXLEdBQ1osQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IGNuIH0gZnJvbSBcImNuXCJcblxuZnVuY3Rpb24gQ2FyZCh7XG4gIGNsYXNzTmFtZSxcbiAgc2l6ZSA9IFwiZGVmYXVsdFwiLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJkaXZcIj4gJiB7IHNpemU/OiBcImRlZmF1bHRcIiB8IFwic21cIiB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS1zbG90PVwiY2FyZFwiXG4gICAgICBkYXRhLXNpemU9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInJpbmctZm9yZWdyb3VuZC8xMCBiZy1jYXJkIHRleHQtY2FyZC1mb3JlZ3JvdW5kIGdhcC02IG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWNhcmQgcHktNiB0ZXh0LXNtIHNoYWRvdy14cyByaW5nLTEgaGFzLVs+aW1nOmZpcnN0LWNoaWxkXTpwdC0wIGRhdGEtW3NpemU9c21dOmdhcC00IGRhdGEtW3NpemU9c21dOnB5LTQgKjpbaW1nOmZpcnN0LWNoaWxkXTpyb3VuZGVkLXQtY2FyZCAqOltpbWc6bGFzdC1jaGlsZF06cm91bmRlZC1iLWNhcmQgZ3JvdXAvY2FyZCBmbGV4IGZsZXgtY29sXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBDYXJkSGVhZGVyKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczxcImRpdlwiPikge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtc2xvdD1cImNhcmQtaGVhZGVyXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwiZ2FwLTEgcm91bmRlZC10LWNhcmQgcHgtNiBncm91cC1kYXRhLVtzaXplPXNtXS9jYXJkOnB4LTQgWy5ib3JkZXItYl06cGItNiBncm91cC1kYXRhLVtzaXplPXNtXS9jYXJkOlsuYm9yZGVyLWJdOnBiLTQgZ3JvdXAvY2FyZC1oZWFkZXIgQGNvbnRhaW5lci9jYXJkLWhlYWRlciBncmlkIGF1dG8tcm93cy1taW4gaXRlbXMtc3RhcnQgaGFzLWRhdGEtW3Nsb3Q9Y2FyZC1hY3Rpb25dOmdyaWQtY29scy1bMWZyX2F1dG9dIGhhcy1kYXRhLVtzbG90PWNhcmQtZGVzY3JpcHRpb25dOmdyaWQtcm93cy1bYXV0b19hdXRvXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZnVuY3Rpb24gQ2FyZFRpdGxlKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczxcImRpdlwiPikge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtc2xvdD1cImNhcmQtdGl0bGVcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJ0ZXh0LWJhc2UgbGVhZGluZy1ub3JtYWwgZm9udC1tZWRpdW0gZ3JvdXAtZGF0YS1bc2l6ZT1zbV0vY2FyZDp0ZXh0LXNtXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBDYXJkRGVzY3JpcHRpb24oeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiZGl2XCI+KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS1zbG90PVwiY2FyZC1kZXNjcmlwdGlvblwiXG4gICAgICBjbGFzc05hbWU9e2NuKFwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRleHQtc21cIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIENhcmRBY3Rpb24oeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiZGl2XCI+KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS1zbG90PVwiY2FyZC1hY3Rpb25cIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJjb2wtc3RhcnQtMiByb3ctc3Bhbi0yIHJvdy1zdGFydC0xIHNlbGYtc3RhcnQganVzdGlmeS1zZWxmLWVuZFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZnVuY3Rpb24gQ2FyZENvbnRlbnQoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiZGl2XCI+KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS1zbG90PVwiY2FyZC1jb250ZW50XCJcbiAgICAgIGNsYXNzTmFtZT17Y24oXCJweC02IGdyb3VwLWRhdGEtW3NpemU9c21dL2NhcmQ6cHgtNFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZnVuY3Rpb24gQ2FyZEZvb3Rlcih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJkaXZcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXNsb3Q9XCJjYXJkLWZvb3RlclwiXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInJvdW5kZWQtYi1jYXJkIHB4LTYgZ3JvdXAtZGF0YS1bc2l6ZT1zbV0vY2FyZDpweC00IFsuYm9yZGVyLXRdOnB0LTYgZ3JvdXAtZGF0YS1bc2l6ZT1zbV0vY2FyZDpbLmJvcmRlci10XTpwdC00IGZsZXggaXRlbXMtY2VudGVyXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5leHBvcnQge1xuICBDYXJkLFxuICBDYXJkSGVhZGVyLFxuICBDYXJkRm9vdGVyLFxuICBDYXJkVGl0bGUsXG4gIENhcmRBY3Rpb24sXG4gIENhcmREZXNjcmlwdGlvbixcbiAgQ2FyZENvbnRlbnQsXG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Collapsible as CollapsiblePrimitive } from "@base-ui/react/collapsible";
|
|
2
|
+
declare function Collapsible({ ...props }: CollapsiblePrimitive.Root.Props): import("react").JSX.Element;
|
|
3
|
+
declare function CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props): import("react").JSX.Element;
|
|
4
|
+
declare function CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props): import("react").JSX.Element;
|
|
5
|
+
export { Collapsible, CollapsibleTrigger, CollapsibleContent };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Collapsible as CollapsiblePrimitive } from "@base-ui/react/collapsible";
|
|
3
|
+
function Collapsible({ ...props }) {
|
|
4
|
+
return _jsx(CollapsiblePrimitive.Root, { "data-slot": "collapsible", ...props });
|
|
5
|
+
}
|
|
6
|
+
function CollapsibleTrigger({ ...props }) {
|
|
7
|
+
return _jsx(CollapsiblePrimitive.Trigger, { "data-slot": "collapsible-trigger", ...props });
|
|
8
|
+
}
|
|
9
|
+
function CollapsibleContent({ ...props }) {
|
|
10
|
+
return _jsx(CollapsiblePrimitive.Panel, { "data-slot": "collapsible-content", ...props });
|
|
11
|
+
}
|
|
12
|
+
export { Collapsible, CollapsibleTrigger, CollapsibleContent };
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvZWxlbWVudHMvY29sbGFwc2libGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsV0FBVyxJQUFJLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFaEYsU0FBUyxXQUFXLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBbUM7SUFDaEUsT0FBTyxLQUFDLG9CQUFvQixDQUFDLElBQUksaUJBQVcsYUFBYSxLQUFLLEtBQUssR0FBSSxDQUFBO0FBQ3pFLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQXNDO0lBQzFFLE9BQU8sS0FBQyxvQkFBb0IsQ0FBQyxPQUFPLGlCQUFXLHFCQUFxQixLQUFLLEtBQUssR0FBSSxDQUFBO0FBQ3BGLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQW9DO0lBQ3hFLE9BQU8sS0FBQyxvQkFBb0IsQ0FBQyxLQUFLLGlCQUFXLHFCQUFxQixLQUFLLEtBQUssR0FBSSxDQUFBO0FBQ2xGLENBQUM7QUFFRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsYXBzaWJsZSBhcyBDb2xsYXBzaWJsZVByaW1pdGl2ZSB9IGZyb20gXCJAYmFzZS11aS9yZWFjdC9jb2xsYXBzaWJsZVwiXG5cbmZ1bmN0aW9uIENvbGxhcHNpYmxlKHsgLi4ucHJvcHMgfTogQ29sbGFwc2libGVQcmltaXRpdmUuUm9vdC5Qcm9wcykge1xuICByZXR1cm4gPENvbGxhcHNpYmxlUHJpbWl0aXZlLlJvb3QgZGF0YS1zbG90PVwiY29sbGFwc2libGVcIiB7Li4ucHJvcHN9IC8+XG59XG5cbmZ1bmN0aW9uIENvbGxhcHNpYmxlVHJpZ2dlcih7IC4uLnByb3BzIH06IENvbGxhcHNpYmxlUHJpbWl0aXZlLlRyaWdnZXIuUHJvcHMpIHtcbiAgcmV0dXJuIDxDb2xsYXBzaWJsZVByaW1pdGl2ZS5UcmlnZ2VyIGRhdGEtc2xvdD1cImNvbGxhcHNpYmxlLXRyaWdnZXJcIiB7Li4ucHJvcHN9IC8+XG59XG5cbmZ1bmN0aW9uIENvbGxhcHNpYmxlQ29udGVudCh7IC4uLnByb3BzIH06IENvbGxhcHNpYmxlUHJpbWl0aXZlLlBhbmVsLlByb3BzKSB7XG4gIHJldHVybiA8Q29sbGFwc2libGVQcmltaXRpdmUuUGFuZWwgZGF0YS1zbG90PVwiY29sbGFwc2libGUtY29udGVudFwiIHsuLi5wcm9wc30gLz5cbn1cblxuZXhwb3J0IHsgQ29sbGFwc2libGUsIENvbGxhcHNpYmxlVHJpZ2dlciwgQ29sbGFwc2libGVDb250ZW50IH1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { PreviewCard as PreviewCardPrimitive } from "@base-ui/react/preview-card";
|
|
2
|
+
declare function HoverCard({ ...props }: PreviewCardPrimitive.Root.Props): import("react").JSX.Element;
|
|
3
|
+
declare function HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props): import("react").JSX.Element;
|
|
4
|
+
declare function HoverCardContent({ className, side, sideOffset, align, alignOffset, ...props }: PreviewCardPrimitive.Popup.Props & Pick<PreviewCardPrimitive.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): import("react").JSX.Element;
|
|
5
|
+
export { HoverCard, HoverCardTrigger, HoverCardContent };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { PreviewCard as PreviewCardPrimitive } from "@base-ui/react/preview-card";
|
|
3
|
+
import { cn } from "cn";
|
|
4
|
+
function HoverCard({ ...props }) {
|
|
5
|
+
return _jsx(PreviewCardPrimitive.Root, { "data-slot": "hover-card", ...props });
|
|
6
|
+
}
|
|
7
|
+
function HoverCardTrigger({ ...props }) {
|
|
8
|
+
return _jsx(PreviewCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
|
|
9
|
+
}
|
|
10
|
+
function HoverCardContent({ className, side = "bottom", sideOffset = 4, align = "center", alignOffset = 4, ...props }) {
|
|
11
|
+
return (_jsx(PreviewCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: _jsx(PreviewCardPrimitive.Positioner, { align: align, alignOffset: alignOffset, side: side, sideOffset: sideOffset, className: "isolate z-50", children: _jsx(PreviewCardPrimitive.Popup, { "data-slot": "hover-card-content", className: cn("z-50 w-64 origin-(--transform-origin) rounded-card bg-popover p-4 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props }) }) }));
|
|
12
|
+
}
|
|
13
|
+
export { HoverCard, HoverCardTrigger, HoverCardContent };
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9lbGVtZW50cy9ob3Zlci1jYXJkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBRWpGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFdkIsU0FBUyxTQUFTLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBbUM7SUFDOUQsT0FBTyxLQUFDLG9CQUFvQixDQUFDLElBQUksaUJBQVcsWUFBWSxLQUFLLEtBQUssR0FBSSxDQUFBO0FBQ3hFLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQXNDO0lBQ3hFLE9BQU8sS0FBQyxvQkFBb0IsQ0FBQyxPQUFPLGlCQUFXLG9CQUFvQixLQUFLLEtBQUssR0FBSSxDQUFBO0FBQ25GLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLEVBQ3hCLFNBQVMsRUFDVCxJQUFJLEdBQUcsUUFBUSxFQUNmLFVBQVUsR0FBRyxDQUFDLEVBQ2QsS0FBSyxHQUFHLFFBQVEsRUFDaEIsV0FBVyxHQUFHLENBQUMsRUFDZixHQUFHLEtBQUssRUFLUDtJQUNELE9BQU8sQ0FDTCxLQUFDLG9CQUFvQixDQUFDLE1BQU0saUJBQVcsbUJBQW1CLFlBQ3hELEtBQUMsb0JBQW9CLENBQUMsVUFBVSxJQUM5QixLQUFLLEVBQUUsS0FBSyxFQUNaLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLElBQUksRUFBRSxJQUFJLEVBQ1YsVUFBVSxFQUFFLFVBQVUsRUFDdEIsU0FBUyxFQUFDLGNBQWMsWUFFeEIsS0FBQyxvQkFBb0IsQ0FBQyxLQUFLLGlCQUNmLG9CQUFvQixFQUM5QixTQUFTLEVBQUUsRUFBRSxDQUNYLCtoQkFBK2hCLEVBQy9oQixTQUFTLENBQ1YsS0FDRyxLQUFLLEdBQ1QsR0FDOEIsR0FDTixDQUMvQixDQUFBO0FBQ0gsQ0FBQztBQUVELE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByZXZpZXdDYXJkIGFzIFByZXZpZXdDYXJkUHJpbWl0aXZlIH0gZnJvbSBcIkBiYXNlLXVpL3JlYWN0L3ByZXZpZXctY2FyZFwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcImNuXCJcblxuZnVuY3Rpb24gSG92ZXJDYXJkKHsgLi4ucHJvcHMgfTogUHJldmlld0NhcmRQcmltaXRpdmUuUm9vdC5Qcm9wcykge1xuICByZXR1cm4gPFByZXZpZXdDYXJkUHJpbWl0aXZlLlJvb3QgZGF0YS1zbG90PVwiaG92ZXItY2FyZFwiIHsuLi5wcm9wc30gLz5cbn1cblxuZnVuY3Rpb24gSG92ZXJDYXJkVHJpZ2dlcih7IC4uLnByb3BzIH06IFByZXZpZXdDYXJkUHJpbWl0aXZlLlRyaWdnZXIuUHJvcHMpIHtcbiAgcmV0dXJuIDxQcmV2aWV3Q2FyZFByaW1pdGl2ZS5UcmlnZ2VyIGRhdGEtc2xvdD1cImhvdmVyLWNhcmQtdHJpZ2dlclwiIHsuLi5wcm9wc30gLz5cbn1cblxuZnVuY3Rpb24gSG92ZXJDYXJkQ29udGVudCh7XG4gIGNsYXNzTmFtZSxcbiAgc2lkZSA9IFwiYm90dG9tXCIsXG4gIHNpZGVPZmZzZXQgPSA0LFxuICBhbGlnbiA9IFwiY2VudGVyXCIsXG4gIGFsaWduT2Zmc2V0ID0gNCxcbiAgLi4ucHJvcHNcbn06IFByZXZpZXdDYXJkUHJpbWl0aXZlLlBvcHVwLlByb3BzICZcbiAgUGljazxcbiAgICBQcmV2aWV3Q2FyZFByaW1pdGl2ZS5Qb3NpdGlvbmVyLlByb3BzLFxuICAgIFwiYWxpZ25cIiB8IFwiYWxpZ25PZmZzZXRcIiB8IFwic2lkZVwiIHwgXCJzaWRlT2Zmc2V0XCJcbiAgPikge1xuICByZXR1cm4gKFxuICAgIDxQcmV2aWV3Q2FyZFByaW1pdGl2ZS5Qb3J0YWwgZGF0YS1zbG90PVwiaG92ZXItY2FyZC1wb3J0YWxcIj5cbiAgICAgIDxQcmV2aWV3Q2FyZFByaW1pdGl2ZS5Qb3NpdGlvbmVyXG4gICAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgICAgYWxpZ25PZmZzZXQ9e2FsaWduT2Zmc2V0fVxuICAgICAgICBzaWRlPXtzaWRlfVxuICAgICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgICBjbGFzc05hbWU9XCJpc29sYXRlIHotNTBcIlxuICAgICAgPlxuICAgICAgICA8UHJldmlld0NhcmRQcmltaXRpdmUuUG9wdXBcbiAgICAgICAgICBkYXRhLXNsb3Q9XCJob3Zlci1jYXJkLWNvbnRlbnRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcInotNTAgdy02NCBvcmlnaW4tKC0tdHJhbnNmb3JtLW9yaWdpbikgcm91bmRlZC1jYXJkIGJnLXBvcG92ZXIgcC00IHRleHQtc20gdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgc2hhZG93LW1kIHJpbmctMSByaW5nLWZvcmVncm91bmQvMTAgb3V0bGluZS1oaWRkZW4gZHVyYXRpb24tMTAwIGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9aW5saW5lLWVuZF06c2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT1pbmxpbmUtc3RhcnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMiBkYXRhLW9wZW46YW5pbWF0ZS1pbiBkYXRhLW9wZW46ZmFkZS1pbi0wIGRhdGEtb3Blbjp6b29tLWluLTk1IGRhdGEtY2xvc2VkOmFuaW1hdGUtb3V0IGRhdGEtY2xvc2VkOmZhZGUtb3V0LTAgZGF0YS1jbG9zZWQ6em9vbS1vdXQtOTVcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICApfVxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgLz5cbiAgICAgIDwvUHJldmlld0NhcmRQcmltaXRpdmUuUG9zaXRpb25lcj5cbiAgICA8L1ByZXZpZXdDYXJkUHJpbWl0aXZlLlBvcnRhbD5cbiAgKVxufVxuXG5leHBvcnQgeyBIb3ZlckNhcmQsIEhvdmVyQ2FyZFRyaWdnZXIsIEhvdmVyQ2FyZENvbnRlbnQgfVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Separator as SeparatorPrimitive } from "@base-ui/react/separator";
|
|
3
|
+
import { cn } from "cn";
|
|
4
|
+
function Separator({ className, orientation = "horizontal", ...props }) {
|
|
5
|
+
return (_jsx(SeparatorPrimitive, { "data-slot": "separator", orientation: orientation, className: cn("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch", className), ...props }));
|
|
6
|
+
}
|
|
7
|
+
export { Separator };
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VwYXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2VsZW1lbnRzL3NlcGFyYXRvci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLElBQUksa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRXZCLFNBQVMsU0FBUyxDQUFDLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEdBQUcsWUFBWSxFQUMxQixHQUFHLEtBQUssRUFDaUI7SUFDekIsT0FBTyxDQUNMLEtBQUMsa0JBQWtCLGlCQUNQLFdBQVcsRUFDckIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsU0FBUyxFQUFFLEVBQUUsQ0FDWCxzS0FBc0ssRUFDdEssU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXBhcmF0b3IgYXMgU2VwYXJhdG9yUHJpbWl0aXZlIH0gZnJvbSBcIkBiYXNlLXVpL3JlYWN0L3NlcGFyYXRvclwiXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJjblwiXG5cbmZ1bmN0aW9uIFNlcGFyYXRvcih7XG4gIGNsYXNzTmFtZSxcbiAgb3JpZW50YXRpb24gPSBcImhvcml6b250YWxcIixcbiAgLi4ucHJvcHNcbn06IFNlcGFyYXRvclByaW1pdGl2ZS5Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxTZXBhcmF0b3JQcmltaXRpdmVcbiAgICAgIGRhdGEtc2xvdD1cInNlcGFyYXRvclwiXG4gICAgICBvcmllbnRhdGlvbj17b3JpZW50YXRpb259XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcImJnLWJvcmRlciBzaHJpbmstMCBkYXRhLVtvcmllbnRhdGlvbj1ob3Jpem9udGFsXTpoLXB4IGRhdGEtW29yaWVudGF0aW9uPWhvcml6b250YWxdOnctZnVsbCBkYXRhLVtvcmllbnRhdGlvbj12ZXJ0aWNhbF06dy1weCBkYXRhLVtvcmllbnRhdGlvbj12ZXJ0aWNhbF06c2VsZi1zdHJldGNoXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5leHBvcnQgeyBTZXBhcmF0b3IgfVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare function Table({ className, ...props }: React.ComponentProps<"table">): import("react").JSX.Element;
|
|
2
|
+
declare function TableHeader({ className, ...props }: React.ComponentProps<"thead">): import("react").JSX.Element;
|
|
3
|
+
declare function TableBody({ className, ...props }: React.ComponentProps<"tbody">): import("react").JSX.Element;
|
|
4
|
+
declare function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">): import("react").JSX.Element;
|
|
5
|
+
declare function TableRow({ className, ...props }: React.ComponentProps<"tr">): import("react").JSX.Element;
|
|
6
|
+
declare function TableHead({ className, ...props }: React.ComponentProps<"th">): import("react").JSX.Element;
|
|
7
|
+
declare function TableCell({ className, ...props }: React.ComponentProps<"td">): import("react").JSX.Element;
|
|
8
|
+
declare function TableCaption({ className, ...props }: React.ComponentProps<"caption">): import("react").JSX.Element;
|
|
9
|
+
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "cn";
|
|
3
|
+
function Table({ className, ...props }) {
|
|
4
|
+
return (_jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: _jsx("table", { "data-slot": "table", className: cn("w-full caption-bottom text-sm", className), ...props }) }));
|
|
5
|
+
}
|
|
6
|
+
function TableHeader({ className, ...props }) {
|
|
7
|
+
return (_jsx("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props }));
|
|
8
|
+
}
|
|
9
|
+
function TableBody({ className, ...props }) {
|
|
10
|
+
return (_jsx("tbody", { "data-slot": "table-body", className: cn("[&_tr:last-child]:border-0", className), ...props }));
|
|
11
|
+
}
|
|
12
|
+
function TableFooter({ className, ...props }) {
|
|
13
|
+
return (_jsx("tfoot", { "data-slot": "table-footer", className: cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", className), ...props }));
|
|
14
|
+
}
|
|
15
|
+
function TableRow({ className, ...props }) {
|
|
16
|
+
return (_jsx("tr", { "data-slot": "table-row", className: cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", className), ...props }));
|
|
17
|
+
}
|
|
18
|
+
function TableHead({ className, ...props }) {
|
|
19
|
+
return (_jsx("th", { "data-slot": "table-head", className: cn("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0", className), ...props }));
|
|
20
|
+
}
|
|
21
|
+
function TableCell({ className, ...props }) {
|
|
22
|
+
return (_jsx("td", { "data-slot": "table-cell", className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
function TableCaption({ className, ...props }) {
|
|
25
|
+
return (_jsx("caption", { "data-slot": "table-caption", className: cn("text-muted-foreground mt-4 text-sm", className), ...props }));
|
|
26
|
+
}
|
|
27
|
+
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvZWxlbWVudHMvdGFibGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRXZCLFNBQVMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFpQztJQUNuRSxPQUFPLENBQ0wsMkJBQWUsaUJBQWlCLEVBQUMsU0FBUyxFQUFDLGlDQUFpQyxZQUMxRSw2QkFDWSxPQUFPLEVBQ2pCLFNBQVMsRUFBRSxFQUFFLENBQUMsK0JBQStCLEVBQUUsU0FBUyxDQUFDLEtBQ3JELEtBQUssR0FDVCxHQUNFLENBQ1AsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBaUM7SUFDekUsT0FBTyxDQUNMLDZCQUNZLGNBQWMsRUFDeEIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsS0FDdkMsS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBaUM7SUFDdkUsT0FBTyxDQUNMLDZCQUNZLFlBQVksRUFDdEIsU0FBUyxFQUFFLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxTQUFTLENBQUMsS0FDbEQsS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBaUM7SUFDekUsT0FBTyxDQUNMLDZCQUNZLGNBQWMsRUFDeEIsU0FBUyxFQUFFLEVBQUUsQ0FBQyx5REFBeUQsRUFBRSxTQUFTLENBQUMsS0FDL0UsS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBOEI7SUFDbkUsT0FBTyxDQUNMLDBCQUNZLFdBQVcsRUFDckIsU0FBUyxFQUFFLEVBQUUsQ0FDWCw2RUFBNkUsRUFDN0UsU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBOEI7SUFDcEUsT0FBTyxDQUNMLDBCQUNZLFlBQVksRUFDdEIsU0FBUyxFQUFFLEVBQUUsQ0FDWCw4R0FBOEcsRUFDOUcsU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBOEI7SUFDcEUsT0FBTyxDQUNMLDBCQUNZLFlBQVksRUFDdEIsU0FBUyxFQUFFLEVBQUUsQ0FDWCxrRUFBa0UsRUFDbEUsU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBbUM7SUFDNUUsT0FBTyxDQUNMLCtCQUNZLGVBQWUsRUFDekIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxTQUFTLENBQUMsS0FDMUQsS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxPQUFPLEVBQ0wsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxRQUFRLEVBQ1IsU0FBUyxFQUNULFlBQVksR0FDYixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY24gfSBmcm9tIFwiY25cIlxuXG5mdW5jdGlvbiBUYWJsZSh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJ0YWJsZVwiPikge1xuICByZXR1cm4gKFxuICAgIDxkaXYgZGF0YS1zbG90PVwidGFibGUtY29udGFpbmVyXCIgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy1mdWxsIG92ZXJmbG93LXgtYXV0b1wiPlxuICAgICAgPHRhYmxlXG4gICAgICAgIGRhdGEtc2xvdD1cInRhYmxlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcInctZnVsbCBjYXB0aW9uLWJvdHRvbSB0ZXh0LXNtXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gVGFibGVIZWFkZXIoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwidGhlYWRcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8dGhlYWRcbiAgICAgIGRhdGEtc2xvdD1cInRhYmxlLWhlYWRlclwiXG4gICAgICBjbGFzc05hbWU9e2NuKFwiWyZfdHJdOmJvcmRlci1iXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBUYWJsZUJvZHkoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwidGJvZHlcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8dGJvZHlcbiAgICAgIGRhdGEtc2xvdD1cInRhYmxlLWJvZHlcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcIlsmX3RyOmxhc3QtY2hpbGRdOmJvcmRlci0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBUYWJsZUZvb3Rlcih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJ0Zm9vdFwiPikge1xuICByZXR1cm4gKFxuICAgIDx0Zm9vdFxuICAgICAgZGF0YS1zbG90PVwidGFibGUtZm9vdGVyXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oXCJiZy1tdXRlZC81MCBib3JkZXItdCBmb250LW1lZGl1bSBbJj50cl06bGFzdDpib3JkZXItYi0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBUYWJsZVJvdyh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJ0clwiPikge1xuICByZXR1cm4gKFxuICAgIDx0clxuICAgICAgZGF0YS1zbG90PVwidGFibGUtcm93XCJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwiaG92ZXI6YmctbXV0ZWQvNTAgZGF0YS1bc3RhdGU9c2VsZWN0ZWRdOmJnLW11dGVkIGJvcmRlci1iIHRyYW5zaXRpb24tY29sb3JzXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBUYWJsZUhlYWQoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwidGhcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8dGhcbiAgICAgIGRhdGEtc2xvdD1cInRhYmxlLWhlYWRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJ0ZXh0LWZvcmVncm91bmQgaC0xMCBweC0yIHRleHQtbGVmdCBhbGlnbi1taWRkbGUgZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1ub3dyYXAgWyY6aGFzKFtyb2xlPWNoZWNrYm94XSldOnByLTBcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIFRhYmxlQ2VsbCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJ0ZFwiPikge1xuICByZXR1cm4gKFxuICAgIDx0ZFxuICAgICAgZGF0YS1zbG90PVwidGFibGUtY2VsbFwiXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInAtMiBhbGlnbi1taWRkbGUgd2hpdGVzcGFjZS1ub3dyYXAgWyY6aGFzKFtyb2xlPWNoZWNrYm94XSldOnByLTBcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIFRhYmxlQ2FwdGlvbih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJjYXB0aW9uXCI+KSB7XG4gIHJldHVybiAoXG4gICAgPGNhcHRpb25cbiAgICAgIGRhdGEtc2xvdD1cInRhYmxlLWNhcHRpb25cIlxuICAgICAgY2xhc3NOYW1lPXtjbihcInRleHQtbXV0ZWQtZm9yZWdyb3VuZCBtdC00IHRleHQtc21cIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmV4cG9ydCB7XG4gIFRhYmxlLFxuICBUYWJsZUhlYWRlcixcbiAgVGFibGVCb2R5LFxuICBUYWJsZUZvb3RlcixcbiAgVGFibGVIZWFkLFxuICBUYWJsZVJvdyxcbiAgVGFibGVDZWxsLFxuICBUYWJsZUNhcHRpb24sXG59XG4iXX0=
|