@rasenganjs/mdx 1.2.0-beta.7 → 1.2.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 (74) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/chunk-U2MZHTHK.js +89 -0
  3. package/dist/index.cjs +922 -0
  4. package/dist/index.d.cts +150 -0
  5. package/dist/index.d.ts +150 -0
  6. package/dist/index.js +798 -0
  7. package/dist/plugin.cjs +289 -0
  8. package/dist/plugin.d.cts +20 -0
  9. package/dist/plugin.d.ts +20 -0
  10. package/dist/plugin.js +174 -0
  11. package/package.json +15 -15
  12. package/tsup.config.ts +11 -0
  13. package/types/client.d.ts +1 -1
  14. package/lib/components/codeblock.d.ts +0 -15
  15. package/lib/components/codeblock.js +0 -62
  16. package/lib/components/codeblock.js.map +0 -1
  17. package/lib/components/codeblock2.d.ts +0 -14
  18. package/lib/components/codeblock2.js +0 -47
  19. package/lib/components/codeblock2.js.map +0 -1
  20. package/lib/components/heading.d.ts +0 -2
  21. package/lib/components/heading.js +0 -27
  22. package/lib/components/heading.js.map +0 -1
  23. package/lib/components/index.d.ts +0 -5
  24. package/lib/components/index.js +0 -8
  25. package/lib/components/index.js.map +0 -1
  26. package/lib/components/markdown.d.ts +0 -7
  27. package/lib/components/markdown.js +0 -28
  28. package/lib/components/markdown.js.map +0 -1
  29. package/lib/components/renderer.d.ts +0 -12
  30. package/lib/components/renderer.js +0 -45
  31. package/lib/components/renderer.js.map +0 -1
  32. package/lib/components/table.d.ts +0 -3
  33. package/lib/components/table.js +0 -5
  34. package/lib/components/table.js.map +0 -1
  35. package/lib/components/toc.d.ts +0 -7
  36. package/lib/components/toc.js +0 -26
  37. package/lib/components/toc.js.map +0 -1
  38. package/lib/hooks/use-toc-observer.d.ts +0 -8
  39. package/lib/hooks/use-toc-observer.js +0 -60
  40. package/lib/hooks/use-toc-observer.js.map +0 -1
  41. package/lib/index.d.ts +0 -13
  42. package/lib/index.js +0 -16
  43. package/lib/index.js.map +0 -1
  44. package/lib/styles/rasengan-mdx.min.css +0 -1
  45. package/lib/types/index.d.ts +0 -67
  46. package/lib/types/index.js +0 -2
  47. package/lib/types/index.js.map +0 -1
  48. package/lib/utils/create-filter.d.ts +0 -8
  49. package/lib/utils/create-filter.js +0 -23
  50. package/lib/utils/create-filter.js.map +0 -1
  51. package/lib/utils/create-heading.d.ts +0 -4
  52. package/lib/utils/create-heading.js +0 -19
  53. package/lib/utils/create-heading.js.map +0 -1
  54. package/lib/utils/define-mdx-config.d.ts +0 -2
  55. package/lib/utils/define-mdx-config.js +0 -4
  56. package/lib/utils/define-mdx-config.js.map +0 -1
  57. package/lib/utils/extract-toc.d.ts +0 -23
  58. package/lib/utils/extract-toc.js +0 -113
  59. package/lib/utils/extract-toc.js.map +0 -1
  60. package/lib/utils/generate-navigation.d.ts +0 -0
  61. package/lib/utils/generate-navigation.js +0 -75
  62. package/lib/utils/generate-navigation.js.map +0 -1
  63. package/lib/utils/index.d.ts +0 -15
  64. package/lib/utils/index.js +0 -4
  65. package/lib/utils/index.js.map +0 -1
  66. package/lib/utils/mark-to-html.d.ts +0 -1
  67. package/lib/utils/mark-to-html.js +0 -15
  68. package/lib/utils/mark-to-html.js.map +0 -1
  69. package/lib/utils/plugin.d.ts +0 -26
  70. package/lib/utils/plugin.js +0 -149
  71. package/lib/utils/plugin.js.map +0 -1
  72. package/lib/utils/polyfill.d.ts +0 -10
  73. package/lib/utils/polyfill.js +0 -15
  74. package/lib/utils/polyfill.js.map +0 -1
