@docubook/mdx-content 3.4.1 → 3.4.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.
Files changed (212) hide show
  1. package/dist/adapters/next/index.d.ts +54 -5
  2. package/dist/adapters/next/index.js +420 -4
  3. package/dist/adapters/next/index.js.map +1 -1
  4. package/dist/chunk-PSDC53TU.js +1056 -0
  5. package/dist/chunk-PSDC53TU.js.map +1 -0
  6. package/dist/client.d.ts +91 -9
  7. package/dist/client.js +1191 -8
  8. package/dist/client.js.map +1 -1
  9. package/dist/index.d.ts +91 -20
  10. package/dist/index.js +1245 -19
  11. package/dist/index.js.map +1 -1
  12. package/dist/server-BObcTM97.d.ts +100 -0
  13. package/dist/server.d.ts +3 -11
  14. package/dist/server.js +40 -10
  15. package/dist/server.js.map +1 -1
  16. package/package.json +5 -4
  17. package/dist/__test__/AccordionMdx.test.d.ts +0 -2
  18. package/dist/__test__/AccordionMdx.test.d.ts.map +0 -1
  19. package/dist/__test__/AccordionMdx.test.js +0 -21
  20. package/dist/__test__/AccordionMdx.test.js.map +0 -1
  21. package/dist/__test__/AccordionsMdx.test.d.ts +0 -2
  22. package/dist/__test__/AccordionsMdx.test.d.ts.map +0 -1
  23. package/dist/__test__/AccordionsMdx.test.js +0 -22
  24. package/dist/__test__/AccordionsMdx.test.js.map +0 -1
  25. package/dist/__test__/ButtonMdx.test.d.ts +0 -2
  26. package/dist/__test__/ButtonMdx.test.d.ts.map +0 -1
  27. package/dist/__test__/ButtonMdx.test.js +0 -20
  28. package/dist/__test__/ButtonMdx.test.js.map +0 -1
  29. package/dist/__test__/CardMdx.test.d.ts +0 -2
  30. package/dist/__test__/CardMdx.test.d.ts.map +0 -1
  31. package/dist/__test__/CardMdx.test.js +0 -29
  32. package/dist/__test__/CardMdx.test.js.map +0 -1
  33. package/dist/__test__/CardsMdx.test.d.ts +0 -2
  34. package/dist/__test__/CardsMdx.test.d.ts.map +0 -1
  35. package/dist/__test__/CardsMdx.test.js +0 -33
  36. package/dist/__test__/CardsMdx.test.js.map +0 -1
  37. package/dist/__test__/CodeBlockMdx.test.d.ts +0 -2
  38. package/dist/__test__/CodeBlockMdx.test.d.ts.map +0 -1
  39. package/dist/__test__/CodeBlockMdx.test.js +0 -48
  40. package/dist/__test__/CodeBlockMdx.test.js.map +0 -1
  41. package/dist/__test__/FileTreeMdx.test.d.ts +0 -2
  42. package/dist/__test__/FileTreeMdx.test.d.ts.map +0 -1
  43. package/dist/__test__/FileTreeMdx.test.js +0 -26
  44. package/dist/__test__/FileTreeMdx.test.js.map +0 -1
  45. package/dist/__test__/ImageMdx.test.d.ts +0 -2
  46. package/dist/__test__/ImageMdx.test.d.ts.map +0 -1
  47. package/dist/__test__/ImageMdx.test.js +0 -32
  48. package/dist/__test__/ImageMdx.test.js.map +0 -1
  49. package/dist/__test__/KbdMdx.test.d.ts +0 -2
  50. package/dist/__test__/KbdMdx.test.d.ts.map +0 -1
  51. package/dist/__test__/KbdMdx.test.js +0 -27
  52. package/dist/__test__/KbdMdx.test.js.map +0 -1
  53. package/dist/__test__/LinkMdx.test.d.ts +0 -2
  54. package/dist/__test__/LinkMdx.test.d.ts.map +0 -1
  55. package/dist/__test__/LinkMdx.test.js +0 -29
  56. package/dist/__test__/LinkMdx.test.js.map +0 -1
  57. package/dist/__test__/MermaidMdx.test.d.ts +0 -2
  58. package/dist/__test__/MermaidMdx.test.d.ts.map +0 -1
  59. package/dist/__test__/MermaidMdx.test.js +0 -287
  60. package/dist/__test__/MermaidMdx.test.js.map +0 -1
  61. package/dist/__test__/NoteMdx.test.d.ts +0 -2
  62. package/dist/__test__/NoteMdx.test.d.ts.map +0 -1
  63. package/dist/__test__/NoteMdx.test.js +0 -39
  64. package/dist/__test__/NoteMdx.test.js.map +0 -1
  65. package/dist/__test__/ReleaseMdx.test.d.ts +0 -2
  66. package/dist/__test__/ReleaseMdx.test.d.ts.map +0 -1
  67. package/dist/__test__/ReleaseMdx.test.js +0 -39
  68. package/dist/__test__/ReleaseMdx.test.js.map +0 -1
  69. package/dist/__test__/StepperMdx.test.d.ts +0 -2
  70. package/dist/__test__/StepperMdx.test.d.ts.map +0 -1
  71. package/dist/__test__/StepperMdx.test.js +0 -25
  72. package/dist/__test__/StepperMdx.test.js.map +0 -1
  73. package/dist/__test__/TableMdx.test.d.ts +0 -2
  74. package/dist/__test__/TableMdx.test.d.ts.map +0 -1
  75. package/dist/__test__/TableMdx.test.js +0 -25
  76. package/dist/__test__/TableMdx.test.js.map +0 -1
  77. package/dist/__test__/TabsMdx.test.d.ts +0 -2
  78. package/dist/__test__/TabsMdx.test.d.ts.map +0 -1
  79. package/dist/__test__/TabsMdx.test.js +0 -30
  80. package/dist/__test__/TabsMdx.test.js.map +0 -1
  81. package/dist/__test__/TooltipMdx.test.d.ts +0 -2
  82. package/dist/__test__/TooltipMdx.test.d.ts.map +0 -1
  83. package/dist/__test__/TooltipMdx.test.js +0 -23
  84. package/dist/__test__/TooltipMdx.test.js.map +0 -1
  85. package/dist/__test__/YoutubeMdx.test.d.ts +0 -2
  86. package/dist/__test__/YoutubeMdx.test.d.ts.map +0 -1
  87. package/dist/__test__/YoutubeMdx.test.js +0 -25
  88. package/dist/__test__/YoutubeMdx.test.js.map +0 -1
  89. package/dist/__test__/utils/ExpandableCode.test.d.ts +0 -2
  90. package/dist/__test__/utils/ExpandableCode.test.d.ts.map +0 -1
  91. package/dist/__test__/utils/ExpandableCode.test.js +0 -62
  92. package/dist/__test__/utils/ExpandableCode.test.js.map +0 -1
  93. package/dist/__test__/utils/Icon.test.d.ts +0 -2
  94. package/dist/__test__/utils/Icon.test.d.ts.map +0 -1
  95. package/dist/__test__/utils/Icon.test.js +0 -29
  96. package/dist/__test__/utils/Icon.test.js.map +0 -1
  97. package/dist/adapters/next/ButtonMdx.d.ts +0 -4
  98. package/dist/adapters/next/ButtonMdx.d.ts.map +0 -1
  99. package/dist/adapters/next/ButtonMdx.js +0 -8
  100. package/dist/adapters/next/ButtonMdx.js.map +0 -1
  101. package/dist/adapters/next/CardMdx.d.ts +0 -4
  102. package/dist/adapters/next/CardMdx.d.ts.map +0 -1
  103. package/dist/adapters/next/CardMdx.js +0 -8
  104. package/dist/adapters/next/CardMdx.js.map +0 -1
  105. package/dist/adapters/next/ImageMdx.d.ts +0 -8
  106. package/dist/adapters/next/ImageMdx.d.ts.map +0 -1
  107. package/dist/adapters/next/ImageMdx.js +0 -8
  108. package/dist/adapters/next/ImageMdx.js.map +0 -1
  109. package/dist/adapters/next/LinkMdx.d.ts +0 -3
  110. package/dist/adapters/next/LinkMdx.d.ts.map +0 -1
  111. package/dist/adapters/next/LinkMdx.js +0 -11
  112. package/dist/adapters/next/LinkMdx.js.map +0 -1
  113. package/dist/adapters/next/index.d.ts.map +0 -1
  114. package/dist/client.d.ts.map +0 -1
  115. package/dist/components/AccordionMdx.d.ts +0 -11
  116. package/dist/components/AccordionMdx.d.ts.map +0 -1
  117. package/dist/components/AccordionMdx.js +0 -64
  118. package/dist/components/AccordionMdx.js.map +0 -1
  119. package/dist/components/AccordionsMdx.d.ts +0 -7
  120. package/dist/components/AccordionsMdx.d.ts.map +0 -1
  121. package/dist/components/AccordionsMdx.js +0 -14
  122. package/dist/components/AccordionsMdx.js.map +0 -1
  123. package/dist/components/ButtonMdx.d.ts +0 -17
  124. package/dist/components/ButtonMdx.d.ts.map +0 -1
  125. package/dist/components/ButtonMdx.js +0 -57
  126. package/dist/components/ButtonMdx.js.map +0 -1
  127. package/dist/components/CardMdx.d.ts +0 -17
  128. package/dist/components/CardMdx.d.ts.map +0 -1
  129. package/dist/components/CardMdx.js +0 -52
  130. package/dist/components/CardMdx.js.map +0 -1
  131. package/dist/components/CardsMdx.d.ts +0 -9
  132. package/dist/components/CardsMdx.d.ts.map +0 -1
  133. package/dist/components/CardsMdx.js +0 -9
  134. package/dist/components/CardsMdx.js.map +0 -1
  135. package/dist/components/CodeBlockMdx.d.ts +0 -11
  136. package/dist/components/CodeBlockMdx.d.ts.map +0 -1
  137. package/dist/components/CodeBlockMdx.js +0 -135
  138. package/dist/components/CodeBlockMdx.js.map +0 -1
  139. package/dist/components/FileTreeMdx.d.ts +0 -19
  140. package/dist/components/FileTreeMdx.d.ts.map +0 -1
  141. package/dist/components/FileTreeMdx.js +0 -99
  142. package/dist/components/FileTreeMdx.js.map +0 -1
  143. package/dist/components/ImageMdx.d.ts +0 -8
  144. package/dist/components/ImageMdx.d.ts.map +0 -1
  145. package/dist/components/ImageMdx.js +0 -111
  146. package/dist/components/ImageMdx.js.map +0 -1
  147. package/dist/components/KbdMdx.d.ts +0 -9
  148. package/dist/components/KbdMdx.d.ts.map +0 -1
  149. package/dist/components/KbdMdx.js +0 -74
  150. package/dist/components/KbdMdx.js.map +0 -1
  151. package/dist/components/LinkMdx.d.ts +0 -4
  152. package/dist/components/LinkMdx.d.ts.map +0 -1
  153. package/dist/components/LinkMdx.js +0 -10
  154. package/dist/components/LinkMdx.js.map +0 -1
  155. package/dist/components/MermaidMdx.d.ts +0 -13
  156. package/dist/components/MermaidMdx.d.ts.map +0 -1
  157. package/dist/components/MermaidMdx.js +0 -241
  158. package/dist/components/MermaidMdx.js.map +0 -1
  159. package/dist/components/NoteMdx.d.ts +0 -13
  160. package/dist/components/NoteMdx.d.ts.map +0 -1
  161. package/dist/components/NoteMdx.js +0 -79
  162. package/dist/components/NoteMdx.js.map +0 -1
  163. package/dist/components/ReleaseMdx.d.ts +0 -16
  164. package/dist/components/ReleaseMdx.d.ts.map +0 -1
  165. package/dist/components/ReleaseMdx.js +0 -44
  166. package/dist/components/ReleaseMdx.js.map +0 -1
  167. package/dist/components/StepperMdx.d.ts +0 -17
  168. package/dist/components/StepperMdx.d.ts.map +0 -1
  169. package/dist/components/StepperMdx.js +0 -74
  170. package/dist/components/StepperMdx.js.map +0 -1
  171. package/dist/components/TableMdx.d.ts +0 -9
  172. package/dist/components/TableMdx.d.ts.map +0 -1
  173. package/dist/components/TableMdx.js +0 -56
  174. package/dist/components/TableMdx.js.map +0 -1
  175. package/dist/components/TabsMdx.d.ts +0 -13
  176. package/dist/components/TabsMdx.d.ts.map +0 -1
  177. package/dist/components/TabsMdx.js +0 -67
  178. package/dist/components/TabsMdx.js.map +0 -1
  179. package/dist/components/TooltipMdx.d.ts +0 -10
  180. package/dist/components/TooltipMdx.d.ts.map +0 -1
  181. package/dist/components/TooltipMdx.js +0 -36
  182. package/dist/components/TooltipMdx.js.map +0 -1
  183. package/dist/components/YoutubeMdx.d.ts +0 -7
  184. package/dist/components/YoutubeMdx.d.ts.map +0 -1
  185. package/dist/components/YoutubeMdx.js +0 -24
  186. package/dist/components/YoutubeMdx.js.map +0 -1
  187. package/dist/components/index.d.ts +0 -19
  188. package/dist/components/index.d.ts.map +0 -1
  189. package/dist/components/index.js +0 -19
  190. package/dist/components/index.js.map +0 -1
  191. package/dist/index.d.ts.map +0 -1
  192. package/dist/registry/index.d.ts +0 -4
  193. package/dist/registry/index.d.ts.map +0 -1
  194. package/dist/registry/index.js +0 -38
  195. package/dist/registry/index.js.map +0 -1
  196. package/dist/server.d.ts.map +0 -1
  197. package/dist/utils/AccordionGroupContext.d.ts +0 -8
  198. package/dist/utils/AccordionGroupContext.d.ts.map +0 -1
  199. package/dist/utils/AccordionGroupContext.js +0 -4
  200. package/dist/utils/AccordionGroupContext.js.map +0 -1
  201. package/dist/utils/CopyButton.d.ts +0 -6
  202. package/dist/utils/CopyButton.d.ts.map +0 -1
  203. package/dist/utils/CopyButton.js +0 -39
  204. package/dist/utils/CopyButton.js.map +0 -1
  205. package/dist/utils/ExpandableCode.d.ts +0 -11
  206. package/dist/utils/ExpandableCode.d.ts.map +0 -1
  207. package/dist/utils/ExpandableCode.js +0 -78
  208. package/dist/utils/ExpandableCode.js.map +0 -1
  209. package/dist/utils/Icon.d.ts +0 -6
  210. package/dist/utils/Icon.d.ts.map +0 -1
  211. package/dist/utils/Icon.js +0 -12
  212. package/dist/utils/Icon.js.map +0 -1
