@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.
Files changed (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -0
  3. package/dist/adapters/next/ButtonMdx.d.ts +4 -0
  4. package/dist/adapters/next/ButtonMdx.d.ts.map +1 -0
  5. package/dist/adapters/next/ButtonMdx.jsx +7 -0
  6. package/dist/adapters/next/ButtonMdx.jsx.map +1 -0
  7. package/dist/adapters/next/CardMdx.d.ts +4 -0
  8. package/dist/adapters/next/CardMdx.d.ts.map +1 -0
  9. package/dist/adapters/next/CardMdx.jsx +7 -0
  10. package/dist/adapters/next/CardMdx.jsx.map +1 -0
  11. package/dist/adapters/next/ImageMdx.d.ts +8 -0
  12. package/dist/adapters/next/ImageMdx.d.ts.map +1 -0
  13. package/dist/adapters/next/ImageMdx.jsx +7 -0
  14. package/dist/adapters/next/ImageMdx.jsx.map +1 -0
  15. package/dist/adapters/next/LinkMdx.d.ts +3 -0
  16. package/dist/adapters/next/LinkMdx.d.ts.map +1 -0
  17. package/dist/adapters/next/LinkMdx.jsx +10 -0
  18. package/dist/adapters/next/LinkMdx.jsx.map +1 -0
  19. package/dist/adapters/next/index.d.ts +5 -0
  20. package/dist/adapters/next/index.d.ts.map +1 -0
  21. package/dist/adapters/next/index.js +5 -0
  22. package/dist/adapters/next/index.js.map +1 -0
  23. package/dist/client.d.ts +7 -0
  24. package/dist/client.d.ts.map +1 -0
  25. package/dist/client.js +7 -0
  26. package/dist/client.js.map +1 -0
  27. package/dist/components/AccordionContext.d.ts +8 -0
  28. package/dist/components/AccordionContext.d.ts.map +1 -0
  29. package/dist/components/AccordionContext.jsx +4 -0
  30. package/dist/components/AccordionContext.jsx.map +1 -0
  31. package/dist/components/AccordionGroupMdx.d.ts +7 -0
  32. package/dist/components/AccordionGroupMdx.d.ts.map +1 -0
  33. package/dist/components/AccordionGroupMdx.jsx +17 -0
  34. package/dist/components/AccordionGroupMdx.jsx.map +1 -0
  35. package/dist/components/AccordionMdx.d.ts +11 -0
  36. package/dist/components/AccordionMdx.d.ts.map +1 -0
  37. package/dist/components/AccordionMdx.jsx +76 -0
  38. package/dist/components/AccordionMdx.jsx.map +1 -0
  39. package/dist/components/ButtonMdx.d.ts +18 -0
  40. package/dist/components/ButtonMdx.d.ts.map +1 -0
  41. package/dist/components/ButtonMdx.jsx +58 -0
  42. package/dist/components/ButtonMdx.jsx.map +1 -0
  43. package/dist/components/CardGroupMdx.d.ts +9 -0
  44. package/dist/components/CardGroupMdx.d.ts.map +1 -0
  45. package/dist/components/CardGroupMdx.jsx +29 -0
  46. package/dist/components/CardGroupMdx.jsx.map +1 -0
  47. package/dist/components/CardMdx.d.ts +17 -0
  48. package/dist/components/CardMdx.d.ts.map +1 -0
  49. package/dist/components/CardMdx.jsx +87 -0
  50. package/dist/components/CardMdx.jsx.map +1 -0
  51. package/dist/components/CodeBlock.d.ts +8 -0
  52. package/dist/components/CodeBlock.d.ts.map +1 -0
  53. package/dist/components/CodeBlock.jsx +77 -0
  54. package/dist/components/CodeBlock.jsx.map +1 -0
  55. package/dist/components/CopyButton.d.ts +6 -0
  56. package/dist/components/CopyButton.d.ts.map +1 -0
  57. package/dist/components/CopyButton.jsx +43 -0
  58. package/dist/components/CopyButton.jsx.map +1 -0
  59. package/dist/components/FileTreeMdx.d.ts +19 -0
  60. package/dist/components/FileTreeMdx.d.ts.map +1 -0
  61. package/dist/components/FileTreeMdx.jsx +79 -0
  62. package/dist/components/FileTreeMdx.jsx.map +1 -0
  63. package/dist/components/IconMdx.d.ts +6 -0
  64. package/dist/components/IconMdx.d.ts.map +1 -0
  65. package/dist/components/IconMdx.jsx +14 -0
  66. package/dist/components/IconMdx.jsx.map +1 -0
  67. package/dist/components/ImageMdx.d.ts +8 -0
  68. package/dist/components/ImageMdx.d.ts.map +1 -0
  69. package/dist/components/ImageMdx.jsx +126 -0
  70. package/dist/components/ImageMdx.jsx.map +1 -0
  71. package/dist/components/KeyboardMdx.d.ts +10 -0
  72. package/dist/components/KeyboardMdx.d.ts.map +1 -0
  73. package/dist/components/KeyboardMdx.jsx +41 -0
  74. package/dist/components/KeyboardMdx.jsx.map +1 -0
  75. package/dist/components/LinkMdx.d.ts +4 -0
  76. package/dist/components/LinkMdx.d.ts.map +1 -0
  77. package/dist/components/LinkMdx.jsx +9 -0
  78. package/dist/components/LinkMdx.jsx.map +1 -0
  79. package/dist/components/NoteMdx.d.ts +13 -0
  80. package/dist/components/NoteMdx.d.ts.map +1 -0
  81. package/dist/components/NoteMdx.jsx +87 -0
  82. package/dist/components/NoteMdx.jsx.map +1 -0
  83. package/dist/components/ReleaseMdx.d.ts +16 -0
  84. package/dist/components/ReleaseMdx.d.ts.map +1 -0
  85. package/dist/components/ReleaseMdx.jsx +56 -0
  86. package/dist/components/ReleaseMdx.jsx.map +1 -0
  87. package/dist/components/StepperMdx.d.ts +17 -0
  88. package/dist/components/StepperMdx.d.ts.map +1 -0
  89. package/dist/components/StepperMdx.jsx +82 -0
  90. package/dist/components/StepperMdx.jsx.map +1 -0
  91. package/dist/components/TableMdx.d.ts +9 -0
  92. package/dist/components/TableMdx.d.ts.map +1 -0
  93. package/dist/components/TableMdx.jsx +57 -0
  94. package/dist/components/TableMdx.jsx.map +1 -0
  95. package/dist/components/TabsMdx.d.ts +21 -0
  96. package/dist/components/TabsMdx.d.ts.map +1 -0
  97. package/dist/components/TabsMdx.jsx +124 -0
  98. package/dist/components/TabsMdx.jsx.map +1 -0
  99. package/dist/components/TooltipsMdx.d.ts +10 -0
  100. package/dist/components/TooltipsMdx.d.ts.map +1 -0
  101. package/dist/components/TooltipsMdx.jsx +42 -0
  102. package/dist/components/TooltipsMdx.jsx.map +1 -0
  103. package/dist/components/YoutubeMdx.d.ts +7 -0
  104. package/dist/components/YoutubeMdx.d.ts.map +1 -0
  105. package/dist/components/YoutubeMdx.jsx +15 -0
  106. package/dist/components/YoutubeMdx.jsx.map +1 -0
  107. package/dist/components/index.d.ts +17 -0
  108. package/dist/components/index.d.ts.map +1 -0
  109. package/dist/components/index.js +17 -0
  110. package/dist/components/index.js.map +1 -0
  111. package/dist/index.d.ts +21 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +20 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/registry/index.d.ts +4 -0
  116. package/dist/registry/index.d.ts.map +1 -0
  117. package/dist/registry/index.js +41 -0
  118. package/dist/registry/index.js.map +1 -0
  119. package/dist/server.d.ts +12 -0
  120. package/dist/server.d.ts.map +1 -0
  121. package/dist/server.js +12 -0
  122. package/dist/server.js.map +1 -0
  123. 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,4 @@
1
+ import type { ComponentProps } from "react";
2
+ export type LinkMdxProps = ComponentProps<"a">;
3
+ export declare function LinkMdx({ href, rel, target, ...props }: LinkMdxProps): import("react").JSX.Element | null;
4
+ //# sourceMappingURL=LinkMdx.d.ts.map
@@ -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