package/dist/index.cjs ADDED
@@ -0,0 +1,922 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/index.ts
30
+ var src_exports = {};
31
+ __export(src_exports, {
32
+ CodeBlock: () => CodeBlock,
33
+ Icons: () => Icons,
34
+ MDXRenderer: () => MDXRenderer,
35
+ Markdown: () => Markdown,
36
+ TableOfContents: () => TableOfContents,
37
+ defineMDXConfig: () => defineMDXConfig,
38
+ extractTOC: () => extractTOC,
39
+ getIconForLanguageExtension: () => getIconForLanguageExtension,
40
+ useActiveTocItem: () => useActiveTocItem
41
+ });
42
+ module.exports = __toCommonJS(src_exports);
43
+
44
+ // src/utils/extract-toc.ts
45
+ var import_react = __toESM(require("react"), 1);
46
+ function extractTOC(markdown) {
47
+ const lines = markdown.split("\n");
48
+ const toc = [];
49
+ lines.forEach((line) => {
50
+ const h2Match = line.match(/^## (.+)/);
51
+ const h3Match = line.match(/^### (.+)/);
52
+ if (h2Match) {
53
+ const title = h2Match[1].trim();
54
+ const anchor = generateAnchor(title);
55
+ toc.push({
56
+ title,
57
+ anchor,
58
+ level: 2,
59
+ children: []
60
+ });
61
+ } else if (h3Match && toc.length > 0) {
62
+ const title = h3Match[1].trim();
63
+ const anchor = generateAnchor(title);
64
+ toc[toc.length - 1].children.push({
65
+ title,
66
+ anchor,
67
+ level: 3
68
+ });
69
+ }
70
+ });
71
+ return toc;
72
+ }
73
+ var generateAnchor = (title) => {
74
+ if (Array.isArray(title)) {
75
+ const text2 = title.map((item) => {
76
+ if (import_react.default.isValidElement(item)) {
77
+ return item.props["children"].toString().trim();
78
+ }
79
+ return item.toString().trim();
80
+ }).join(" ");
81
+ const lastItem = title[title.length - 1];
82
+ if (typeof lastItem === "string") {
83
+ const match1 = text2.match(/\s\[#([^\]]+)\]$/);
84
+ if (match1) {
85
+ return {
86
+ id: match1[1],
87
+ // remove the last element from title
88
+ text: title.slice(0, title.length - 1)
89
+ };
90
+ }
91
+ }
92
+ return {
93
+ id: text2.replace(/\s+/g, "-").toLowerCase(),
94
+ text: title
95
+ };
96
+ }
97
+ if (import_react.default.isValidElement(title)) {
98
+ return {
99
+ id: title.props["children"].toString().trim().replace(/\s+/g, "-").toLowerCase(),
100
+ text: title
101
+ };
102
+ }
103
+ const strippedTitle = String(toText(title).trim());
104
+ const match = strippedTitle.match(/\s\[#([^\]]+)\]$/);
105
+ let id;
106
+ let text;
107
+ if (match) {
108
+ id = match[1].trim().replace(/\s+/g, "-").toLowerCase();
109
+ text = strippedTitle.replace(match[0], "").trim();
110
+ } else {
111
+ id = strippedTitle.replace(/\s+/g, "-").toLowerCase();
112
+ text = strippedTitle;
113
+ }
114
+ return { id, text };
115
+ };
116
+ function toText(input) {
117
+ if (input == null) return "";
118
+ if (typeof input === "string") return input;
119
+ if (Array.isArray(input)) return input.map(toText).join(" ");
120
+ if (input instanceof Uint8Array)
121
+ return new TextDecoder().decode(input);
122
+ try {
123
+ return String(input);
124
+ } catch {
125
+ return "";
126
+ }
127
+ }
128
+
129
+ // src/utils/define-mdx-config.ts
130
+ function defineMDXConfig(config) {
131
+ return config;
132
+ }
133
+
134
+ // src/components/heading.tsx
135
+ var import_react2 = require("react");
136
+ var import_jsx_runtime = require("react/jsx-runtime");
137
+ var Heading = ({ variant }) => {
138
+ return ({ children }) => {
139
+ const { text, id } = (0, import_react2.useMemo)(() => {
140
+ const { id: id2, text: text2 } = generateAnchor(children);
141
+ return {
142
+ id: variant === "h1" ? void 0 : id2,
143
+ text: text2
144
+ };
145
+ }, [children]);
146
+ const heading = (0, import_react2.createElement)(variant, {
147
+ id,
148
+ className: "heading",
149
+ children: text
150
+ });
151
+ const handleClick = (e, id2) => {
152
+ e.preventDefault();
153
+ const element = document.getElementById(id2);
154
+ element?.scrollIntoView({ behavior: "smooth" });
155
+ history.pushState(null, "", `#${id2}`);
156
+ };
157
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "ra-heading-wrapper", children: [
158
+ heading,
159
+ id && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href: `#${id}`, onClick: (e) => handleClick(e, id), children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
160
+ "svg",
161
+ {
162
+ xmlns: "http://www.w3.org/2000/svg",
163
+ viewBox: "0 0 24 24",
164
+ width: "24",
165
+ height: "24",
166
+ color: "#ffffff",
167
+ fill: "none",
168
+ children: [
169
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
170
+ "path",
171
+ {
172
+ d: "M10 13.229C10.1416 13.4609 10.3097 13.6804 10.5042 13.8828C11.7117 15.1395 13.5522 15.336 14.9576 14.4722C15.218 14.3121 15.4634 14.1157 15.6872 13.8828L18.9266 10.5114C20.3578 9.02184 20.3578 6.60676 18.9266 5.11718C17.4953 3.6276 15.1748 3.62761 13.7435 5.11718L13.03 5.85978",
173
+ stroke: "currentColor",
174
+ strokeWidth: "1.5",
175
+ strokeLinecap: "round"
176
+ }
177
+ ),
178
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
179
+ "path",
180
+ {
181
+ d: "M10.9703 18.14L10.2565 18.8828C8.82526 20.3724 6.50471 20.3724 5.07345 18.8828C3.64218 17.3932 3.64218 14.9782 5.07345 13.4886L8.31287 10.1172C9.74413 8.62761 12.0647 8.6276 13.4959 10.1172C13.6904 10.3195 13.8584 10.539 14 10.7708",
182
+ stroke: "currentColor",
183
+ strokeWidth: "1.5",
184
+ strokeLinecap: "round"
185
+ }
186
+ )
187
+ ]
188
+ }
189
+ ) })
190
+ ] });
191
+ };
192
+ };
193
+
194
+ // src/components/toc.tsx
195
+ var import_react4 = __toESM(require("react"), 1);
196
+
197
+ // src/hooks/use-toc-observer.ts
198
+ var import_react3 = require("react");
199
+ function useActiveTocItem(items, options = {
200
+ root: null,
201
+ rootMargin: "0px",
202
+ threshold: 0.4
203
+ // Trigger when 40% of the section is visible
204
+ }) {
205
+ const [activeId, setActiveId] = (0, import_react3.useState)(null);
206
+ const observerRef = (0, import_react3.useRef)(null);
207
+ (0, import_react3.useEffect)(() => {
208
+ observerRef.current = new IntersectionObserver((entries) => {
209
+ entries.forEach((entry) => {
210
+ if (entry.isIntersecting) {
211
+ const rect = entry.boundingClientRect;
212
+ if (rect.top >= 0) {
213
+ setActiveId(entry.target.id);
214
+ }
215
+ }
216
+ });
217
+ const sortedEntries = entries.filter((entry) => entry.isIntersecting).sort((a, b) => b.boundingClientRect.top - a.boundingClientRect.top);
218
+ if (sortedEntries.length > 0) {
219
+ setActiveId(sortedEntries[0].target.id);
220
+ }
221
+ }, options);
222
+ const observeElements = () => {
223
+ items.forEach((item) => {
224
+ const element = document.getElementById(item.anchor.id);
225
+ if (element && observerRef.current) {
226
+ observerRef.current.observe(element);
227
+ }
228
+ item.children?.forEach((child) => {
229
+ const childElement = document.getElementById(child.anchor.id);
230
+ if (childElement && observerRef.current) {
231
+ observerRef.current.observe(childElement);
232
+ }
233
+ });
234
+ });
235
+ };
236
+ observeElements();
237
+ return () => {
238
+ if (observerRef.current) {
239
+ observerRef.current.disconnect();
240
+ }
241
+ };
242
+ }, [items, options]);
243
+ return [activeId, setActiveId];
244
+ }
245
+
246
+ // src/components/toc.tsx
247
+ var import_jsx_runtime2 = require("react/jsx-runtime");
248
+ var TableOfContents = ({ items }) => {
249
+ const [activeId, setActiveId] = useActiveTocItem(items);
250
+ const renderTOCItems = (0, import_react4.useCallback)(
251
+ (items2) => {
252
+ return items2.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_react4.default.Fragment, { children: [
253
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Item, { item, activeId, onActive: setActiveId }),
254
+ item.children && item.children.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "toc-item--children", children: renderTOCItems(item.children) })
255
+ ] }, index));
256
+ },
257
+ [items, activeId]
258
+ );
259
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("aside", { className: "rasengan-toc", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "table-of-contents", children: [
260
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h2", { className: "title", children: "ON THIS PAGE" }),
261
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "items-container", children: renderTOCItems(items) })
262
+ ] }) });
263
+ };
264
+ var Item = ({ item, activeId, onActive }) => {
265
+ const handleClick = (e, id) => {
266
+ e.preventDefault();
267
+ onActive(id);
268
+ const element = document.getElementById(id);
269
+ element?.scrollIntoView({ behavior: "smooth" });
270
+ history.pushState(null, "", `#${id}`);
271
+ };
272
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
273
+ "div",
274
+ {
275
+ className: `
276
+ toc-item
277
+ ${item.level === 2 ? "level2" : "level3"}
278
+ ${activeId === item.anchor.id ? "active" : ""}
279
+ `,
280
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
281
+ "a",
282
+ {
283
+ href: `#${item.anchor.id}`,
284
+ onClick: (e) => handleClick(e, item.anchor.id),
285
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "toc-item--title", children: item.anchor.text })
286
+ }
287
+ )
288
+ },
289
+ item.anchor.id
290
+ );
291
+ };
292
+ var toc_default = TableOfContents;
293
+
294
+ // src/utils/create-heading.tsx
295
+ var import_jsx_runtime3 = require("react/jsx-runtime");
296
+ function createHeading(CustomHeading) {
297
+ return ({ children }) => {
298
+ const { id, text } = generateAnchor(children);
299
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(CustomHeading, { id, children: text });
300
+ };
301
+ }
302
+
303
+ // src/components/renderer.tsx
304
+ var import_jsx_runtime4 = require("react/jsx-runtime");
305
+ var MDXRenderer = ({
306
+ children: MDXContent,
307
+ className,
308
+ config,
309
+ // TOC Extracted from the original MDX file
310
+ toc: originalTocData,
311
+ // Original markdown content
312
+ raw
313
+ }) => {
314
+ const {
315
+ components = {},
316
+ toc: customTocFunction = void 0,
317
+ layout: Layout
318
+ } = config;
319
+ if (Layout) {
320
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
321
+ Layout,
322
+ {
323
+ toc: originalTocData && (customTocFunction ? customTocFunction(originalTocData) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(toc_default, { items: originalTocData })),
324
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
325
+ MDXContent,
326
+ {
327
+ components: {
328
+ ...components,
329
+ h1: components.h1 ? createHeading(components.h1) : Heading({ variant: "h1" }),
330
+ h2: components.h2 ? createHeading(components.h2) : Heading({ variant: "h2" }),
331
+ h3: components.h3 ? createHeading(components.h3) : Heading({ variant: "h3" }),
332
+ h4: components.h4 ? createHeading(components.h4) : Heading({ variant: "h4" }),
333
+ h5: components.h5 ? createHeading(components.h5) : Heading({ variant: "h5" }),
334
+ h6: components.h6 ? createHeading(components.h6) : Heading({ variant: "h6" })
335
+ }
336
+ }
337
+ )
338
+ }
339
+ );
340
+ }
341
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
342
+ "section",
343
+ {
344
+ style: {
345
+ display: "flex",
346
+ flexDirection: "row",
347
+ gap: 40,
348
+ padding: 40
349
+ },
350
+ children: [
351
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
352
+ "section",
353
+ {
354
+ style: {
355
+ width: "100%",
356
+ display: "flex",
357
+ flexDirection: "column",
358
+ alignItems: "center",
359
+ gap: 10
360
+ },
361
+ className,
362
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
363
+ "div",
364
+ {
365
+ style: {
366
+ maxWidth: 800
367
+ },
368
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
369
+ MDXContent,
370
+ {
371
+ components: {
372
+ ...components,
373
+ h1: components.h1 ? createHeading(components.h1) : Heading({ variant: "h1" }),
374
+ h2: components.h2 ? createHeading(components.h2) : Heading({ variant: "h2" }),
375
+ h3: components.h3 ? createHeading(components.h3) : Heading({ variant: "h3" }),
376
+ h4: components.h4 ? createHeading(components.h4) : Heading({ variant: "h4" }),
377
+ h5: components.h5 ? createHeading(components.h5) : Heading({ variant: "h5" }),
378
+ h6: components.h6 ? createHeading(components.h6) : Heading({ variant: "h6" })
379
+ }
380
+ }
381
+ )
382
+ }
383
+ )
384
+ }
385
+ ),
386
+ originalTocData && (customTocFunction ? customTocFunction(originalTocData) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(toc_default, { items: originalTocData }))
387
+ ]
388
+ }
389
+ );
390
+ };
391
+
392
+ // src/components/markdown.tsx
393
+ var import_react_markdown = __toESM(require("react-markdown"), 1);
394
+ var import_remark_gfm = __toESM(require("remark-gfm"), 1);
395
+ var import_rehype_stringify = __toESM(require("rehype-stringify"), 1);
396
+ var import_remark_parse = __toESM(require("remark-parse"), 1);
397
+ var import_remark_rehype = __toESM(require("remark-rehype"), 1);
398
+
399
+ // src/components/codeblock2.tsx
400
+ var import_prism_react_renderer = require("prism-react-renderer");
401
+ var import_react6 = __toESM(require("react"), 1);
402
+
403
+ // src/components/codeblock.tsx
404
+ var import_react5 = __toESM(require("react"), 1);
405
+ var import_server = require("react-dom/server");
406
+ var import_jsx_runtime5 = require("react/jsx-runtime");
407
+ var CodeBlock = ({
408
+ children = "",
409
+ className = "",
410
+ ...rest
411
+ }) => {
412
+ const language = rest["data-language"] || "";
413
+ const numbers = rest["data-line-numbers"];
414
+ const [hover, setHover] = import_react5.default.useState(false);
415
+ const [copied, setCopied] = import_react5.default.useState(false);
416
+ import_react5.default.useEffect(() => {
417
+ const timer = setTimeout(() => {
418
+ setCopied(false);
419
+ }, 2e3);
420
+ return () => clearTimeout(timer);
421
+ }, [copied]);
422
+ const handleCopy = () => {
423
+ const content = (0, import_server.renderToString)(children);
424
+ const code = extractTextFromHTML(content);
425
+ navigator.clipboard.writeText(code);
426
+ setCopied(true);
427
+ };
428
+ const extractTextFromHTML = (htmlString) => {
429
+ const parser = new DOMParser();
430
+ const doc = parser.parseFromString(htmlString, "text/html");
431
+ return doc.body.textContent || "";
432
+ };
433
+ if (!language) {
434
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SimpleBlock, { children });
435
+ }
436
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
437
+ "div",
438
+ {
439
+ onMouseEnter: () => setHover(true),
440
+ onMouseLeave: () => setHover(false),
441
+ children: [
442
+ hover ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
443
+ "button",
444
+ {
445
+ onClick: handleCopy,
446
+ style: {
447
+ position: "absolute",
448
+ top: "15px",
449
+ right: "15px",
450
+ transition: "all 0.2s",
451
+ zIndex: 10
452
+ },
453
+ children: copied ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
454
+ "svg",
455
+ {
456
+ xmlns: "http://www.w3.org/2000/svg",
457
+ viewBox: "0 0 24 24",
458
+ width: "16",
459
+ height: "16",
460
+ color: "#f0f0f0",
461
+ fill: "none",
462
+ children: [
463
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
464
+ "path",
465
+ {
466
+ d: "M22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12Z",
467
+ stroke: "currentColor",
468
+ strokeWidth: "1.5"
469
+ }
470
+ ),
471
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
472
+ "path",
473
+ {
474
+ d: "M8 12.5L10.5 15L16 9",
475
+ stroke: "currentColor",
476
+ strokeWidth: "1.5",
477
+ strokeLinecap: "round",
478
+ strokeLinejoin: "round"
479
+ }
480
+ )
481
+ ]
482
+ }
483
+ ) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
484
+ "svg",
485
+ {
486
+ xmlns: "http://www.w3.org/2000/svg",
487
+ viewBox: "0 0 24 24",
488
+ width: "16",
489
+ height: "16",
490
+ color: "#f0f0f0",
491
+ fill: "none",
492
+ children: [
493
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
494
+ "path",
495
+ {
496
+ d: "M9 15C9 12.1716 9 10.7574 9.87868 9.87868C10.7574 9 12.1716 9 15 9L16 9C18.8284 9 20.2426 9 21.1213 9.87868C22 10.7574 22 12.1716 22 15V16C22 18.8284 22 20.2426 21.1213 21.1213C20.2426 22 18.8284 22 16 22H15C12.1716 22 10.7574 22 9.87868 21.1213C9 20.2426 9 18.8284 9 16L9 15Z",
497
+ stroke: "currentColor",
498
+ strokeWidth: "1.5",
499
+ strokeLinecap: "round",
500
+ strokeLinejoin: "round"
501
+ }
502
+ ),
503
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
504
+ "path",
505
+ {
506
+ d: "M16.9999 9C16.9975 6.04291 16.9528 4.51121 16.092 3.46243C15.9258 3.25989 15.7401 3.07418 15.5376 2.90796C14.4312 2 12.7875 2 9.5 2C6.21252 2 4.56878 2 3.46243 2.90796C3.25989 3.07417 3.07418 3.25989 2.90796 3.46243C2 4.56878 2 6.21252 2 9.5C2 12.7875 2 14.4312 2.90796 15.5376C3.07417 15.7401 3.25989 15.9258 3.46243 16.092C4.51121 16.9528 6.04291 16.9975 9 16.9999",
507
+ stroke: "currentColor",
508
+ strokeWidth: "1.5",
509
+ strokeLinecap: "round",
510
+ strokeLinejoin: "round"
511
+ }
512
+ )
513
+ ]
514
+ }
515
+ )
516
+ }
517
+ ) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
518
+ "span",
519
+ {
520
+ style: {
521
+ position: "absolute",
522
+ top: "15px",
523
+ right: "15px",
524
+ transition: "all 0.2s",
525
+ zIndex: 10
526
+ },
527
+ children: language
528
+ }
529
+ ),
530
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
531
+ "code",
532
+ {
533
+ className: `${className} code-block`,
534
+ "data-line-numbers": numbers !== void 0 ? "" : void 0,
535
+ children
536
+ }
537
+ )
538
+ ]
539
+ }
540
+ );
541
+ };
542
+ var SimpleBlock = ({
543
+ children
544
+ }) => {
545
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("code", { className: "simple-block", children });
546
+ };
547
+
548
+ // src/components/codeblock2.tsx
549
+ var import_jsx_runtime6 = require("react/jsx-runtime");
550
+ var CodeBlock2 = ({
551
+ children = "",
552
+ className = "",
553
+ ...rest
554
+ }) => {
555
+ const language = className.replace(/language-/, "");
556
+ const [hover, setHover] = import_react6.default.useState(false);
557
+ if (!language) {
558
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SimpleBlock, { children });
559
+ }
560
+ console.log({ children, className, rest });
561
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
562
+ import_prism_react_renderer.Highlight,
563
+ {
564
+ theme: import_prism_react_renderer.themes.oneDark,
565
+ code: children.toString().trim(),
566
+ language,
567
+ children: ({ className: className2, tokens, getLineProps, getTokenProps, ...rest2 }) => {
568
+ const [copied, setCopied] = import_react6.default.useState(false);
569
+ import_react6.default.useEffect(() => {
570
+ const timer = setTimeout(() => {
571
+ setCopied(false);
572
+ }, 2e3);
573
+ return () => clearTimeout(timer);
574
+ }, [copied]);
575
+ const handleCopy = () => {
576
+ navigator.clipboard.writeText((children ?? "").toString().trim());
577
+ setCopied(true);
578
+ };
579
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("figure", { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
580
+ "pre",
581
+ {
582
+ onMouseEnter: () => setHover(true),
583
+ onMouseLeave: () => setHover(false),
584
+ "data-language": language,
585
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { children: [
586
+ hover ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { className: "copy-button", onClick: handleCopy, children: copied ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
587
+ "svg",
588
+ {
589
+ xmlns: "http://www.w3.org/2000/svg",
590
+ viewBox: "0 0 24 24",
591
+ width: "20",
592
+ height: "20",
593
+ color: "#f0f0f0",
594
+ fill: "none",
595
+ children: [
596
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
597
+ "path",
598
+ {
599
+ d: "M22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12Z",
600
+ stroke: "currentColor",
601
+ strokeWidth: "1.5"
602
+ }
603
+ ),
604
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
605
+ "path",
606
+ {
607
+ d: "M8 12.5L10.5 15L16 9",
608
+ stroke: "currentColor",
609
+ strokeWidth: "1.5",
610
+ strokeLinecap: "round",
611
+ strokeLinejoin: "round"
612
+ }
613
+ )
614
+ ]
615
+ }
616
+ ) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
617
+ "svg",
618
+ {
619
+ xmlns: "http://www.w3.org/2000/svg",
620
+ viewBox: "0 0 24 24",
621
+ width: "20",
622
+ height: "20",
623
+ color: "#f0f0f0",
624
+ fill: "none",
625
+ children: [
626
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
627
+ "path",
628
+ {
629
+ d: "M9 15C9 12.1716 9 10.7574 9.87868 9.87868C10.7574 9 12.1716 9 15 9L16 9C18.8284 9 20.2426 9 21.1213 9.87868C22 10.7574 22 12.1716 22 15V16C22 18.8284 22 20.2426 21.1213 21.1213C20.2426 22 18.8284 22 16 22H15C12.1716 22 10.7574 22 9.87868 21.1213C9 20.2426 9 18.8284 9 16L9 15Z",
630
+ stroke: "currentColor",
631
+ strokeWidth: "1.5",
632
+ strokeLinecap: "round",
633
+ strokeLinejoin: "round"
634
+ }
635
+ ),
636
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
637
+ "path",
638
+ {
639
+ d: "M16.9999 9C16.9975 6.04291 16.9528 4.51121 16.092 3.46243C15.9258 3.25989 15.7401 3.07418 15.5376 2.90796C14.4312 2 12.7875 2 9.5 2C6.21252 2 4.56878 2 3.46243 2.90796C3.25989 3.07417 3.07418 3.25989 2.90796 3.46243C2 4.56878 2 6.21252 2 9.5C2 12.7875 2 14.4312 2.90796 15.5376C3.07417 15.7401 3.25989 15.9258 3.46243 16.092C4.51121 16.9528 6.04291 16.9975 9 16.9999",
640
+ stroke: "currentColor",
641
+ strokeWidth: "1.5",
642
+ strokeLinecap: "round",
643
+ strokeLinejoin: "round"
644
+ }
645
+ )
646
+ ]
647
+ }
648
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "lang", children: language }),
649
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("code", { className: `${className2} code-block`, "data-line-numbers": true, children: tokens.map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { "data-line": true, ...getLineProps({ line }), children: [
650
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: " " }),
651
+ line.map((token, key) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { ...getTokenProps({ token }) }, key))
652
+ ] }, i)) })
653
+ ] })
654
+ }
655
+ ) });
656
+ }
657
+ }
658
+ );
659
+ };
660
+
661
+ // src/components/markdown.tsx
662
+ var import_jsx_runtime7 = require("react/jsx-runtime");
663
+ function Markdown({
664
+ content,
665
+ className,
666
+ overwriteStyle
667
+ }) {
668
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
669
+ "section",
670
+ {
671
+ className: `${className} ${overwriteStyle ? "" : "rasengan-markdown-body"}`,
672
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
673
+ import_react_markdown.default,
674
+ {
675
+ children: content,
676
+ remarkPlugins: [import_remark_parse.default, import_remark_gfm.default],
677
+ rehypePlugins: [import_remark_rehype.default, import_rehype_stringify.default],
678
+ components: {
679
+ code: CodeBlock2,
680
+ h1: Heading({ variant: "h1" }),
681
+ h2: Heading({ variant: "h2" }),
682
+ h3: Heading({ variant: "h3" }),
683
+ h4: Heading({ variant: "h4" }),
684
+ h5: Heading({ variant: "h5" }),
685
+ h6: Heading({ variant: "h6" })
686
+ }
687
+ }
688
+ )
689
+ }
690
+ );
691
+ }
692
+
693
+ // src/components/icons.tsx
694
+ var import_lucide_react = require("lucide-react");
695
+ var import_jsx_runtime8 = require("react/jsx-runtime");
696
+ var Icons = {
697
+ logo: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 256 256", ...props, children: [
698
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("rect", { width: "256", height: "256", fill: "none" }),
699
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
700
+ "line",
701
+ {
702
+ x1: "208",
703
+ y1: "128",
704
+ x2: "128",
705
+ y2: "208",
706
+ fill: "none",
707
+ stroke: "currentColor",
708
+ strokeLinecap: "round",
709
+ strokeLinejoin: "round",
710
+ strokeWidth: "32"
711
+ }
712
+ ),
713
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
714
+ "line",
715
+ {
716
+ x1: "192",
717
+ y1: "40",
718
+ x2: "40",
719
+ y2: "192",
720
+ fill: "none",
721
+ stroke: "currentColor",
722
+ strokeLinecap: "round",
723
+ strokeLinejoin: "round",
724
+ strokeWidth: "32"
725
+ }
726
+ )
727
+ ] }),
728
+ twitter: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
729
+ "svg",
730
+ {
731
+ ...props,
732
+ height: "23",
733
+ viewBox: "0 0 1200 1227",
734
+ width: "23",
735
+ xmlns: "http://www.w3.org/2000/svg",
736
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z" })
737
+ }
738
+ ),
739
+ gitHub: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { viewBox: "0 0 438.549 438.549", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
740
+ "path",
741
+ {
742
+ fill: "currentColor",
743
+ d: "M409.132 114.573c-19.608-33.596-46.205-60.194-79.798-79.8-33.598-19.607-70.277-29.408-110.063-29.408-39.781 0-76.472 9.804-110.063 29.408-33.596 19.605-60.192 46.204-79.8 79.8C9.803 148.168 0 184.854 0 224.63c0 47.78 13.94 90.745 41.827 128.906 27.884 38.164 63.906 64.572 108.063 79.227 5.14.954 8.945.283 11.419-1.996 2.475-2.282 3.711-5.14 3.711-8.562 0-.571-.049-5.708-.144-15.417a2549.81 2549.81 0 01-.144-25.406l-6.567 1.136c-4.187.767-9.469 1.092-15.846 1-6.374-.089-12.991-.757-19.842-1.999-6.854-1.231-13.229-4.086-19.13-8.559-5.898-4.473-10.085-10.328-12.56-17.556l-2.855-6.57c-1.903-4.374-4.899-9.233-8.992-14.559-4.093-5.331-8.232-8.945-12.419-10.848l-1.999-1.431c-1.332-.951-2.568-2.098-3.711-3.429-1.142-1.331-1.997-2.663-2.568-3.997-.572-1.335-.098-2.43 1.427-3.289 1.525-.859 4.281-1.276 8.28-1.276l5.708.853c3.807.763 8.516 3.042 14.133 6.851 5.614 3.806 10.229 8.754 13.846 14.842 4.38 7.806 9.657 13.754 15.846 17.847 6.184 4.093 12.419 6.136 18.699 6.136 6.28 0 11.704-.476 16.274-1.423 4.565-.952 8.848-2.383 12.847-4.285 1.713-12.758 6.377-22.559 13.988-29.41-10.848-1.14-20.601-2.857-29.264-5.14-8.658-2.286-17.605-5.996-26.835-11.14-9.235-5.137-16.896-11.516-22.985-19.126-6.09-7.614-11.088-17.61-14.987-29.979-3.901-12.374-5.852-26.648-5.852-42.826 0-23.035 7.52-42.637 22.557-58.817-7.044-17.318-6.379-36.732 1.997-58.24 5.52-1.715 13.706-.428 24.554 3.853 10.85 4.283 18.794 7.952 23.84 10.994 5.046 3.041 9.089 5.618 12.135 7.708 17.705-4.947 35.976-7.421 54.818-7.421s37.117 2.474 54.823 7.421l10.849-6.849c7.419-4.57 16.18-8.758 26.262-12.565 10.088-3.805 17.802-4.853 23.134-3.138 8.562 21.509 9.325 40.922 2.279 58.24 15.036 16.18 22.559 35.787 22.559 58.817 0 16.178-1.958 30.497-5.853 42.966-3.9 12.471-8.941 22.457-15.125 29.979-6.191 7.521-13.901 13.85-23.131 18.986-9.232 5.14-18.182 8.85-26.84 11.136-8.662 2.286-18.415 4.004-29.263 5.146 9.894 8.562 14.842 22.077 14.842 40.539v60.237c0 3.422 1.19 6.279 3.572 8.562 2.379 2.279 6.136 2.95 11.276 1.995 44.163-14.653 80.185-41.062 108.068-79.226 27.88-38.161 41.825-81.126 41.825-128.906-.01-39.771-9.818-76.454-29.414-110.049z"
744
+ }
745
+ ) }),
746
+ radix: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("svg", { viewBox: "0 0 25 25", fill: "none", ...props, children: [
747
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
748
+ "path",
749
+ {
750
+ d: "M12 25C7.58173 25 4 21.4183 4 17C4 12.5817 7.58173 9 12 9V25Z",
751
+ fill: "currentcolor"
752
+ }
753
+ ),
754
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M12 0H4V8H12V0Z", fill: "currentcolor" }),
755
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
756
+ "path",
757
+ {
758
+ d: "M17 8C19.2091 8 21 6.20914 21 4C21 1.79086 19.2091 0 17 0C14.7909 0 13 1.79086 13 4C13 6.20914 14.7909 8 17 8Z",
759
+ fill: "currentcolor"
760
+ }
761
+ )
762
+ ] }),
763
+ aria: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { role: "img", viewBox: "0 0 24 24", fill: "currentColor", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M13.966 22.624l-1.69-4.281H8.122l3.892-9.144 5.662 13.425zM8.884 1.376H0v21.248zm15.116 0h-8.884L24 22.624Z" }) }),
764
+ npm: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
765
+ "path",
766
+ {
767
+ d: "M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z",
768
+ fill: "currentColor"
769
+ }
770
+ ) }),
771
+ yarn: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
772
+ "path",
773
+ {
774
+ d: "M12 0C5.375 0 0 5.375 0 12s5.375 12 12 12 12-5.375 12-12S18.625 0 12 0zm.768 4.105c.183 0 .363.053.525.157.125.083.287.185.755 1.154.31-.088.468-.042.551-.019.204.056.366.19.463.375.477.917.542 2.553.334 3.605-.241 1.232-.755 2.029-1.131 2.576.324.329.778.899 1.117 1.825.278.774.31 1.478.273 2.015a5.51 5.51 0 0 0 .602-.329c.593-.366 1.487-.917 2.553-.931.714-.009 1.269.445 1.353 1.103a1.23 1.23 0 0 1-.945 1.362c-.649.158-.95.278-1.821.843-1.232.797-2.539 1.242-3.012 1.39a1.686 1.686 0 0 1-.704.343c-.737.181-3.266.315-3.466.315h-.046c-.783 0-1.214-.241-1.45-.491-.658.329-1.51.19-2.122-.134a1.078 1.078 0 0 1-.58-1.153 1.243 1.243 0 0 1-.153-.195c-.162-.25-.528-.936-.454-1.946.056-.723.556-1.367.88-1.71a5.522 5.522 0 0 1 .408-2.256c.306-.727.885-1.348 1.32-1.737-.32-.537-.644-1.367-.329-2.21.227-.602.412-.936.82-1.08h-.005c.199-.074.389-.153.486-.259a3.418 3.418 0 0 1 2.298-1.103c.037-.093.079-.185.125-.283.31-.658.639-1.029 1.024-1.168a.94.94 0 0 1 .328-.06zm.006.7c-.507.016-1.001 1.519-1.001 1.519s-1.27-.204-2.266.871c-.199.218-.468.334-.746.44-.079.028-.176.023-.417.672-.371.991.625 2.094.625 2.094s-1.186.839-1.626 1.881c-.486 1.144-.338 2.261-.338 2.261s-.843.732-.899 1.487c-.051.663.139 1.2.343 1.515.227.343.51.176.51.176s-.561.653-.037.931c.477.25 1.283.394 1.71-.037.31-.31.371-1.001.486-1.283.028-.065.12.111.209.199.097.093.264.195.264.195s-.755.324-.445 1.066c.102.246.468.403 1.066.398.222-.005 2.664-.139 3.313-.296.375-.088.505-.283.505-.283s1.566-.431 2.998-1.357c.917-.598 1.293-.76 2.034-.936.612-.148.57-1.098-.241-1.084-.839.009-1.575.44-2.196.825-1.163.718-1.742.672-1.742.672l-.018-.032c-.079-.13.371-1.293-.134-2.678-.547-1.515-1.413-1.881-1.344-1.997.297-.5 1.038-1.297 1.334-2.78.176-.899.13-2.377-.269-3.151-.074-.144-.732.241-.732.241s-.616-1.371-.788-1.483a.271.271 0 0 0-.157-.046z",
775
+ fill: "currentColor"
776
+ }
777
+ ) }),
778
+ pnpm: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
779
+ "path",
780
+ {
781
+ d: "M0 0v7.5h7.5V0zm8.25 0v7.5h7.498V0zm8.25 0v7.5H24V0zM8.25 8.25v7.5h7.498v-7.5zm8.25 0v7.5H24v-7.5zM0 16.5V24h7.5v-7.5zm8.25 0V24h7.498v-7.5zm8.25 0V24H24v-7.5z",
782
+ fill: "currentColor"
783
+ }
784
+ ) }),
785
+ react: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
786
+ "path",
787
+ {
788
+ d: "M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z",
789
+ fill: "currentColor"
790
+ }
791
+ ) }),
792
+ tailwind: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
793
+ "path",
794
+ {
795
+ d: "M12.001,4.8c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 C13.666,10.618,15.027,12,18.001,12c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C16.337,6.182,14.976,4.8,12.001,4.8z M6.001,12c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 c1.177,1.194,2.538,2.576,5.512,2.576c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C10.337,13.382,8.976,12,6.001,12z",
796
+ fill: "currentColor"
797
+ }
798
+ ) }),
799
+ google: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { role: "img", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
800
+ "path",
801
+ {
802
+ fill: "currentColor",
803
+ d: "M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"
804
+ }
805
+ ) }),
806
+ apple: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { role: "img", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
807
+ "path",
808
+ {
809
+ d: "M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701",
810
+ fill: "currentColor"
811
+ }
812
+ ) }),
813
+ paypal: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { role: "img", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
814
+ "path",
815
+ {
816
+ d: "M7.076 21.337H2.47a.641.641 0 0 1-.633-.74L4.944.901C5.026.382 5.474 0 5.998 0h7.46c2.57 0 4.578.543 5.69 1.81 1.01 1.15 1.304 2.42 1.012 4.287-.023.143-.047.288-.077.437-.983 5.05-4.349 6.797-8.647 6.797h-2.19c-.524 0-.968.382-1.05.9l-1.12 7.106zm14.146-14.42a3.35 3.35 0 0 0-.607-.541c-.013.076-.026.175-.041.254-.93 4.778-4.005 7.201-9.138 7.201h-2.19a.563.563 0 0 0-.556.479l-1.187 7.527h-.506l-.24 1.516a.56.56 0 0 0 .554.647h3.882c.46 0 .85-.334.922-.788.06-.26.76-4.852.816-5.09a.932.932 0 0 1 .923-.788h.58c3.76 0 6.705-1.528 7.565-5.946.36-1.847.174-3.388-.777-4.471z",
817
+ fill: "currentColor"
818
+ }
819
+ ) }),
820
+ spinner: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
821
+ "svg",
822
+ {
823
+ xmlns: "http://www.w3.org/2000/svg",
824
+ width: "24",
825
+ height: "24",
826
+ viewBox: "0 0 24 24",
827
+ fill: "none",
828
+ stroke: "currentColor",
829
+ strokeWidth: "2",
830
+ strokeLinecap: "round",
831
+ strokeLinejoin: "round",
832
+ ...props,
833
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" })
834
+ }
835
+ ),
836
+ json: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
837
+ "path",
838
+ {
839
+ fill: "currentColor",
840
+ d: "M12.043 23.968c.479-.004.953-.029 1.426-.094a11.805 11.805 0 0 0 3.146-.863 12.404 12.404 0 0 0 3.793-2.542 11.977 11.977 0 0 0 2.44-3.427 11.794 11.794 0 0 0 1.02-3.476c.149-1.16.135-2.346-.045-3.499a11.96 11.96 0 0 0-.793-2.788 11.197 11.197 0 0 0-.854-1.617c-1.168-1.837-2.861-3.314-4.81-4.3a12.835 12.835 0 0 0-2.172-.87h-.005c.119.063.24.132.345.201.12.074.239.146.351.225a8.93 8.93 0 0 1 1.559 1.33c1.063 1.145 1.797 2.548 2.218 4.041.284.982.434 1.998.495 3.017.044.743.044 1.491-.047 2.229-.149 1.27-.554 2.51-1.228 3.596a7.475 7.475 0 0 1-1.903 2.084c-1.244.928-2.877 1.482-4.436 1.114a3.916 3.916 0 0 1-.748-.258 4.692 4.692 0 0 1-.779-.45 6.08 6.08 0 0 1-1.244-1.105 6.507 6.507 0 0 1-1.049-1.747 7.366 7.366 0 0 1-.494-2.54c-.03-1.273.225-2.553.854-3.67a6.43 6.43 0 0 1 1.663-1.918c.225-.178.464-.333.704-.479l.016-.007a5.121 5.121 0 0 0-1.441-.12 4.963 4.963 0 0 0-1.228.24c-.359.12-.704.27-1.019.45a6.146 6.146 0 0 0-.733.494c-.211.18-.42.36-.615.555-1.123 1.153-1.768 2.682-2.022 4.256-.15.973-.15 1.96-.091 2.95.105 1.395.391 2.787.945 4.062a8.518 8.518 0 0 0 1.348 2.173 8.14 8.14 0 0 0 3.132 2.23 7.934 7.934 0 0 0 2.113.54c.074.015.149.015.209.015zm-2.934-.398a4.102 4.102 0 0 1-.45-.228 8.5 8.5 0 0 1-2.038-1.534c-1.094-1.137-1.827-2.566-2.247-4.08a15.184 15.184 0 0 1-.495-3.172 12.14 12.14 0 0 1 .046-2.082c.135-1.257.495-2.501 1.124-3.58a6.889 6.889 0 0 1 1.783-2.053 6.23 6.23 0 0 1 1.633-.9 5.363 5.363 0 0 1 3.522-.045c.029 0 .029 0 .045.03.015.015.045.015.06.03.045.016.104.045.165.074.239.12.479.271.704.42a6.294 6.294 0 0 1 2.097 2.502c.42.914.615 1.934.631 2.938.014 1.079-.18 2.157-.645 3.146a6.42 6.42 0 0 1-2.638 2.832c.09.03.18.045.271.075.225.044.449.074.688.074 1.468.045 2.892-.66 3.94-1.647.195-.18.375-.375.54-.585.225-.27.435-.54.614-.823.239-.375.435-.75.614-1.154a8.112 8.112 0 0 0 .509-1.664c.196-1.004.211-2.022.149-3.026-.135-2.022-.673-4.045-1.842-5.724a9.054 9.054 0 0 0-.555-.719 9.868 9.868 0 0 0-1.063-1.034 8.477 8.477 0 0 0-1.363-.915 9.927 9.927 0 0 0-1.692-.598l-.3-.06c-.209-.03-.42-.044-.634-.06a8.453 8.453 0 0 0-1.015.016c-.704.045-1.412.16-2.112.337C5.799 1.227 2.863 3.566 1.3 6.67A11.834 11.834 0 0 0 .238 9.801a11.81 11.81 0 0 0-.104 3.775c.12 1.02.374 2.023.778 2.977.227.57.511 1.124.825 1.648 1.094 1.783 2.683 3.236 4.51 4.24.688.39 1.408.69 2.157.944.226.074.45.15.689.21z"
841
+ }
842
+ ) }),
843
+ ts: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
844
+ "path",
845
+ {
846
+ d: "M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0zm17.363 9.75c.612 0 1.154.037 1.627.111a6.38 6.38 0 0 1 1.306.34v2.458a3.95 3.95 0 0 0-.643-.361 5.093 5.093 0 0 0-.717-.26 5.453 5.453 0 0 0-1.426-.2c-.3 0-.573.028-.819.086a2.1 2.1 0 0 0-.623.242c-.17.104-.3.229-.393.374a.888.888 0 0 0-.14.49c0 .196.053.373.156.529.104.156.252.304.443.444s.423.276.696.41c.273.135.582.274.926.416.47.197.892.407 1.266.628.374.222.695.473.963.753.268.279.472.598.614.957.142.359.214.776.214 1.253 0 .657-.125 1.21-.373 1.656a3.033 3.033 0 0 1-1.012 1.085 4.38 4.38 0 0 1-1.487.596c-.566.12-1.163.18-1.79.18a9.916 9.916 0 0 1-1.84-.164 5.544 5.544 0 0 1-1.512-.493v-2.63a5.033 5.033 0 0 0 3.237 1.2c.333 0 .624-.03.872-.09.249-.06.456-.144.623-.25.166-.108.29-.234.373-.38a1.023 1.023 0 0 0-.074-1.089 2.12 2.12 0 0 0-.537-.5 5.597 5.597 0 0 0-.807-.444 27.72 27.72 0 0 0-1.007-.436c-.918-.383-1.602-.852-2.053-1.405-.45-.553-.676-1.222-.676-2.005 0-.614.123-1.141.369-1.582.246-.441.58-.804 1.004-1.089a4.494 4.494 0 0 1 1.47-.629 7.536 7.536 0 0 1 1.77-.201zm-15.113.188h9.563v2.166H9.506v9.646H6.789v-9.646H3.375z",
847
+ fill: "currentColor"
848
+ }
849
+ ) }),
850
+ css: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
851
+ "path",
852
+ {
853
+ d: "M0 0v20.16A3.84 3.84 0 0 0 3.84 24h16.32A3.84 3.84 0 0 0 24 20.16V3.84A3.84 3.84 0 0 0 20.16 0Zm14.256 13.08c1.56 0 2.28 1.08 2.304 2.64h-1.608c.024-.288-.048-.6-.144-.84-.096-.192-.288-.264-.552-.264-.456 0-.696.264-.696.84-.024.576.288.888.768 1.08.72.288 1.608.744 1.92 1.296q.432.648.432 1.656c0 1.608-.912 2.592-2.496 2.592-1.656 0-2.4-1.032-2.424-2.688h1.68c0 .792.264 1.176.792 1.176.264 0 .456-.072.552-.24.192-.312.24-1.176-.048-1.512-.312-.408-.912-.6-1.32-.816q-.828-.396-1.224-.936c-.24-.36-.36-.888-.36-1.536 0-1.44.936-2.472 2.424-2.448m5.4 0c1.584 0 2.304 1.08 2.328 2.64h-1.608c0-.288-.048-.6-.168-.84-.096-.192-.264-.264-.528-.264-.48 0-.72.264-.72.84s.288.888.792 1.08c.696.288 1.608.744 1.92 1.296.264.432.408.984.408 1.656.024 1.608-.888 2.592-2.472 2.592-1.68 0-2.424-1.056-2.448-2.688h1.68c0 .744.264 1.176.792 1.176.264 0 .456-.072.552-.24.216-.312.264-1.176-.048-1.512-.288-.408-.888-.6-1.32-.816-.552-.264-.96-.576-1.2-.936s-.36-.888-.36-1.536c-.024-1.44.912-2.472 2.4-2.448m-11.031.018c.711-.006 1.419.198 1.839.63.432.432.672 1.128.648 1.992H9.336c.024-.456-.096-.792-.432-.96-.312-.144-.768-.048-.888.24-.12.264-.192.576-.168.864v3.504c0 .744.264 1.128.768 1.128a.65.65 0 0 0 .552-.264c.168-.24.192-.552.168-.84h1.776c.096 1.632-.984 2.712-2.568 2.688-1.536 0-2.496-.864-2.472-2.472v-4.032c0-.816.24-1.44.696-1.848.432-.408 1.146-.624 1.857-.63",
854
+ fill: "currentColor"
855
+ }
856
+ ) }),
857
+ bash: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
858
+ "path",
859
+ {
860
+ d: "M21.038 4.9 13.461.402a2.86 2.86 0 0 0-2.923.001L2.961 4.9A3.023 3.023 0 0 0 1.5 7.503v8.995c0 1.073.557 2.066 1.462 2.603l7.577 4.497a2.86 2.86 0 0 0 2.922 0l7.577-4.497a3.023 3.023 0 0 0 1.462-2.603V7.503A3.021 3.021 0 0 0 21.038 4.9zM15.17 18.946l.013.646c.001.078-.05.167-.111.198l-.383.22c-.061.031-.111-.007-.112-.085l-.007-.635c-.328.136-.66.169-.872.084-.04-.016-.057-.075-.041-.142l.139-.584a.24.24 0 0 1 .069-.121.163.163 0 0 1 .036-.026c.022-.011.043-.014.062-.006.229.077.521.041.802-.101.357-.181.596-.545.592-.907-.003-.328-.181-.465-.613-.468-.55.001-1.064-.107-1.072-.917-.007-.667.34-1.361.889-1.8l-.007-.652c-.001-.08.048-.168.111-.2l.37-.236c.061-.031.111.007.112.087l.006.653c.273-.109.511-.138.726-.088.047.012.067.076.048.151l-.144.578a.255.255 0 0 1-.065.116.161.161 0 0 1-.038.028.083.083 0 0 1-.057.009c-.098-.022-.332-.073-.699.113-.385.195-.52.53-.517.778.003.297.155.387.681.396.7.012 1.003.318 1.01 1.023.007.689-.362 1.433-.928 1.888zm3.973-1.087c0 .06-.008.116-.058.145l-1.916 1.164c-.05.029-.09.004-.09-.056v-.494c0-.06.037-.093.087-.122l1.887-1.129c.05-.029.09-.004.09.056v.436zm1.316-11.062-7.168 4.427c-.894.523-1.553 1.109-1.553 2.187v8.833c0 .645.26 1.063.66 1.184a2.304 2.304 0 0 1-.398.039c-.42 0-.833-.114-1.197-.33L3.226 18.64a2.494 2.494 0 0 1-1.201-2.142V7.503c0-.881.46-1.702 1.201-2.142L10.803.863a2.342 2.342 0 0 1 2.394 0l7.577 4.498a2.479 2.479 0 0 1 1.164 1.732c-.252-.536-.818-.682-1.479-.296z",
861
+ fill: "currentColor"
862
+ }
863
+ ) }),
864
+ v0: (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
865
+ "svg",
866
+ {
867
+ viewBox: "0 0 40 20",
868
+ fill: "none",
869
+ xmlns: "http://www.w3.org/2000/svg",
870
+ ...props,
871
+ children: [
872
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
873
+ "path",
874
+ {
875
+ d: "M23.3919 0H32.9188C36.7819 0 39.9136 3.13165 39.9136 6.99475V16.0805H36.0006V6.99475C36.0006 6.90167 35.9969 6.80925 35.9898 6.71766L26.4628 16.079C26.4949 16.08 26.5272 16.0805 26.5595 16.0805H36.0006V19.7762H26.5595C22.6964 19.7762 19.4788 16.6139 19.4788 12.7508V3.68923H23.3919V12.7508C23.3919 12.9253 23.4054 13.0977 23.4316 13.2668L33.1682 3.6995C33.0861 3.6927 33.003 3.68923 32.9188 3.68923H23.3919V0Z",
876
+ fill: "currentColor"
877
+ }
878
+ ),
879
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
880
+ "path",
881
+ {
882
+ d: "M13.7688 19.0956L0 3.68759H5.53933L13.6231 12.7337V3.68759H17.7535V17.5746C17.7535 19.6705 15.1654 20.6584 13.7688 19.0956Z",
883
+ fill: "currentColor"
884
+ }
885
+ )
886
+ ]
887
+ }
888
+ )
889
+ };
890
+ function getIconForLanguageExtension(language) {
891
+ switch (language) {
892
+ case "json":
893
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icons.json, {});
894
+ case "bash":
895
+ case "sh":
896
+ case "shell":
897
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icons.bash, {});
898
+ case "css":
899
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icons.css, { className: "fill-foreground" });
900
+ case "js":
901
+ case "javascript":
902
+ case "jsx":
903
+ case "ts":
904
+ case "tsx":
905
+ case "typescript":
906
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icons.ts, { className: "fill-foreground" });
907
+ default:
908
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react.FileIcon, {});
909
+ }
910
+ }
911
+ // Annotate the CommonJS export names for ESM import in node:
912
+ 0 && (module.exports = {
913
+ CodeBlock,
914
+ Icons,
915
+ MDXRenderer,
916
+ Markdown,
917
+ TableOfContents,
918
+ defineMDXConfig,
919
+ extractTOC,
920
+ getIconForLanguageExtension,
921
+ useActiveTocItem
922
+ });