@@ -1,111 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { createPortal } from "react-dom";
4
- import { useEffect, useId, useRef, useState } from "react";
5
- export function ImageMdx({ src, alt = "image", width = 800, height = 350, zoom = true, style, ImageComponent, ...props }) {
6
- const Image = ImageComponent ?? "img";
7
- const [isOpen, setIsOpen] = useState(false);
8
- const scrollYRef = useRef(0);
9
- const closeButtonRef = useRef(null);
10
- const dialogId = useId();
11
- useEffect(() => {
12
- if (!isOpen)
13
- return;
14
- scrollYRef.current = window.scrollY;
15
- document.body.style.position = "fixed";
16
- document.body.style.top = `-${scrollYRef.current}px`;
17
- document.body.style.width = "100%";
18
- closeButtonRef.current?.focus();
19
- const onEsc = (e) => {
20
- if (e.key === "Escape")
21
- setIsOpen(false);
22
- };
23
- const onFocusTrap = (e) => {
24
- if (e.key !== "Tab")
25
- return;
26
- const dialog = document.getElementById(dialogId);
27
- const focusable = dialog?.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
28
- if (!focusable || focusable.length === 0)
29
- return;
30
- const first = focusable[0];
31
- const last = focusable[focusable.length - 1];
32
- if (!e.shiftKey && document.activeElement === last) {
33
- e.preventDefault();
34
- first.focus();
35
- }
36
- if (e.shiftKey && document.activeElement === first) {
37
- e.preventDefault();
38
- last.focus();
39
- }
40
- };
41
- window.addEventListener("keydown", onEsc);
42
- window.addEventListener("keydown", onFocusTrap);
43
- return () => {
44
- document.body.style.position = "";
45
- document.body.style.top = "";
46
- document.body.style.width = "";
47
- window.scrollTo(0, scrollYRef.current);
48
- window.removeEventListener("keydown", onEsc);
49
- window.removeEventListener("keydown", onFocusTrap);
50
- };
51
- }, [dialogId, isOpen]);
52
- if (!src)
53
- return null;
54
- const canZoom = zoom;
55
- return (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", onClick: () => canZoom && setIsOpen(true), "aria-label": canZoom ? "Zoom image" : "Image", style: {
56
- position: "relative",
57
- width: "100%",
58
- border: "none",
59
- background: "transparent",
60
- padding: 0,
61
- margin: "1rem 0",
62
- cursor: canZoom ? "zoom-in" : "default",
63
- }, children: _jsx(Image, { src: src, alt: alt, width: typeof width === "number" ? width : parseInt(width, 10), height: typeof height === "number" ? height : parseInt(height, 10), style: {
64
- width: "100%",
65
- height: "auto",
66
- borderRadius: 10,
67
- objectFit: "contain",
68
- ...style,
69
- }, ...props }) }), canZoom && isOpen ? (_jsx(Portal, { children: _jsxs("div", { id: dialogId, role: "dialog", "aria-modal": "true", "aria-label": "Image preview", onClick: () => setIsOpen(false), style: {
70
- position: "fixed",
71
- inset: 0,
72
- zIndex: 99999,
73
- background: "rgba(0,0,0,0.88)",
74
- display: "flex",
75
- alignItems: "center",
76
- justifyContent: "center",
77
- padding: "1rem",
78
- }, children: [_jsx("button", { ref: closeButtonRef, type: "button", "aria-label": "Close image preview", onClick: (e) => {
79
- e.stopPropagation();
80
- setIsOpen(false);
81
- }, style: {
82
- position: "absolute",
83
- top: 16,
84
- right: 16,
85
- border: "1px solid rgba(255,255,255,0.24)",
86
- borderRadius: 8,
87
- background: "rgba(0,0,0,0.45)",
88
- color: "#fff",
89
- padding: "0.4rem 0.55rem",
90
- cursor: "pointer",
91
- }, children: "Close" }), _jsx("div", { onClick: (e) => e.stopPropagation(), style: {
92
- maxWidth: "92vw",
93
- maxHeight: "90vh",
94
- display: "flex",
95
- alignItems: "center",
96
- justifyContent: "center",
97
- }, children: _jsx(Image, { src: src, alt: alt, width: 1920, height: 1080, style: {
98
- width: "auto",
99
- height: "auto",
100
- maxWidth: "92vw",
101
- maxHeight: "90vh",
102
- objectFit: "contain",
103
- borderRadius: 10,
104
- } }) })] }) })) : null] }));
105
- }
106
- function Portal({ children }) {
107
- if (typeof window === "undefined")
108
- return null;
109
- return createPortal(children, document.body);
110
- }
111
- //# sourceMappingURL=ImageMdx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageMdx.js","sourceRoot":"","sources":["../../src/components/ImageMdx.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { CSSProperties } from "react";
2
- type KeyboardMdxProps = {
3
- show: string;
4
- type?: "window" | "mac";
5
- style?: CSSProperties;
6
- };
7
- export declare function KbdMdx({ show, type, style }: KeyboardMdxProps): import("react").JSX.Element;
8
- export {};
9
- //# sourceMappingURL=KbdMdx.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KbdMdx.d.ts","sourceRoot":"","sources":["../../src/components/KbdMdx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IACxB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAyEF,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,IAAe,EAAE,KAAK,EAAE,EAAE,gBAAgB,+BAKxE"}
@@ -1,74 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- const wrapperStyle = {
3
- display: "inline-flex",
4
- alignItems: "center",
5
- justifyContent: "center",
6
- border: "1px solid hsl(var(--border, 210 20% 85%))",
7
- borderBottomWidth: 2,
8
- borderRadius: 8,
9
- background: "hsl(var(--muted, 210 20% 92%))",
10
- color: "hsl(var(--foreground, 220 30% 15%))",
11
- minWidth: "1.9rem",
12
- height: "1.7rem",
13
- padding: "0 0.45rem",
14
- fontSize: "0.8rem",
15
- fontWeight: 600,
16
- lineHeight: 1,
17
- };
18
- const aliases = {
19
- cmd: "Win",
20
- command: "Win",
21
- ctrl: "Ctrl",
22
- control: "Ctrl",
23
- alt: "Alt",
24
- option: "Alt",
25
- shift: "Shift",
26
- tab: "Tab",
27
- enter: "Enter",
28
- return: "Enter",
29
- delete: "Del",
30
- del: "Del",
31
- escape: "Esc",
32
- esc: "Esc",
33
- space: "Space",
34
- up: "↑",
35
- down: "↓",
36
- left: "←",
37
- right: "→",
38
- };
39
- const macSymbols = {
40
- cmd: "⌘",
41
- command: "⌘",
42
- ctrl: "⌃",
43
- control: "⌃",
44
- alt: "⌥",
45
- option: "⌥",
46
- shift: "⇧",
47
- tab: "⇥",
48
- enter: "⏎",
49
- return: "⏎",
50
- delete: "⌫",
51
- del: "⌫",
52
- escape: "⎋",
53
- esc: "⎋",
54
- space: "␣",
55
- up: "↑",
56
- down: "↓",
57
- left: "←",
58
- right: "→",
59
- };
60
- function normalize(show, type) {
61
- const token = (show || "").toLowerCase();
62
- const label = aliases[token] || show || "Key";
63
- if (type === "mac") {
64
- return macSymbols[token] || label;
65
- }
66
- return label;
67
- }
68
- export function KbdMdx({ show, type = "window", style }) {
69
- const label = normalize(show, type);
70
- const isLetter = /^[a-zA-Z]$/.test(show);
71
- const display = isLetter ? show.toUpperCase() : label;
72
- return _jsx("kbd", { style: { ...wrapperStyle, ...style }, children: display });
73
- }
74
- //# sourceMappingURL=KbdMdx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KbdMdx.js","sourceRoot":"","sources":["../../src/components/KbdMdx.tsx"],"names":[],"mappings":";AAQA,MAAM,YAAY,GAAkB;IAClC,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;CACd,CAAC;AAEF,MAAM,OAAO,GAA2B;IACtC,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,KAAK;IACb,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,KAAK;IACb,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,UAAU,GAA2B;IACzC,GAAG,EAAE,GAAG;IACR,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,GAAG,EAAE,GAAG;IACR,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;IACV,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;IACR,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,GAAG;IACV,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,SAAS,SAAS,CAAC,IAAY,EAAE,IAAsB;IACrD,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC;IAE9C,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,QAAQ,EAAE,KAAK,EAAoB;IACvE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACtD,OAAO,cAAK,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE,YAAG,OAAO,GAAO,CAAC;AACpE,CAAC"}
@@ -1,4 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,10 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- export function LinkMdx({ href, rel, target, ...props }) {
3
- if (!href)
4
- return null;
5
- const external = /^https?:\/\//.test(href);
6
- const computedTarget = target ?? (external ? "_blank" : undefined);
7
- const computedRel = rel ?? (external ? "noopener noreferrer" : undefined);
8
- return _jsx("a", { href: href, target: computedTarget, rel: computedRel, ...props });
9
- }
10
- //# sourceMappingURL=LinkMdx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkMdx.js","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,YAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,WAAW,KAAM,KAAK,GAAI,CAAC;AAClF,CAAC"}
@@ -1,13 +0,0 @@
1
- interface MermaidMdxProps {
2
- /** Mermaid diagram definition (from rehype plugin or programmatic) */
3
- chart: string;
4
- /** Custom DOM id (auto-generated if omitted) */
5
- id?: string;
6
- /** Additional CSS class on container */
7
- className?: string;
8
- /** Show GFM-style pan/zoom controls once the diagram renders (default true) */
9
- panZoom?: boolean;
10
- }
11
- export declare function MermaidMdx({ chart, id, className, panZoom }: MermaidMdxProps): import("react").JSX.Element | null;
12
- export {};
13
- //# sourceMappingURL=MermaidMdx.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MermaidMdx.d.ts","sourceRoot":"","sources":["../../src/components/MermaidMdx.tsx"],"names":[],"mappings":"AAgBA,UAAU,eAAe;IACvB,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,OAAc,EAAE,EAAE,eAAe,sCAwTnF"}
@@ -1,241 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useId, useRef, useEffect, useState, } from "react";
4
- // Module-level singleton — one dynamic import regardless of diagram count
5
- let mermaidPromise = null;
6
- function getTheme() {
7
- return document.documentElement.classList.contains("dark") ? "dark" : "default";
8
- }
9
- // Pan/zoom tuning — button-driven like GFM's mermaid viewer (no drag/wheel)
10
- const PAN_STEP = 50;
11
- const ZOOM_STEP = 1.2;
12
- const MIN_SCALE = 0.4;
13
- const MAX_SCALE = 4;
14
- const clampScale = (scale) => Math.min(MAX_SCALE, Math.max(MIN_SCALE, scale));
15
- const controlButtonStyle = {
16
- display: "flex",
17
- alignItems: "center",
18
- justifyContent: "center",
19
- width: 28,
20
- height: 28,
21
- padding: 0,
22
- border: "1px solid rgba(127,127,127,0.35)",
23
- borderRadius: 6,
24
- background: "rgba(127,127,127,0.12)",
25
- color: "currentcolor",
26
- cursor: "pointer",
27
- };
28
- function ControlButton({ label, onClick, cell, children, }) {
29
- return (_jsx("button", { type: "button", "aria-label": label, title: label, onClick: onClick, style: { ...controlButtonStyle, gridColumn: cell.col, gridRow: cell.row }, children: _jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: children }) }));
30
- }
31
- export function MermaidMdx({ chart, id, className, panZoom = true }) {
32
- const generatedId = useId();
33
- const domId = id ?? `mermaid-${generatedId.replace(/[:.]/g, "-")}`;
34
- const ref = useRef(null);
35
- const chartRef = useRef(chart);
36
- const mermaidRef = useRef(null);
37
- const [error, setError] = useState(null);
38
- const [rendered, setRendered] = useState(false);
39
- const [view, setView] = useState({ x: 0, y: 0, scale: 1 });
40
- const [fullscreen, setFullscreen] = useState(false);
41
- // Keep chartRef in sync so theme-change re-render (T-005) can restore text
42
- chartRef.current = chart;
43
- useEffect(() => {
44
- if (typeof window === "undefined")
45
- return;
46
- if (!chart)
47
- return;
48
- let cancelled = false;
49
- let lazyObserver = null;
50
- let syncObserver = null;
51
- let themeTimer = null;
52
- let lastTheme = getTheme();
53
- // Serialize mermaid.run calls — overlapping runs on the same node detach
54
- // in-flight SVG and crash inside d3's dispatchEvent (issue #268)
55
- let runChain = Promise.resolve();
56
- function enqueueRun(run) {
57
- const next = runChain.then(() => {
58
- if (cancelled || !ref.current?.isConnected)
59
- return;
60
- return run();
61
- });
62
- // Keep the chain alive after a failure; the caller handles rejection
63
- runChain = next.catch(() => { });
64
- return next;
65
- }
66
- async function init() {
67
- try {
68
- // Invariant 6: singleton dynamic import
69
- if (!mermaidPromise) {
70
- mermaidPromise = import("mermaid");
71
- }
72
- const mod = await mermaidPromise;
73
- const mermaid = (mermaidRef.current = mod.default);
74
- mermaid.initialize({ startOnLoad: false, theme: getTheme() });
75
- // Validate syntax early — show error before attempting render
76
- try {
77
- await mermaid.parse(chart);
78
- }
79
- catch {
80
- if (!cancelled)
81
- setError("Invalid Mermaid syntax");
82
- return;
83
- }
84
- if (cancelled || !ref.current)
85
- return;
86
- // T-009: lazy rendering via IntersectionObserver
87
- lazyObserver = new IntersectionObserver(([entry]) => {
88
- if (!entry.isIntersecting || cancelled || !ref.current)
89
- return;
90
- enqueueRun(() => {
91
- const node = ref.current;
92
- if (!node)
93
- return Promise.resolve();
94
- return mermaid.run({ nodes: [node] });
95
- })
96
- .then(() => {
97
- if (!cancelled)
98
- setRendered(true);
99
- })
100
- .catch(() => {
101
- if (!cancelled)
102
- setError("Failed to render diagram");
103
- });
104
- lazyObserver?.disconnect();
105
- }, { rootMargin: "200px" });
106
- lazyObserver.observe(ref.current);
107
- }
108
- catch {
109
- if (!cancelled)
110
- setError("Failed to load Mermaid renderer");
111
- }
112
- }
113
- init();
114
- // T-005: theme sync via MutationObserver on <html class>
115
- syncObserver = new MutationObserver(() => {
116
- if (themeTimer)
117
- clearTimeout(themeTimer);
118
- themeTimer = setTimeout(() => {
119
- if (cancelled || !mermaidRef.current || !ref.current)
120
- return;
121
- // Mount effects toggle the class without changing the theme — skip
122
- // so a spurious mutation cannot race the initial render (issue #268)
123
- if (getTheme() === lastTheme)
124
- return;
125
- enqueueRun(() => {
126
- const mermaid = mermaidRef.current;
127
- const node = ref.current;
128
- if (!mermaid || !node)
129
- return Promise.resolve();
130
- lastTheme = getTheme();
131
- // Mermaid replaces innerHTML — restore original chart text before re-render
132
- node.textContent = chartRef.current;
133
- // Remove data-processed so mermaid v11 does not skip this node
134
- node.removeAttribute("data-processed");
135
- mermaid.initialize({ startOnLoad: false, theme: lastTheme });
136
- return mermaid.run({ nodes: [node] });
137
- }).catch((e) => {
138
- // Warn, not error state — the previously rendered diagram is still on screen
139
- console.warn("[mermaid] diagram render error:", e);
140
- });
141
- }, 200);
142
- });
143
- syncObserver.observe(document.documentElement, {
144
- attributes: true,
145
- attributeFilter: ["class"],
146
- });
147
- return () => {
148
- cancelled = true;
149
- if (themeTimer)
150
- clearTimeout(themeTimer);
151
- lazyObserver?.disconnect();
152
- syncObserver?.disconnect();
153
- };
154
- // chart string is static from MDX — this only fires on mount
155
- }, []);
156
- // Lock page scroll while the fullscreen lightbox is open
157
- useEffect(() => {
158
- if (!fullscreen)
159
- return;
160
- const previous = document.body.style.overflow;
161
- document.body.style.overflow = "hidden";
162
- return () => {
163
- document.body.style.overflow = previous;
164
- };
165
- }, [fullscreen]);
166
- // Guard: empty chart
167
- if (!chart)
168
- return null;
169
- const pan = (dx, dy) => setView((v) => ({ ...v, x: v.x + dx, y: v.y + dy }));
170
- const zoom = (factor) => setView((v) => ({ ...v, scale: clampScale(v.scale * factor) }));
171
- const resetView = () => setView({ x: 0, y: 0, scale: 1 });
172
- const controlsActive = panZoom && rendered;
173
- const handleKeyDown = (e) => {
174
- // Leave browser shortcuts (Ctrl/Cmd+0, Ctrl/Cmd+-, Alt+arrows, ...) alone
175
- if (!controlsActive || e.ctrlKey || e.metaKey || e.altKey)
176
- return;
177
- const actions = {
178
- ArrowUp: () => pan(0, -PAN_STEP),
179
- ArrowDown: () => pan(0, PAN_STEP),
180
- ArrowLeft: () => pan(-PAN_STEP, 0),
181
- ArrowRight: () => pan(PAN_STEP, 0),
182
- "+": () => zoom(ZOOM_STEP),
183
- "=": () => zoom(ZOOM_STEP),
184
- "-": () => zoom(1 / ZOOM_STEP),
185
- "0": resetView,
186
- ...(fullscreen ? { Escape: () => setFullscreen(false) } : {}),
187
- };
188
- const action = actions[e.key];
189
- if (!action)
190
- return;
191
- e.preventDefault();
192
- action();
193
- };
194
- if (error) {
195
- return (_jsxs("div", { className: className, style: {
196
- border: "1px solid hsl(var(--destructive, 0 85% 60%))",
197
- borderRadius: 8,
198
- padding: "0.75rem 1rem",
199
- margin: "1em 0",
200
- }, children: [_jsx("p", { style: {
201
- color: "hsl(var(--destructive, 0 85% 60%))",
202
- fontWeight: 600,
203
- marginBottom: 8,
204
- fontSize: "0.875rem",
205
- }, children: "\u26A0\uFE0F Diagram rendering error" }), _jsx("pre", { style: {
206
- fontSize: "0.875rem",
207
- whiteSpace: "pre-wrap",
208
- margin: 0,
209
- }, children: chart })] }));
210
- }
211
- return (_jsxs("div", { className: "max-w-full", tabIndex: controlsActive ? 0 : undefined, role: controlsActive ? "group" : undefined, "aria-label": controlsActive
212
- ? "Mermaid diagram. Use arrow keys to pan, + and - to zoom, 0 to reset."
213
- : undefined, onKeyDown: handleKeyDown, style: {
214
- ...(fullscreen
215
- ? {
216
- position: "fixed",
217
- inset: 0,
218
- zIndex: 50,
219
- background: "hsl(var(--background, 0 0% 100%))",
220
- display: "flex",
221
- alignItems: "center",
222
- justifyContent: "center",
223
- }
224
- : { position: "relative" }),
225
- ...(controlsActive ? { overflow: "hidden" } : { overflowX: "auto" }),
226
- }, children: [_jsx("div", { style: controlsActive
227
- ? {
228
- transform: `translate(${view.x}px, ${view.y}px) scale(${view.scale})`,
229
- transformOrigin: "center center",
230
- transition: "transform 150ms ease",
231
- }
232
- : undefined, children: _jsx("pre", { ref: ref, id: domId, className: `mermaid not-prose${className ? ` ${className}` : ""}`, style: { margin: "1em auto", width: "fit-content", maxWidth: "100%" }, children: chart }) }), controlsActive ? (_jsxs("div", { role: "group", "aria-label": "Pan and zoom controls", style: {
233
- position: "absolute",
234
- bottom: 8,
235
- right: 8,
236
- display: "grid",
237
- gridTemplateColumns: "repeat(3, 28px)",
238
- gap: 4,
239
- }, children: [_jsx(ControlButton, { label: fullscreen ? "Exit full screen" : "Enter full screen", onClick: () => setFullscreen((f) => !f), cell: { col: 1, row: 1 }, children: fullscreen ? (_jsx("path", { d: "M8 3v3a2 2 0 0 1-2 2H3M21 8h-3a2 2 0 0 1-2-2V3M3 16h3a2 2 0 0 1 2 2v3M16 21v-3a2 2 0 0 1 2-2h3" })) : (_jsx("path", { d: "M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3" })) }), _jsx(ControlButton, { label: "Pan up", onClick: () => pan(0, -PAN_STEP), cell: { col: 2, row: 1 }, children: _jsx("path", { d: "m18 15-6-6-6 6" }) }), _jsxs(ControlButton, { label: "Zoom in", onClick: () => zoom(ZOOM_STEP), cell: { col: 3, row: 1 }, children: [_jsx("circle", { cx: "11", cy: "11", r: "7" }), _jsx("path", { d: "m21 21-4-4M8 11h6M11 8v6" })] }), _jsx(ControlButton, { label: "Pan left", onClick: () => pan(-PAN_STEP, 0), cell: { col: 1, row: 2 }, children: _jsx("path", { d: "m15 18-6-6 6-6" }) }), _jsxs(ControlButton, { label: "Reset view", onClick: resetView, cell: { col: 2, row: 2 }, children: [_jsx("path", { d: "M3 12a9 9 0 1 0 2.6-6.3L3 8" }), _jsx("path", { d: "M3 3v5h5" })] }), _jsx(ControlButton, { label: "Pan right", onClick: () => pan(PAN_STEP, 0), cell: { col: 3, row: 2 }, children: _jsx("path", { d: "m9 18 6-6-6-6" }) }), _jsx(ControlButton, { label: "Pan down", onClick: () => pan(0, PAN_STEP), cell: { col: 2, row: 3 }, children: _jsx("path", { d: "m6 9 6 6 6-6" }) }), _jsxs(ControlButton, { label: "Zoom out", onClick: () => zoom(1 / ZOOM_STEP), cell: { col: 3, row: 3 }, children: [_jsx("circle", { cx: "11", cy: "11", r: "7" }), _jsx("path", { d: "m21 21-4-4M8 11h6" })] })] })) : null] }));
240
- }
241
- //# sourceMappingURL=MermaidMdx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MermaidMdx.js","sourceRoot":"","sources":["../../src/components/MermaidMdx.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import type { CSSProperties, HTMLAttributes, ReactNode } from "react";
2
- import { IconProp } from "../utils/Icon";
3
- type NoteType = "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 | null;
12
- export {};
13
- //# sourceMappingURL=NoteMdx.d.ts.map
@@ -1 +0,0 @@
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,eAAe,CAAC;AAEtE,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;AAElE,KAAK,YAAY,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG;IAChD,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;CACvB,CAAC;AAuDF,wBAAgB,OAAO,CAAC,EACtB,IAAa,EACb,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,SAAS,EACT,GAAG,KAAK,EACT,EAAE,YAAY,sCAyDd"}
@@ -1,79 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { resolveLucideIcon } from "../utils/Icon";
3
- const palette = {
4
- danger: {
5
- border: "hsl(var(--destructive, 0 85% 60%))",
6
- bg: "hsl(var(--destructive, 0 85% 60%) / 0.16)",
7
- text: "hsl(var(--foreground, 220 30% 15%))",
8
- header: "hsl(var(--destructive, 0 85% 60%))",
9
- content: "hsl(var(--destructive, 0 85% 60%) / 0.75)",
10
- defaultIcon: "Siren",
11
- },
12
- warning: {
13
- border: "hsl(36 100% 56%)",
14
- bg: "rgba(249, 115, 22, 0.14)",
15
- text: "hsl(24 100% 18%)",
16
- header: "hsl(36 100% 56%)",
17
- content: "hsl(36 100% 56% / 0.75)",
18
- defaultIcon: "AlertTriangle",
19
- },
20
- success: {
21
- border: "hsl(145 63% 42%)",
22
- bg: "hsl(145 63% 42% / 0.16)",
23
- text: "hsl(var(--foreground, 220 30% 15%))",
24
- header: "hsl(145 63% 42%)",
25
- content: "hsl(145 63% 42% / 0.75)",
26
- defaultIcon: "CheckCircle2",
27
- },
28
- info: {
29
- border: "hsl(var(--primary, 210 81% 56%))",
30
- bg: "hsl(var(--primary, 210 81% 56%) / 0.16)",
31
- text: "hsl(var(--foreground, 220 30% 15%))",
32
- header: "hsl(var(--primary, 210 81% 56%))",
33
- content: "hsl(var(--primary, 210 81% 56%) / 0.75)",
34
- defaultIcon: "Info",
35
- },
36
- tip: {
37
- border: "hsl(137 50% 35%)",
38
- bg: "hsl(137 50% 35% / 0.16)",
39
- text: "hsl(var(--foreground, 220 30% 15%))",
40
- header: "hsl(137 50% 35%)",
41
- content: "hsl(137 50% 35% / 0.75)",
42
- defaultIcon: "Lightbulb",
43
- },
44
- };
45
- export function NoteMdx({ type = "info", title, icon, children, style, className, ...props }) {
46
- const safeType = Object.hasOwn(palette, type) ? type : "info";
47
- const token = palette[safeType];
48
- if (!token)
49
- return null;
50
- const normalizedTitle = typeof title === "string" ? title.trim() : title;
51
- const resolvedIcon = resolveLucideIcon(icon || token.defaultIcon);
52
- const fallbackTitle = normalizedTitle || type.charAt(0).toUpperCase() + type.slice(1);
53
- return (_jsxs("aside", { role: "note", className: className, ...props, style: {
54
- border: "1px solid transparent",
55
- borderLeft: `4px solid ${token.border}`,
56
- borderRadius: 10,
57
- background: token.bg,
58
- color: token.text,
59
- padding: "0.5rem 1rem",
60
- margin: "1rem 0",
61
- boxShadow: "0 1px 2px rgba(15, 23, 42, 0.08)",
62
- ...style,
63
- }, children: [fallbackTitle || resolvedIcon ? (_jsxs("div", { style: {
64
- display: "flex",
65
- alignItems: "center",
66
- gap: "0.5rem",
67
- fontWeight: 700,
68
- marginBottom: "0.35rem",
69
- color: token.header,
70
- }, children: [resolvedIcon ? (_jsx("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
- }, children: resolvedIcon })) : null, _jsx("span", { style: { color: token.header }, children: fallbackTitle })] })) : null, _jsx("div", { style: { color: token.content, lineHeight: 1.5 }, children: children })] }));
78
- }
79
- //# sourceMappingURL=NoteMdx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NoteMdx.js","sourceRoot":"","sources":["../../src/components/NoteMdx.tsx"],"names":[],"mappings":"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"}