@docubook/mdx-content 1.0.0
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 +21 -0
- package/README.md +211 -0
- package/dist/adapters/next/ButtonMdx.d.ts +4 -0
- package/dist/adapters/next/ButtonMdx.d.ts.map +1 -0
- package/dist/adapters/next/ButtonMdx.jsx +7 -0
- package/dist/adapters/next/ButtonMdx.jsx.map +1 -0
- package/dist/adapters/next/CardMdx.d.ts +4 -0
- package/dist/adapters/next/CardMdx.d.ts.map +1 -0
- package/dist/adapters/next/CardMdx.jsx +7 -0
- package/dist/adapters/next/CardMdx.jsx.map +1 -0
- package/dist/adapters/next/ImageMdx.d.ts +8 -0
- package/dist/adapters/next/ImageMdx.d.ts.map +1 -0
- package/dist/adapters/next/ImageMdx.jsx +7 -0
- package/dist/adapters/next/ImageMdx.jsx.map +1 -0
- package/dist/adapters/next/LinkMdx.d.ts +3 -0
- package/dist/adapters/next/LinkMdx.d.ts.map +1 -0
- package/dist/adapters/next/LinkMdx.jsx +10 -0
- package/dist/adapters/next/LinkMdx.jsx.map +1 -0
- package/dist/adapters/next/index.d.ts +5 -0
- package/dist/adapters/next/index.d.ts.map +1 -0
- package/dist/adapters/next/index.js +5 -0
- package/dist/adapters/next/index.js.map +1 -0
- package/dist/client.d.ts +7 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +7 -0
- package/dist/client.js.map +1 -0
- package/dist/components/AccordionContext.d.ts +8 -0
- package/dist/components/AccordionContext.d.ts.map +1 -0
- package/dist/components/AccordionContext.jsx +4 -0
- package/dist/components/AccordionContext.jsx.map +1 -0
- package/dist/components/AccordionGroupMdx.d.ts +7 -0
- package/dist/components/AccordionGroupMdx.d.ts.map +1 -0
- package/dist/components/AccordionGroupMdx.jsx +17 -0
- package/dist/components/AccordionGroupMdx.jsx.map +1 -0
- package/dist/components/AccordionMdx.d.ts +11 -0
- package/dist/components/AccordionMdx.d.ts.map +1 -0
- package/dist/components/AccordionMdx.jsx +76 -0
- package/dist/components/AccordionMdx.jsx.map +1 -0
- package/dist/components/ButtonMdx.d.ts +18 -0
- package/dist/components/ButtonMdx.d.ts.map +1 -0
- package/dist/components/ButtonMdx.jsx +58 -0
- package/dist/components/ButtonMdx.jsx.map +1 -0
- package/dist/components/CardGroupMdx.d.ts +9 -0
- package/dist/components/CardGroupMdx.d.ts.map +1 -0
- package/dist/components/CardGroupMdx.jsx +29 -0
- package/dist/components/CardGroupMdx.jsx.map +1 -0
- package/dist/components/CardMdx.d.ts +17 -0
- package/dist/components/CardMdx.d.ts.map +1 -0
- package/dist/components/CardMdx.jsx +87 -0
- package/dist/components/CardMdx.jsx.map +1 -0
- package/dist/components/CodeBlock.d.ts +8 -0
- package/dist/components/CodeBlock.d.ts.map +1 -0
- package/dist/components/CodeBlock.jsx +77 -0
- package/dist/components/CodeBlock.jsx.map +1 -0
- package/dist/components/CopyButton.d.ts +6 -0
- package/dist/components/CopyButton.d.ts.map +1 -0
- package/dist/components/CopyButton.jsx +43 -0
- package/dist/components/CopyButton.jsx.map +1 -0
- package/dist/components/FileTreeMdx.d.ts +19 -0
- package/dist/components/FileTreeMdx.d.ts.map +1 -0
- package/dist/components/FileTreeMdx.jsx +79 -0
- package/dist/components/FileTreeMdx.jsx.map +1 -0
- package/dist/components/IconMdx.d.ts +6 -0
- package/dist/components/IconMdx.d.ts.map +1 -0
- package/dist/components/IconMdx.jsx +14 -0
- package/dist/components/IconMdx.jsx.map +1 -0
- package/dist/components/ImageMdx.d.ts +8 -0
- package/dist/components/ImageMdx.d.ts.map +1 -0
- package/dist/components/ImageMdx.jsx +126 -0
- package/dist/components/ImageMdx.jsx.map +1 -0
- package/dist/components/KeyboardMdx.d.ts +10 -0
- package/dist/components/KeyboardMdx.d.ts.map +1 -0
- package/dist/components/KeyboardMdx.jsx +41 -0
- package/dist/components/KeyboardMdx.jsx.map +1 -0
- package/dist/components/LinkMdx.d.ts +4 -0
- package/dist/components/LinkMdx.d.ts.map +1 -0
- package/dist/components/LinkMdx.jsx +9 -0
- package/dist/components/LinkMdx.jsx.map +1 -0
- package/dist/components/NoteMdx.d.ts +13 -0
- package/dist/components/NoteMdx.d.ts.map +1 -0
- package/dist/components/NoteMdx.jsx +87 -0
- package/dist/components/NoteMdx.jsx.map +1 -0
- package/dist/components/ReleaseMdx.d.ts +16 -0
- package/dist/components/ReleaseMdx.d.ts.map +1 -0
- package/dist/components/ReleaseMdx.jsx +56 -0
- package/dist/components/ReleaseMdx.jsx.map +1 -0
- package/dist/components/StepperMdx.d.ts +17 -0
- package/dist/components/StepperMdx.d.ts.map +1 -0
- package/dist/components/StepperMdx.jsx +82 -0
- package/dist/components/StepperMdx.jsx.map +1 -0
- package/dist/components/TableMdx.d.ts +9 -0
- package/dist/components/TableMdx.d.ts.map +1 -0
- package/dist/components/TableMdx.jsx +57 -0
- package/dist/components/TableMdx.jsx.map +1 -0
- package/dist/components/TabsMdx.d.ts +21 -0
- package/dist/components/TabsMdx.d.ts.map +1 -0
- package/dist/components/TabsMdx.jsx +124 -0
- package/dist/components/TabsMdx.jsx.map +1 -0
- package/dist/components/TooltipsMdx.d.ts +10 -0
- package/dist/components/TooltipsMdx.d.ts.map +1 -0
- package/dist/components/TooltipsMdx.jsx +42 -0
- package/dist/components/TooltipsMdx.jsx.map +1 -0
- package/dist/components/YoutubeMdx.d.ts +7 -0
- package/dist/components/YoutubeMdx.d.ts.map +1 -0
- package/dist/components/YoutubeMdx.jsx +15 -0
- package/dist/components/YoutubeMdx.jsx.map +1 -0
- package/dist/components/index.d.ts +17 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +17 -0
- package/dist/components/index.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/registry/index.d.ts +4 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +41 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/server.d.ts +12 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +12 -0
- package/dist/server.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CSSProperties, ReactNode } from "react";
|
|
2
|
+
type KeyboardMdxProps = {
|
|
3
|
+
show?: string;
|
|
4
|
+
type?: "window" | "mac";
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
style?: CSSProperties;
|
|
7
|
+
};
|
|
8
|
+
export declare function KbdMdx({ show, type, children, style }: KeyboardMdxProps): import("react").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=KeyboardMdx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyboardMdx.d.ts","sourceRoot":"","sources":["../../src/components/KeyboardMdx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,KAAK,gBAAgB,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAuCF,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,IAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,gBAAgB,+BAKlF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const wrapperStyle = {
|
|
2
|
+
display: "inline-flex",
|
|
3
|
+
alignItems: "center",
|
|
4
|
+
justifyContent: "center",
|
|
5
|
+
border: "1px solid hsl(var(--border, 210 14% 94%))",
|
|
6
|
+
borderBottomWidth: 2,
|
|
7
|
+
borderRadius: 8,
|
|
8
|
+
background: "hsl(var(--muted, 210 12% 96%))",
|
|
9
|
+
color: "hsl(var(--foreground, 222 12% 12%))",
|
|
10
|
+
minWidth: "1.9rem",
|
|
11
|
+
height: "1.7rem",
|
|
12
|
+
padding: "0 0.45rem",
|
|
13
|
+
fontSize: "0.8rem",
|
|
14
|
+
fontWeight: 600,
|
|
15
|
+
lineHeight: 1,
|
|
16
|
+
};
|
|
17
|
+
const aliases = {
|
|
18
|
+
cmd: "Cmd",
|
|
19
|
+
ctrl: "Ctrl",
|
|
20
|
+
shift: "Shift",
|
|
21
|
+
alt: "Alt",
|
|
22
|
+
option: "Option",
|
|
23
|
+
enter: "Enter",
|
|
24
|
+
esc: "Esc",
|
|
25
|
+
up: "↑",
|
|
26
|
+
down: "↓",
|
|
27
|
+
left: "←",
|
|
28
|
+
right: "→",
|
|
29
|
+
};
|
|
30
|
+
function normalize(show, children) {
|
|
31
|
+
if (typeof children === "string" && children.trim())
|
|
32
|
+
return children;
|
|
33
|
+
const token = (show || "").toLowerCase();
|
|
34
|
+
return aliases[token] || show || "Key";
|
|
35
|
+
}
|
|
36
|
+
export function KbdMdx({ show, type = "window", children, style }) {
|
|
37
|
+
const label = normalize(show, children);
|
|
38
|
+
const prefix = type === "mac" && label === "Ctrl" ? "Cmd" : label;
|
|
39
|
+
return <kbd style={{ ...wrapperStyle, ...style }}>{prefix}</kbd>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=KeyboardMdx.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyboardMdx.jsx","sourceRoot":"","sources":["../../src/components/KeyboardMdx.tsx"],"names":[],"mappings":"AASA,MAAM,YAAY,GAAkB;IAChC,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,MAAM,EAAE,2CAA2C;IACnD,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,gCAAgC;IAC5C,KAAK,EAAE,qCAAqC;IAC5C,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,OAAO,GAA2B;IACpC,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;CACb,CAAC;AAEF,SAAS,SAAS,CAAC,IAAa,EAAE,QAAoB;IAClD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrE,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAoB;IAC/E,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAElE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinkMdx.d.ts","sourceRoot":"","sources":["../../src/components/LinkMdx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AAE/C,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,sCAQpE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function LinkMdx({ href, rel, target, ...props }) {
|
|
2
|
+
if (!href)
|
|
3
|
+
return null;
|
|
4
|
+
const external = /^https?:\/\//.test(href);
|
|
5
|
+
const computedTarget = target ?? (external ? "_blank" : undefined);
|
|
6
|
+
const computedRel = rel ?? (external ? "noopener noreferrer" : undefined);
|
|
7
|
+
return <a href={href} target={computedTarget} rel={computedRel} {...props}/>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=LinkMdx.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinkMdx.jsx","sourceRoot":"","sources":["../../src/components/LinkMdx.tsx"],"names":[],"mappings":"AAIA,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAgB;IACjE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE1E,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CSSProperties, HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import { IconProp } from "./IconMdx";
|
|
3
|
+
type NoteType = "note" | "danger" | "warning" | "success" | "info" | "tip";
|
|
4
|
+
type NoteMdxProps = HTMLAttributes<HTMLElement> & {
|
|
5
|
+
type?: NoteType;
|
|
6
|
+
title?: string;
|
|
7
|
+
icon?: IconProp;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
style?: CSSProperties;
|
|
10
|
+
};
|
|
11
|
+
export declare function NoteMdx({ type, title, icon, children, style, className, ...props }: NoteMdxProps): import("react").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=NoteMdx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoteMdx.d.ts","sourceRoot":"","sources":["../../src/components/NoteMdx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,QAAQ,EAA+B,MAAM,WAAW,CAAC;AAElE,KAAK,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;AAE3E,KAAK,YAAY,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG;IAC9C,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAqDF,wBAAgB,OAAO,CAAC,EAAE,IAAa,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,+BAkDzG"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { resolveLucideIcon } from "./IconMdx";
|
|
2
|
+
const palette = {
|
|
3
|
+
note: {
|
|
4
|
+
border: "hsl(var(--primary, 210 81% 56%))",
|
|
5
|
+
bg: "hsl(var(--primary, 210 81% 56%) / 0.16)",
|
|
6
|
+
text: "hsl(var(--foreground, 220 30% 15%))",
|
|
7
|
+
header: "hsl(var(--primary, 210 81% 56%))",
|
|
8
|
+
content: "hsl(var(--primary, 210 81% 56%) / 0.75)",
|
|
9
|
+
defaultIcon: "Info",
|
|
10
|
+
},
|
|
11
|
+
danger: {
|
|
12
|
+
border: "hsl(var(--destructive, 0 85% 60%))",
|
|
13
|
+
bg: "hsl(var(--destructive, 0 85% 60%) / 0.16)",
|
|
14
|
+
text: "hsl(var(--foreground, 220 30% 15%))",
|
|
15
|
+
header: "hsl(var(--destructive, 0 85% 60%))",
|
|
16
|
+
content: "hsl(var(--destructive, 0 85% 60%) / 0.75)",
|
|
17
|
+
defaultIcon: "Siren",
|
|
18
|
+
},
|
|
19
|
+
warning: {
|
|
20
|
+
border: "hsl(36 100% 56%)",
|
|
21
|
+
bg: "rgba(249, 115, 22, 0.14)",
|
|
22
|
+
text: "hsl(24 100% 18%)",
|
|
23
|
+
header: "hsl(36 100% 56%)",
|
|
24
|
+
content: "hsl(36 100% 56% / 0.75)",
|
|
25
|
+
defaultIcon: "AlertTriangle",
|
|
26
|
+
},
|
|
27
|
+
success: {
|
|
28
|
+
border: "hsl(145 63% 42%)",
|
|
29
|
+
bg: "hsl(145 63% 42% / 0.16)",
|
|
30
|
+
text: "hsl(var(--foreground, 220 30% 15%))",
|
|
31
|
+
header: "hsl(145 63% 42%)",
|
|
32
|
+
content: "hsl(145 63% 42% / 0.75)",
|
|
33
|
+
defaultIcon: "CheckCircle2",
|
|
34
|
+
},
|
|
35
|
+
info: {
|
|
36
|
+
border: "hsl(var(--primary, 210 81% 56%))",
|
|
37
|
+
bg: "hsl(var(--primary, 210 81% 56%) / 0.16)",
|
|
38
|
+
text: "hsl(var(--foreground, 220 30% 15%))",
|
|
39
|
+
header: "hsl(var(--primary, 210 81% 56%))",
|
|
40
|
+
content: "hsl(var(--primary, 210 81% 56%) / 0.75)",
|
|
41
|
+
defaultIcon: "Info",
|
|
42
|
+
},
|
|
43
|
+
tip: {
|
|
44
|
+
border: "hsl(137 50% 35%)",
|
|
45
|
+
bg: "hsl(137 50% 35% / 0.16)",
|
|
46
|
+
text: "hsl(var(--foreground, 220 30% 15%))",
|
|
47
|
+
header: "hsl(137 50% 35%)",
|
|
48
|
+
content: "hsl(137 50% 35% / 0.75)",
|
|
49
|
+
defaultIcon: "Lightbulb",
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
export function NoteMdx({ type = "note", title, icon, children, style, className, ...props }) {
|
|
53
|
+
const token = palette[type];
|
|
54
|
+
const normalizedIcon = typeof icon === "string" ? icon.trim() : icon;
|
|
55
|
+
const normalizedTitle = typeof title === "string" ? title.trim() : title;
|
|
56
|
+
const resolvedIcon = resolveLucideIcon(normalizedIcon || token.defaultIcon);
|
|
57
|
+
const fallbackTitle = normalizedTitle || type.charAt(0).toUpperCase() + type.slice(1);
|
|
58
|
+
return (<aside role="note" className={className} {...props} style={{
|
|
59
|
+
border: "1px solid transparent",
|
|
60
|
+
borderLeft: `4px solid ${token.border}`,
|
|
61
|
+
borderRadius: 10,
|
|
62
|
+
background: token.bg,
|
|
63
|
+
color: token.text,
|
|
64
|
+
padding: "0.5rem 1rem",
|
|
65
|
+
margin: "1rem 0",
|
|
66
|
+
boxShadow: "0 1px 2px rgba(15, 23, 42, 0.08)",
|
|
67
|
+
...style,
|
|
68
|
+
}}>
|
|
69
|
+
{(fallbackTitle || resolvedIcon) ? (<div style={{ display: "flex", alignItems: "center", gap: "0.5rem", fontWeight: 700, marginBottom: "0.35rem", color: token.header }}>
|
|
70
|
+
{resolvedIcon ? (<span aria-hidden="true" style={{
|
|
71
|
+
display: "inline-flex",
|
|
72
|
+
alignItems: "center",
|
|
73
|
+
justifyContent: "center",
|
|
74
|
+
width: 20,
|
|
75
|
+
height: 20,
|
|
76
|
+
color: token.header,
|
|
77
|
+
}}>
|
|
78
|
+
{resolvedIcon}
|
|
79
|
+
</span>) : null}
|
|
80
|
+
<span style={{ color: token.header }}>{fallbackTitle}</span>
|
|
81
|
+
</div>) : null}
|
|
82
|
+
<div style={{ color: token.content, lineHeight: 1.5 }}>
|
|
83
|
+
{children}
|
|
84
|
+
</div>
|
|
85
|
+
</aside>);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=NoteMdx.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoteMdx.jsx","sourceRoot":"","sources":["../../src/components/NoteMdx.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CSSProperties, ReactNode } from "react";
|
|
2
|
+
type ReleaseMdxProps = {
|
|
3
|
+
version: string;
|
|
4
|
+
date?: string;
|
|
5
|
+
title: string;
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
style?: CSSProperties;
|
|
8
|
+
};
|
|
9
|
+
type ChangesMdxProps = {
|
|
10
|
+
type?: "added" | "changed" | "fixed" | "improved" | "deprecated" | "removed";
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
};
|
|
13
|
+
export declare function ReleaseMdx({ version, date, title, children, style }: ReleaseMdxProps): import("react").JSX.Element;
|
|
14
|
+
export declare function ChangesMdx({ type, children }: ChangesMdxProps): import("react").JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=ReleaseMdx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReleaseMdx.d.ts","sourceRoot":"","sources":["../../src/components/ReleaseMdx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtD,KAAK,eAAe,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,KAAK,eAAe,GAAG;IACnB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;IAC7E,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC;AAaF,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,+BA8BpF;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAgB,EAAE,QAAQ,EAAE,EAAE,eAAe,+BAyBzE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { AlertTriangle, PlusCircle, RefreshCw, Wrench, Zap, XCircle } from "lucide-react";
|
|
2
|
+
const changeConfig = {
|
|
3
|
+
added: { label: "Added", color: "#14b8a6", icon: PlusCircle },
|
|
4
|
+
changed: { label: "Changed", color: "#f59e0b", icon: RefreshCw },
|
|
5
|
+
fixed: { label: "Fixed", color: "#ef4444", icon: Wrench },
|
|
6
|
+
improved: { label: "Improved", color: "#3b82f6", icon: Zap },
|
|
7
|
+
deprecated: { label: "Deprecated", color: "#f97316", icon: AlertTriangle },
|
|
8
|
+
removed: { label: "Removed", color: "#ec4899", icon: XCircle },
|
|
9
|
+
};
|
|
10
|
+
export function ReleaseMdx({ version, date, title, children, style }) {
|
|
11
|
+
const formattedDate = date
|
|
12
|
+
? new Date(date).toLocaleDateString("en-US", {
|
|
13
|
+
year: "numeric",
|
|
14
|
+
month: "long",
|
|
15
|
+
day: "numeric",
|
|
16
|
+
})
|
|
17
|
+
: undefined;
|
|
18
|
+
const displayVersion = version.startsWith("v") ? version : `v${version}`;
|
|
19
|
+
return (<section style={{
|
|
20
|
+
border: "1px solid hsl(var(--border, 210 14% 94%))",
|
|
21
|
+
borderRadius: 12,
|
|
22
|
+
padding: "1rem",
|
|
23
|
+
margin: "1rem 0",
|
|
24
|
+
background: "hsl(var(--card, 0 0% 100%))",
|
|
25
|
+
...style,
|
|
26
|
+
}}>
|
|
27
|
+
<div style={{ display: "flex", gap: "0.6rem", alignItems: "center", marginBottom: "0.5rem" }}>
|
|
28
|
+
<span style={{ fontWeight: 700, color: "hsl(var(--accent, 200 100% 40%))" }}>{displayVersion}</span>
|
|
29
|
+
{formattedDate ? <span style={{ color: "hsl(var(--muted-foreground, 215 20% 65%))" }}>{formattedDate}</span> : null}
|
|
30
|
+
</div>
|
|
31
|
+
<h3 style={{ margin: 0 }}>{title}</h3>
|
|
32
|
+
<div style={{ marginTop: "0.75rem" }}>{children}</div>
|
|
33
|
+
</section>);
|
|
34
|
+
}
|
|
35
|
+
export function ChangesMdx({ type = "changed", children }) {
|
|
36
|
+
const config = changeConfig[type] || changeConfig.changed;
|
|
37
|
+
const Icon = config.icon;
|
|
38
|
+
return (<div style={{ margin: "0.75rem 0" }}>
|
|
39
|
+
<span style={{
|
|
40
|
+
display: "inline-flex",
|
|
41
|
+
alignItems: "center",
|
|
42
|
+
gap: "0.35rem",
|
|
43
|
+
borderRadius: 999,
|
|
44
|
+
padding: "0.2rem 0.55rem",
|
|
45
|
+
fontSize: "0.8rem",
|
|
46
|
+
fontWeight: 700,
|
|
47
|
+
color: config.color,
|
|
48
|
+
background: `${config.color}1f`,
|
|
49
|
+
}}>
|
|
50
|
+
<Icon size={13} aria-hidden="true"/>
|
|
51
|
+
{config.label}
|
|
52
|
+
</span>
|
|
53
|
+
<div style={{ marginTop: "0.45rem" }}>{children}</div>
|
|
54
|
+
</div>);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=ReleaseMdx.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReleaseMdx.jsx","sourceRoot":"","sources":["../../src/components/ReleaseMdx.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type CSSProperties, type HTMLAttributes, type LiHTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
type StepperMdxProps = HTMLAttributes<HTMLOListElement> & {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
style?: CSSProperties;
|
|
5
|
+
};
|
|
6
|
+
type StepperItemMdxProps = LiHTMLAttributes<HTMLLIElement> & {
|
|
7
|
+
title: string;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
style?: CSSProperties;
|
|
10
|
+
};
|
|
11
|
+
type InternalStepperItemProps = StepperItemMdxProps & {
|
|
12
|
+
stepNumber?: number;
|
|
13
|
+
};
|
|
14
|
+
export declare function StepperMdx({ children, style, className, ...props }: StepperMdxProps): import("react").JSX.Element;
|
|
15
|
+
export declare function StepperItemMdx({ title, children, style, className, ...props }: InternalStepperItemProps): import("react").JSX.Element;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=StepperMdx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepperMdx.d.ts","sourceRoot":"","sources":["../../src/components/StepperMdx.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElK,KAAK,eAAe,GAAG,cAAc,CAAC,gBAAgB,CAAC,GAAG;IACtD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,KAAK,mBAAmB,GAAG,gBAAgB,CAAC,aAAa,CAAC,GAAG;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAGF,KAAK,wBAAwB,GAAG,mBAAmB,GAAG;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BA6CnF;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,wBAAwB,+BA6DvG"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Children, cloneElement, isValidElement } from "react";
|
|
2
|
+
export function StepperMdx({ children, style, className, ...props }) {
|
|
3
|
+
const items = Children.toArray(children);
|
|
4
|
+
return (<ol className={className} {...props} style={{
|
|
5
|
+
listStyle: "none",
|
|
6
|
+
position: "relative",
|
|
7
|
+
margin: "1.2rem 0",
|
|
8
|
+
padding: 0,
|
|
9
|
+
display: "grid",
|
|
10
|
+
gap: 0,
|
|
11
|
+
...style,
|
|
12
|
+
}}>
|
|
13
|
+
{items.map((child, index) => {
|
|
14
|
+
if (!isValidElement(child)) {
|
|
15
|
+
return child;
|
|
16
|
+
}
|
|
17
|
+
const item = child;
|
|
18
|
+
return cloneElement(item, {
|
|
19
|
+
stepNumber: index + 1,
|
|
20
|
+
});
|
|
21
|
+
})}
|
|
22
|
+
|
|
23
|
+
{items.length > 1 ? (<span aria-hidden="true" style={{
|
|
24
|
+
position: "absolute",
|
|
25
|
+
left: "1.05rem",
|
|
26
|
+
top: "0.8rem",
|
|
27
|
+
bottom: "0.8rem",
|
|
28
|
+
width: 1,
|
|
29
|
+
background: "hsl(var(--border, 210 14% 87%))",
|
|
30
|
+
pointerEvents: "none",
|
|
31
|
+
}}/>) : null}
|
|
32
|
+
</ol>);
|
|
33
|
+
}
|
|
34
|
+
export function StepperItemMdx({ title, children, style, className, ...props }) {
|
|
35
|
+
const { stepNumber, ...liProps } = props;
|
|
36
|
+
return (<li className={className} {...liProps} style={{
|
|
37
|
+
position: "relative",
|
|
38
|
+
zIndex: 1,
|
|
39
|
+
width: "100%",
|
|
40
|
+
minWidth: 0,
|
|
41
|
+
boxSizing: "border-box",
|
|
42
|
+
marginLeft: "0.25rem",
|
|
43
|
+
paddingLeft: "2.6rem",
|
|
44
|
+
paddingBottom: "1.15rem",
|
|
45
|
+
...style,
|
|
46
|
+
}}>
|
|
47
|
+
<span aria-hidden="true" style={{
|
|
48
|
+
position: "absolute",
|
|
49
|
+
left: 0,
|
|
50
|
+
top: 0,
|
|
51
|
+
width: stepNumber && stepNumber >= 10 ? "1.9rem" : "1.6rem",
|
|
52
|
+
height: "1.6rem",
|
|
53
|
+
borderRadius: 10,
|
|
54
|
+
display: "inline-flex",
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
justifyContent: "center",
|
|
57
|
+
fontSize: "0.82rem",
|
|
58
|
+
fontWeight: 600,
|
|
59
|
+
color: "hsl(var(--muted-foreground, 215 20% 50%))",
|
|
60
|
+
background: "hsl(var(--muted, 210 12% 92%))",
|
|
61
|
+
border: "1px solid hsl(var(--border, 210 14% 86%))",
|
|
62
|
+
}}>
|
|
63
|
+
{stepNumber ?? "-"}
|
|
64
|
+
</span>
|
|
65
|
+
|
|
66
|
+
<div style={{ fontWeight: 700, fontSize: "1.02rem", lineHeight: 1.35, marginBottom: children ? "0.55rem" : 0, color: "hsl(var(--foreground, 222 12% 12%))" }}>
|
|
67
|
+
{title}
|
|
68
|
+
</div>
|
|
69
|
+
{children ? (<div style={{
|
|
70
|
+
color: "hsl(var(--muted-foreground, 215 20% 65%))",
|
|
71
|
+
display: "flow-root",
|
|
72
|
+
width: "100%",
|
|
73
|
+
minWidth: 0,
|
|
74
|
+
maxWidth: "100%",
|
|
75
|
+
overflowX: "auto",
|
|
76
|
+
overflowY: "hidden",
|
|
77
|
+
}}>
|
|
78
|
+
{children}
|
|
79
|
+
</div>) : null}
|
|
80
|
+
</li>);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=StepperMdx.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepperMdx.jsx","sourceRoot":"","sources":["../../src/components/StepperMdx.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { HTMLAttributes, TableHTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from "react";
|
|
2
|
+
export declare function TableMdx({ style, ...props }: TableHTMLAttributes<HTMLTableElement>): import("react").JSX.Element;
|
|
3
|
+
export declare function TableHeaderMdx(props: HTMLAttributes<HTMLTableSectionElement>): import("react").JSX.Element;
|
|
4
|
+
export declare function TableBodyMdx(props: HTMLAttributes<HTMLTableSectionElement>): import("react").JSX.Element;
|
|
5
|
+
export declare function TableFooterMdx(props: HTMLAttributes<HTMLTableSectionElement>): import("react").JSX.Element;
|
|
6
|
+
export declare function TableRowMdx(props: HTMLAttributes<HTMLTableRowElement>): import("react").JSX.Element;
|
|
7
|
+
export declare function TableHeadMdx(props: ThHTMLAttributes<HTMLTableCellElement>): import("react").JSX.Element;
|
|
8
|
+
export declare function TableCellMdx(props: TdHTMLAttributes<HTMLTableCellElement>): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=TableMdx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableMdx.d.ts","sourceRoot":"","sources":["../../src/components/TableMdx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAkBpH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,+BAelF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,uBAAuB,CAAC,+BAU5E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,uBAAuB,CAAC,+BAE1E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,uBAAuB,CAAC,+BAW5E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,mBAAmB,CAAC,+BAErE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,+BAczE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,+BAEzE"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
const tableShellStyle = {
|
|
2
|
+
position: "relative",
|
|
3
|
+
width: "100%",
|
|
4
|
+
overflowX: "auto",
|
|
5
|
+
overflowY: "hidden",
|
|
6
|
+
border: "1px solid hsl(var(--border, 210 14% 94%))",
|
|
7
|
+
borderRadius: 10,
|
|
8
|
+
margin: "1rem 0",
|
|
9
|
+
};
|
|
10
|
+
const cellBaseStyle = {
|
|
11
|
+
padding: "0.6rem 0.75rem",
|
|
12
|
+
verticalAlign: "middle",
|
|
13
|
+
borderBottom: "1px solid hsl(var(--border, 210 14% 94%))",
|
|
14
|
+
};
|
|
15
|
+
export function TableMdx({ style, ...props }) {
|
|
16
|
+
return (<div style={{ ...tableShellStyle }}>
|
|
17
|
+
<table {...props} style={{
|
|
18
|
+
width: "100%",
|
|
19
|
+
fontSize: "0.925rem",
|
|
20
|
+
borderCollapse: "collapse",
|
|
21
|
+
margin: 0,
|
|
22
|
+
...style,
|
|
23
|
+
}}/>
|
|
24
|
+
</div>);
|
|
25
|
+
}
|
|
26
|
+
export function TableHeaderMdx(props) {
|
|
27
|
+
return (<thead {...props} style={{
|
|
28
|
+
background: "hsl(var(--muted, 210 12% 96%))",
|
|
29
|
+
...props.style,
|
|
30
|
+
}}/>);
|
|
31
|
+
}
|
|
32
|
+
export function TableBodyMdx(props) {
|
|
33
|
+
return <tbody {...props}/>;
|
|
34
|
+
}
|
|
35
|
+
export function TableFooterMdx(props) {
|
|
36
|
+
return (<tfoot {...props} style={{
|
|
37
|
+
background: "hsl(var(--muted, 210 12% 96%))",
|
|
38
|
+
borderTop: "1px solid hsl(var(--border, 210 14% 94%))",
|
|
39
|
+
...props.style,
|
|
40
|
+
}}/>);
|
|
41
|
+
}
|
|
42
|
+
export function TableRowMdx(props) {
|
|
43
|
+
return <tr {...props}/>;
|
|
44
|
+
}
|
|
45
|
+
export function TableHeadMdx(props) {
|
|
46
|
+
return (<th scope={props.scope ?? "col"} {...props} style={{
|
|
47
|
+
...cellBaseStyle,
|
|
48
|
+
textAlign: "left",
|
|
49
|
+
color: "hsl(var(--muted-foreground, 215 20% 65%))",
|
|
50
|
+
fontWeight: 600,
|
|
51
|
+
...props.style,
|
|
52
|
+
}}/>);
|
|
53
|
+
}
|
|
54
|
+
export function TableCellMdx(props) {
|
|
55
|
+
return <td {...props} style={{ ...cellBaseStyle, ...props.style }}/>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=TableMdx.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableMdx.jsx","sourceRoot":"","sources":["../../src/components/TableMdx.tsx"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAkB;IACnC,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,2CAA2C;IACnD,YAAY,EAAE,EAAE;IAChB,MAAM,EAAE,QAAQ;CACnB,CAAC;AAEF,MAAM,aAAa,GAAkB;IACjC,OAAO,EAAE,gBAAgB;IACzB,aAAa,EAAE,QAAQ;IACvB,YAAY,EAAE,2CAA2C;CAC5D,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAyC;IAC/E,OAAO,CACH,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,eAAe,EAAE,CAAC,CAC/B;YAAA,CAAC,KAAK,CACF,IAAI,KAAK,CAAC,CACV,KAAK,CAAC,CAAC;YACH,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,UAAU;YACpB,cAAc,EAAE,UAAU;YAC1B,MAAM,EAAE,CAAC;YACT,GAAG,KAAK;SACX,CAAC,EAEV;QAAA,EAAE,GAAG,CAAC,CACT,CAAC;AACN,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAA8C;IACzE,OAAO,CACH,CAAC,KAAK,CACF,IAAI,KAAK,CAAC,CACV,KAAK,CAAC,CAAC;YACH,UAAU,EAAE,gCAAgC;YAC5C,GAAG,KAAK,CAAC,KAAK;SACjB,CAAC,EACJ,CACL,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA8C;IACvE,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAA8C;IACzE,OAAO,CACH,CAAC,KAAK,CACF,IAAI,KAAK,CAAC,CACV,KAAK,CAAC,CAAC;YACH,UAAU,EAAE,gCAAgC;YAC5C,SAAS,EAAE,2CAA2C;YACtD,GAAG,KAAK,CAAC,KAAK;SACjB,CAAC,EACJ,CACL,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAA0C;IAClE,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA6C;IACtE,OAAO,CACH,CAAC,EAAE,CACC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,CAC5B,IAAI,KAAK,CAAC,CACV,KAAK,CAAC,CAAC;YACH,GAAG,aAAa;YAChB,SAAS,EAAE,MAAM;YACjB,KAAK,EAAE,2CAA2C;YAClD,UAAU,EAAE,GAAG;YACf,GAAG,KAAK,CAAC,KAAK;SACjB,CAAC,EACJ,CACL,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA6C;IACtE,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAG,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type CSSProperties, type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
type TabsProps = HTMLAttributes<HTMLDivElement> & {
|
|
3
|
+
value?: string;
|
|
4
|
+
defaultValue?: string;
|
|
5
|
+
onValueChange?: (next: string) => void;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
style?: CSSProperties;
|
|
8
|
+
orientation?: "horizontal" | "vertical";
|
|
9
|
+
};
|
|
10
|
+
export declare function TabsMdx({ value, defaultValue, onValueChange, children, style, orientation, className, ...props }: TabsProps): import("react").JSX.Element;
|
|
11
|
+
export declare function TabsListMdx({ children, style, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
|
|
12
|
+
type TabsTriggerProps = HTMLAttributes<HTMLButtonElement> & {
|
|
13
|
+
value: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function TabsTriggerMdx({ value, children, style, onKeyDown, ...props }: TabsTriggerProps): import("react").JSX.Element | null;
|
|
16
|
+
type TabsContentProps = HTMLAttributes<HTMLDivElement> & {
|
|
17
|
+
value: string;
|
|
18
|
+
};
|
|
19
|
+
export declare function TabsContentMdx({ value, children, style, ...props }: TabsContentProps): import("react").JSX.Element | null;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=TabsMdx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsMdx.d.ts","sourceRoot":"","sources":["../../src/components/TabsMdx.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+D,KAAK,aAAa,EAAE,KAAK,cAAc,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAWjK,KAAK,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CAC3C,CAAC;AAEF,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,YAAsB,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,WAA0B,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,+BAyBpJ;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAsBxF;AAED,KAAK,gBAAgB,GAAG,cAAc,CAAC,iBAAiB,CAAC,GAAG;IACxD,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,sCAkG/F;AAED,KAAK,gBAAgB,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IACrD,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,sCA0BpF"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, useContext, useId, useMemo, useRef, useState } from "react";
|
|
3
|
+
const TabsContext = createContext(null);
|
|
4
|
+
export function TabsMdx({ value, defaultValue = "tab-1", onValueChange, children, style, orientation = "horizontal", className, ...props }) {
|
|
5
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
6
|
+
const id = useId();
|
|
7
|
+
const selected = value ?? internalValue;
|
|
8
|
+
const setValue = (next) => {
|
|
9
|
+
if (value === undefined) {
|
|
10
|
+
setInternalValue(next);
|
|
11
|
+
}
|
|
12
|
+
onValueChange?.(next);
|
|
13
|
+
};
|
|
14
|
+
const contextValue = useMemo(() => ({ value: selected, setValue, id, orientation }), [selected, id, orientation]);
|
|
15
|
+
return (<TabsContext.Provider value={contextValue}>
|
|
16
|
+
<div className={className} {...props} style={{ border: "1px solid hsl(var(--border, 210 14% 94%))", borderRadius: 10, margin: "1rem 0", ...style }}>
|
|
17
|
+
{children}
|
|
18
|
+
</div>
|
|
19
|
+
</TabsContext.Provider>);
|
|
20
|
+
}
|
|
21
|
+
export function TabsListMdx({ children, style, ...props }) {
|
|
22
|
+
const context = useContext(TabsContext);
|
|
23
|
+
return (<div role="tablist" aria-orientation={context?.orientation ?? "horizontal"} {...props} style={{
|
|
24
|
+
display: "flex",
|
|
25
|
+
flexDirection: context?.orientation === "vertical" ? "column" : "row",
|
|
26
|
+
alignItems: context?.orientation === "vertical" ? "stretch" : "center",
|
|
27
|
+
gap: 8,
|
|
28
|
+
overflowX: "auto",
|
|
29
|
+
borderBottom: "1px solid hsl(var(--border, 210 14% 94%))",
|
|
30
|
+
padding: "0.25rem 0.5rem",
|
|
31
|
+
...style,
|
|
32
|
+
}}>
|
|
33
|
+
{children}
|
|
34
|
+
</div>);
|
|
35
|
+
}
|
|
36
|
+
export function TabsTriggerMdx({ value, children, style, onKeyDown, ...props }) {
|
|
37
|
+
const context = useContext(TabsContext);
|
|
38
|
+
const triggerRef = useRef(null);
|
|
39
|
+
if (!context) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const tabsContext = context;
|
|
43
|
+
const active = context.value === value;
|
|
44
|
+
const controlId = `${context.id}-panel-${value}`;
|
|
45
|
+
const triggerId = `${context.id}-tab-${value}`;
|
|
46
|
+
function moveFocus(direction) {
|
|
47
|
+
const tablist = triggerRef.current?.closest('[role="tablist"]');
|
|
48
|
+
if (!tablist)
|
|
49
|
+
return;
|
|
50
|
+
const triggers = Array.from(tablist.querySelectorAll('[role="tab"]'));
|
|
51
|
+
const currentIndex = triggers.findIndex((item) => item === triggerRef.current);
|
|
52
|
+
if (currentIndex < 0)
|
|
53
|
+
return;
|
|
54
|
+
const nextIndex = (currentIndex + direction + triggers.length) % triggers.length;
|
|
55
|
+
const nextTrigger = triggers[nextIndex];
|
|
56
|
+
const nextValue = nextTrigger.dataset.value;
|
|
57
|
+
nextTrigger.focus();
|
|
58
|
+
if (nextValue) {
|
|
59
|
+
tabsContext.setValue(nextValue);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return (<button ref={triggerRef} type="button" role="tab" id={triggerId} aria-controls={controlId} aria-selected={active} data-value={value} tabIndex={active ? 0 : -1} onClick={() => tabsContext.setValue(value)} onKeyDown={(e) => {
|
|
63
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
tabsContext.setValue(value);
|
|
66
|
+
}
|
|
67
|
+
if ((tabsContext.orientation === "horizontal" && e.key === "ArrowRight") || (tabsContext.orientation === "vertical" && e.key === "ArrowDown")) {
|
|
68
|
+
e.preventDefault();
|
|
69
|
+
moveFocus(1);
|
|
70
|
+
}
|
|
71
|
+
if ((tabsContext.orientation === "horizontal" && e.key === "ArrowLeft") || (tabsContext.orientation === "vertical" && e.key === "ArrowUp")) {
|
|
72
|
+
e.preventDefault();
|
|
73
|
+
moveFocus(-1);
|
|
74
|
+
}
|
|
75
|
+
if (e.key === "Home") {
|
|
76
|
+
e.preventDefault();
|
|
77
|
+
const tablist = triggerRef.current?.closest('[role="tablist"]');
|
|
78
|
+
const firstTrigger = tablist?.querySelector('[role="tab"]');
|
|
79
|
+
firstTrigger?.focus();
|
|
80
|
+
if (firstTrigger?.dataset.value) {
|
|
81
|
+
tabsContext.setValue(firstTrigger.dataset.value);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (e.key === "End") {
|
|
85
|
+
e.preventDefault();
|
|
86
|
+
const tablist = triggerRef.current?.closest('[role="tablist"]');
|
|
87
|
+
const triggers = tablist ? Array.from(tablist.querySelectorAll('[role="tab"]')) : [];
|
|
88
|
+
const lastTrigger = triggers.at(-1);
|
|
89
|
+
lastTrigger?.focus();
|
|
90
|
+
if (lastTrigger?.dataset.value) {
|
|
91
|
+
tabsContext.setValue(lastTrigger.dataset.value);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
onKeyDown?.(e);
|
|
95
|
+
}} {...props} style={{
|
|
96
|
+
border: "none",
|
|
97
|
+
borderBottom: active ? "2px solid hsl(var(--accent, 200 100% 40%))" : "2px solid transparent",
|
|
98
|
+
background: "transparent",
|
|
99
|
+
color: active ? "hsl(var(--foreground, 222 12% 12%))" : "hsl(var(--muted-foreground, 215 20% 65%))",
|
|
100
|
+
fontSize: "0.875rem",
|
|
101
|
+
fontWeight: 600,
|
|
102
|
+
padding: "0.6rem 0.5rem",
|
|
103
|
+
cursor: "pointer",
|
|
104
|
+
...style,
|
|
105
|
+
}}>
|
|
106
|
+
{children}
|
|
107
|
+
</button>);
|
|
108
|
+
}
|
|
109
|
+
export function TabsContentMdx({ value, children, style, ...props }) {
|
|
110
|
+
const context = useContext(TabsContext);
|
|
111
|
+
if (!context) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const active = context.value === value;
|
|
115
|
+
const panelId = `${context.id}-panel-${value}`;
|
|
116
|
+
const triggerId = `${context.id}-tab-${value}`;
|
|
117
|
+
return (<div role="tabpanel" id={panelId} aria-labelledby={triggerId} tabIndex={0} hidden={!active} {...props} style={{
|
|
118
|
+
padding: "0.75rem",
|
|
119
|
+
...style,
|
|
120
|
+
}}>
|
|
121
|
+
{active ? children : null}
|
|
122
|
+
</div>);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=TabsMdx.jsx.map
|