@mdwrk/markdown-renderer-react 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # mdwrk/markdown-renderer-react
2
+
3
+ React bindings for the Markdown Workspace portable markdown renderer.
4
+
5
+ ## Exports
6
+
7
+ - `MarkdownRenderer`
8
+ - `createMarkdownRendererThemeStyle`
9
+ - `createMarkdownRendererThemeVariablesFromThemeTokens`
10
+ - `createMarkdownRendererThemeStyleFromThemeTokens`
11
+ - `renderMarkdownToStaticHtml`
12
+ - `renderMarkdownToStaticHtmlDocument`
13
+ - `./styles/default.css`
14
+
15
+ The package keeps semantic class names stable and lets host applications override theme values without depending on app-local stylesheets.
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import type { MarkdownRendererProps } from "./types.js";
3
+ export declare function MarkdownRenderer({ markdown, className, style, themeStyle, onLinkClick, getLinkAttributes, components, syntaxTheme, }: MarkdownRendererProps): React.JSX.Element;
4
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAWxD,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EACT,KAAK,EACL,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,WAAW,GACZ,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiH3C"}
@@ -0,0 +1,69 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import ReactMarkdown from "react-markdown";
3
+ import remarkGfm from "remark-gfm";
4
+ import remarkSupersub from "remark-supersub";
5
+ import { Prism as SyntaxHighlighter } from "react-syntax-highlighter";
6
+ import { DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES } from "@mdwrk/markdown-renderer-core/class-names";
7
+ import { slugifyHeading } from "@mdwrk/markdown-renderer-core/slug";
8
+ import { createMarkdownRendererThemeStyle } from "./theme.js";
9
+ const mergeClassNames = (...values) => values.filter(Boolean).join(" ");
10
+ function getDefaultLinkAttributes(href) {
11
+ if (href && /^(https?:)?\/\//i.test(href)) {
12
+ return { target: "_blank", rel: "noopener noreferrer" };
13
+ }
14
+ return undefined;
15
+ }
16
+ export function MarkdownRenderer({ markdown, className, style, themeStyle, onLinkClick, getLinkAttributes, components, syntaxTheme, }) {
17
+ const rendererStyle = themeStyle ?? createMarkdownRendererThemeStyle();
18
+ return (_jsx("div", { className: mergeClassNames(DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.root, className), style: { ...rendererStyle, ...style }, children: _jsx(ReactMarkdown, { remarkPlugins: [remarkGfm, remarkSupersub], components: {
19
+ h1: ({ node, children, ...props }) => _jsx("h1", { id: slugifyHeading(String(children)), className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.heading1, ...props, children: children }),
20
+ h2: ({ node, children, ...props }) => _jsx("h2", { id: slugifyHeading(String(children)), className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.heading2, ...props, children: children }),
21
+ h3: ({ node, children, ...props }) => _jsx("h3", { id: slugifyHeading(String(children)), className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.heading3, ...props, children: children }),
22
+ h4: ({ node, children, ...props }) => _jsx("h4", { id: slugifyHeading(String(children)), className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.heading4, ...props, children: children }),
23
+ h5: ({ node, children, ...props }) => _jsx("h5", { id: slugifyHeading(String(children)), className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.heading5, ...props, children: children }),
24
+ h6: ({ node, children, ...props }) => _jsx("h6", { id: slugifyHeading(String(children)), className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.heading6, ...props, children: children }),
25
+ p: ({ node, ...props }) => _jsx("p", { className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.paragraph, ...props }),
26
+ strong: ({ node, ...props }) => _jsx("strong", { className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.strong, ...props }),
27
+ em: ({ node, ...props }) => _jsx("em", { className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.emphasis, ...props }),
28
+ hr: ({ node, ...props }) => _jsx("hr", { className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.hr, ...props }),
29
+ blockquote: ({ node, ...props }) => _jsx("blockquote", { className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.blockquote, ...props }),
30
+ ul: ({ node, ...props }) => _jsx("ul", { className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.listUnordered, ...props }),
31
+ ol: ({ node, ...props }) => _jsx("ol", { className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.listOrdered, ...props }),
32
+ li: ({ node, ...props }) => {
33
+ const isTask = typeof node?.checked === "boolean";
34
+ return (_jsx("li", { className: mergeClassNames(DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.listItem, isTask ? DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.taskListItem : undefined), "data-checked": isTask ? String(node.checked) : undefined, ...props }));
35
+ },
36
+ table: ({ node, className, ...props }) => (_jsx("table", { className: mergeClassNames(DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.table, className), ...props })),
37
+ thead: ({ node, className, ...props }) => (_jsx("thead", { className: mergeClassNames(DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.tableHead, className), ...props })),
38
+ tbody: ({ node, className, ...props }) => (_jsx("tbody", { className: mergeClassNames(DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.tableBody, className), ...props })),
39
+ tr: ({ node, className, ...props }) => (_jsx("tr", { className: mergeClassNames(DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.tableRow, className), ...props })),
40
+ th: ({ node, className, ...props }) => (_jsx("th", { className: mergeClassNames(DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.tableHeader, className), ...props })),
41
+ td: ({ node, className, ...props }) => (_jsx("td", { className: mergeClassNames(DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.tableCell, className), ...props })),
42
+ caption: ({ node, className, ...props }) => (_jsx("caption", { className: mergeClassNames(DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.tableCaption, className), ...props })),
43
+ input: ({ node, ...props }) => {
44
+ if (props.type === "checkbox") {
45
+ return _jsx("input", { type: "checkbox", className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.checkbox, ...props });
46
+ }
47
+ return _jsx("input", { ...props });
48
+ },
49
+ a: ({ node, href, ...props }) => {
50
+ const attributes = getLinkAttributes?.(href) ?? getDefaultLinkAttributes(href);
51
+ return (_jsx("a", { href: href, onClick: (event) => onLinkClick?.(event, href), target: attributes?.target, rel: attributes?.rel, className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.link, ...props }));
52
+ },
53
+ code: ({ node, inline, className, children, ...props }) => {
54
+ const match = /language-([\w-]+)/.exec(className || "");
55
+ if (!inline && match) {
56
+ return (_jsxs("div", { className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.codeBlock, children: [_jsx("div", { className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.codeHeader, children: match[1] }), _jsx("div", { className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.codeSurface, children: _jsx(SyntaxHighlighter, { style: syntaxTheme ?? {}, language: match[1], PreTag: "div", customStyle: {
57
+ margin: 0,
58
+ borderRadius: 0,
59
+ border: "none",
60
+ background: "transparent",
61
+ padding: 0,
62
+ }, ...props, children: String(children).replace(/\n$/, "") }) })] }));
63
+ }
64
+ return (_jsx("code", { className: DEFAULT_MARKDOWN_RENDERER_CLASS_NAMES.inlineCode, ...props, children: children }));
65
+ },
66
+ ...components,
67
+ }, children: markdown }) }));
68
+ }
69
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.tsx"],"names":[],"mappings":";AACA,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,qCAAqC,EAAE,MAAM,2CAA2C,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAG9D,MAAM,eAAe,GAAG,CAAC,GAAG,MAAiC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEnG,SAAS,wBAAwB,CAAC,IAAa;IAC7C,IAAI,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,qBAAqB,EAAW,CAAC;IACnE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EACT,KAAK,EACL,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,WAAW,GACW;IACtB,MAAM,aAAa,GAAG,UAAU,IAAI,gCAAgC,EAAE,CAAC;IAEvE,OAAO,CACL,cAAK,SAAS,EAAE,eAAe,CAAC,qCAAqC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,EAAE,YAC3H,KAAC,aAAa,IACZ,aAAa,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,EAC1C,UAAU,EAAE;gBACV,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,aAAI,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,qCAAqC,CAAC,QAAQ,KAAM,KAAK,YAAG,QAAQ,GAAM;gBACrK,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,aAAI,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,qCAAqC,CAAC,QAAQ,KAAM,KAAK,YAAG,QAAQ,GAAM;gBACrK,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,aAAI,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,qCAAqC,CAAC,QAAQ,KAAM,KAAK,YAAG,QAAQ,GAAM;gBACrK,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,aAAI,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,qCAAqC,CAAC,QAAQ,KAAM,KAAK,YAAG,QAAQ,GAAM;gBACrK,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,aAAI,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,qCAAqC,CAAC,QAAQ,KAAM,KAAK,YAAG,QAAQ,GAAM;gBACrK,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,aAAI,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,qCAAqC,CAAC,QAAQ,KAAM,KAAK,YAAG,QAAQ,GAAM;gBACrK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,YAAG,SAAS,EAAE,qCAAqC,CAAC,SAAS,KAAM,KAAK,GAAI;gBACvG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,iBAAQ,SAAS,EAAE,qCAAqC,CAAC,MAAM,KAAM,KAAK,GAAI;gBAC9G,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,aAAI,SAAS,EAAE,qCAAqC,CAAC,QAAQ,KAAM,KAAK,GAAI;gBACxG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,aAAI,SAAS,EAAE,qCAAqC,CAAC,EAAE,KAAM,KAAK,GAAI;gBAClG,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,qBAAY,SAAS,EAAE,qCAAqC,CAAC,UAAU,KAAM,KAAK,GAAI;gBAC1H,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,aAAI,SAAS,EAAE,qCAAqC,CAAC,aAAa,KAAM,KAAK,GAAI;gBAC7G,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,aAAI,SAAS,EAAE,qCAAqC,CAAC,WAAW,KAAM,KAAK,GAAI;gBAC3G,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE;oBAC9B,MAAM,MAAM,GAAG,OAAO,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC;oBAClD,OAAO,CACL,aACE,SAAS,EAAE,eAAe,CACxB,qCAAqC,CAAC,QAAQ,EAC9C,MAAM,CAAC,CAAC,CAAC,qCAAqC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CACxE,kBACa,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KACnD,KAAK,GACT,CACH,CAAC;gBACJ,CAAC;gBACD,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CAC7C,gBAAO,SAAS,EAAE,eAAe,CAAC,qCAAqC,CAAC,KAAK,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CACzG;gBACD,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CAC7C,gBAAO,SAAS,EAAE,eAAe,CAAC,qCAAqC,CAAC,SAAS,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAC7G;gBACD,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CAC7C,gBAAO,SAAS,EAAE,eAAe,CAAC,qCAAqC,CAAC,SAAS,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAC7G;gBACD,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CAC1C,aAAI,SAAS,EAAE,eAAe,CAAC,qCAAqC,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CACzG;gBACD,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CAC1C,aAAI,SAAS,EAAE,eAAe,CAAC,qCAAqC,CAAC,WAAW,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAC5G;gBACD,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CAC1C,aAAI,SAAS,EAAE,eAAe,CAAC,qCAAqC,CAAC,SAAS,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAC1G;gBACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CAC/C,kBAAS,SAAS,EAAE,eAAe,CAAC,qCAAqC,CAAC,YAAY,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAClH;gBACD,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE;oBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBAC9B,OAAO,gBAAO,IAAI,EAAC,UAAU,EAAC,SAAS,EAAE,qCAAqC,CAAC,QAAQ,KAAM,KAAK,GAAI,CAAC;oBACzG,CAAC;oBACD,OAAO,mBAAW,KAAK,GAAI,CAAC;gBAC9B,CAAC;gBACD,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;oBAC9B,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;oBAC/E,OAAO,CACL,YACE,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAC9C,MAAM,EAAE,UAAU,EAAE,MAAM,EAC1B,GAAG,EAAE,UAAU,EAAE,GAAG,EACpB,SAAS,EAAE,qCAAqC,CAAC,IAAI,KACjD,KAAK,GACT,CACH,CAAC;gBACJ,CAAC;gBACD,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE;oBAC7D,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;oBACxD,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;wBACrB,OAAO,CACL,eAAK,SAAS,EAAE,qCAAqC,CAAC,SAAS,aAC7D,cAAK,SAAS,EAAE,qCAAqC,CAAC,UAAU,YAAG,KAAK,CAAC,CAAC,CAAC,GAAO,EAClF,cAAK,SAAS,EAAE,qCAAqC,CAAC,WAAW,YAC/D,KAAC,iBAAiB,IAChB,KAAK,EAAE,WAAW,IAAI,EAAE,EACxB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAClB,MAAM,EAAC,KAAK,EACZ,WAAW,EAAE;4CACX,MAAM,EAAE,CAAC;4CACT,YAAY,EAAE,CAAC;4CACf,MAAM,EAAE,MAAM;4CACd,UAAU,EAAE,aAAa;4CACzB,OAAO,EAAE,CAAC;yCACX,KACG,KAAK,YAER,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAClB,GAChB,IACF,CACP,CAAC;oBACJ,CAAC;oBACD,OAAO,CACL,eAAM,SAAS,EAAE,qCAAqC,CAAC,UAAU,KAAM,KAAK,YACzE,QAAQ,GACJ,CACR,CAAC;gBACJ,CAAC;gBACD,GAAG,UAAU;aACd,YAEA,QAAQ,GACK,GACZ,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from "./version.js";
2
+ export * from "./types.js";
3
+ export * from "./theme.js";
4
+ export * from "./component.js";
5
+ export * from "./server.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./version.js";
2
+ export * from "./types.js";
3
+ export * from "./theme.js";
4
+ export * from "./component.js";
5
+ export * from "./server.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { MarkdownRendererProps } from "./types.js";
2
+ export declare function renderMarkdownToStaticHtml(props: MarkdownRendererProps): string;
3
+ export declare function renderMarkdownToStaticHtmlDocument(props: MarkdownRendererProps & {
4
+ readonly title: string;
5
+ readonly lang?: string;
6
+ readonly dataTheme?: string;
7
+ readonly bodyClassName?: string;
8
+ readonly htmlClassName?: string;
9
+ readonly stylesheets?: readonly string[];
10
+ }): string;
11
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAE/E;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,qBAAqB,GAAG;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C,GACA,MAAM,CAWR"}
package/dist/server.js ADDED
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { renderToStaticMarkup } from "react-dom/server";
3
+ import { createHtmlDocument } from "@mdwrk/markdown-renderer-core/html";
4
+ import { MarkdownRenderer } from "./component.js";
5
+ export function renderMarkdownToStaticHtml(props) {
6
+ return renderToStaticMarkup(_jsx(MarkdownRenderer, { ...props }));
7
+ }
8
+ export function renderMarkdownToStaticHtmlDocument(props) {
9
+ const { title, lang, dataTheme, bodyClassName, htmlClassName, stylesheets, ...rendererProps } = props;
10
+ return createHtmlDocument({
11
+ title,
12
+ bodyHtml: renderMarkdownToStaticHtml(rendererProps),
13
+ lang,
14
+ dataTheme,
15
+ bodyClassName,
16
+ htmlClassName,
17
+ stylesheets,
18
+ });
19
+ }
20
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,MAAM,UAAU,0BAA0B,CAAC,KAA4B;IACrE,OAAO,oBAAoB,CAAC,KAAC,gBAAgB,OAAK,KAAK,GAAI,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,KAOC;IAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC;IACtG,OAAO,kBAAkB,CAAC;QACxB,KAAK;QACL,QAAQ,EAAE,0BAA0B,CAAC,aAAa,CAAC;QACnD,IAAI;QACJ,SAAS;QACT,aAAa;QACb,aAAa;QACb,WAAW;KACZ,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type React from "react";
2
+ import { type ThemeTokenOverrides } from "@mdwrk/ui-tokens/theme-map";
3
+ import type { MarkdownRendererThemeVariables } from "./types.js";
4
+ export declare function createMarkdownRendererThemeStyle(variables?: MarkdownRendererThemeVariables): React.CSSProperties;
5
+ export declare function createMarkdownRendererThemeVariablesFromThemeTokens(overrides?: ThemeTokenOverrides): Readonly<Record<`--${string}`, string>>;
6
+ export declare function createMarkdownRendererThemeStyleFromThemeTokens(overrides?: ThemeTokenOverrides): React.CSSProperties;
7
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAEjE,wBAAgB,gCAAgC,CAC9C,SAAS,GAAE,8BAAmC,GAC7C,KAAK,CAAC,aAAa,CAarB;AAED,wBAAgB,mDAAmD,CACjE,SAAS,GAAE,mBAAwB,GAClC,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAEzC;AAED,wBAAgB,+CAA+C,CAC7D,SAAS,GAAE,mBAAwB,GAClC,KAAK,CAAC,aAAa,CAErB"}
package/dist/theme.js ADDED
@@ -0,0 +1,22 @@
1
+ import { createRendererThemeBridgeVariableRecord, } from "@mdwrk/ui-tokens/theme-map";
2
+ export function createMarkdownRendererThemeStyle(variables = {}) {
3
+ return {
4
+ ["--mw-fg-primary"]: variables.foreground ?? "var(--fg-primary, #e9ecf1)",
5
+ ["--mw-fg-secondary"]: variables.foregroundMuted ?? "var(--fg-secondary, #9aa3af)",
6
+ ["--mw-bg-surface"]: variables.background ?? "var(--bg-panel, #11151a)",
7
+ ["--mw-border-color"]: variables.border ?? "var(--border-color, rgba(255,255,255,0.12))",
8
+ ["--mw-accent"]: variables.accent ?? "var(--accent, #7c9cff)",
9
+ ["--mw-code-bg"]: variables.codeBackground ?? "var(--bg-inset, rgba(255,255,255,0.04))",
10
+ ["--mw-code-fg"]: variables.codeForeground ?? "var(--fg-primary, #e9ecf1)",
11
+ ["--mw-code-border"]: variables.codeBorder ?? "var(--border-color, rgba(255,255,255,0.12))",
12
+ ["--mw-font-ui"]: variables.fontUi ?? 'var(--font-ui, "Inter", "Segoe UI", system-ui, sans-serif)',
13
+ ["--mw-font-mono"]: variables.fontMono ?? 'var(--font-mono, "Fira Code", ui-monospace, monospace)',
14
+ };
15
+ }
16
+ export function createMarkdownRendererThemeVariablesFromThemeTokens(overrides = {}) {
17
+ return createRendererThemeBridgeVariableRecord(overrides);
18
+ }
19
+ export function createMarkdownRendererThemeStyleFromThemeTokens(overrides = {}) {
20
+ return createMarkdownRendererThemeVariablesFromThemeTokens(overrides);
21
+ }
22
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uCAAuC,GAExC,MAAM,4BAA4B,CAAC;AAGpC,MAAM,UAAU,gCAAgC,CAC9C,YAA4C,EAAE;IAE9C,OAAO;QACL,CAAC,iBAAwB,CAAC,EAAE,SAAS,CAAC,UAAU,IAAI,4BAA4B;QAChF,CAAC,mBAA0B,CAAC,EAAE,SAAS,CAAC,eAAe,IAAI,8BAA8B;QACzF,CAAC,iBAAwB,CAAC,EAAE,SAAS,CAAC,UAAU,IAAI,0BAA0B;QAC9E,CAAC,mBAA0B,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,6CAA6C;QAC/F,CAAC,aAAoB,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,wBAAwB;QACpE,CAAC,cAAqB,CAAC,EAAE,SAAS,CAAC,cAAc,IAAI,yCAAyC;QAC9F,CAAC,cAAqB,CAAC,EAAE,SAAS,CAAC,cAAc,IAAI,4BAA4B;QACjF,CAAC,kBAAyB,CAAC,EAAE,SAAS,CAAC,UAAU,IAAI,6CAA6C;QAClG,CAAC,cAAqB,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,4DAA4D;QACzG,CAAC,gBAAuB,CAAC,EAAE,SAAS,CAAC,QAAQ,IAAI,wDAAwD;KAC1G,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mDAAmD,CACjE,YAAiC,EAAE;IAEnC,OAAO,uCAAuC,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,+CAA+C,CAC7D,YAAiC,EAAE;IAEnC,OAAO,mDAAmD,CAAC,SAAS,CAAwB,CAAC;AAC/F,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type React from "react";
2
+ export interface MarkdownRendererThemeVariables {
3
+ readonly foreground?: string;
4
+ readonly foregroundMuted?: string;
5
+ readonly background?: string;
6
+ readonly border?: string;
7
+ readonly accent?: string;
8
+ readonly codeBackground?: string;
9
+ readonly codeForeground?: string;
10
+ readonly codeBorder?: string;
11
+ readonly fontUi?: string;
12
+ readonly fontMono?: string;
13
+ }
14
+ export interface MarkdownLinkAttributeResult {
15
+ readonly target?: string;
16
+ readonly rel?: string;
17
+ }
18
+ export interface MarkdownRendererProps {
19
+ readonly markdown: string;
20
+ readonly className?: string;
21
+ readonly style?: React.CSSProperties;
22
+ readonly themeStyle?: React.CSSProperties;
23
+ readonly onLinkClick?: (event: React.MouseEvent<HTMLAnchorElement>, href?: string) => void;
24
+ readonly getLinkAttributes?: (href?: string) => MarkdownLinkAttributeResult | undefined;
25
+ readonly components?: Record<string, React.ComponentType<any>>;
26
+ readonly syntaxTheme?: Record<string, React.CSSProperties>;
27
+ }
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,2BAA2B,GAAG,SAAS,CAAC;IACxF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;CAC5D"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const MARKDOWN_RENDERER_REACT_VERSION = "1.0.1";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const MARKDOWN_RENDERER_REACT_VERSION = "1.0.1";
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,+BAA+B,GAAG,OAAO,CAAC"}
package/package.json ADDED
@@ -0,0 +1,82 @@
1
+ {
2
+ "name": "@mdwrk/markdown-renderer-react",
3
+ "version": "1.0.1",
4
+ "type": "module",
5
+ "license": "Apache-2.0",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "engines": {
10
+ "node": ">=20 <23"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "src/styles",
15
+ "README.md"
16
+ ],
17
+ "sideEffects": [
18
+ "./src/styles/default.css"
19
+ ],
20
+ "keywords": [
21
+ "markdown-workspace",
22
+ "renderer",
23
+ "markdown",
24
+ "react"
25
+ ],
26
+ "description": "React renderer bindings and theme bridge for the Markdown Workspace portable markdown renderer.",
27
+ "dependencies": {
28
+ "@mdwrk/markdown-renderer-core": "^1.0.0",
29
+ "@mdwrk/ui-tokens": "^1.0.1",
30
+ "react-markdown": "^9.0.3",
31
+ "react-syntax-highlighter": "^15.6.1",
32
+ "remark-gfm": "^4.0.1",
33
+ "remark-supersub": "^1.0.0"
34
+ },
35
+ "peerDependencies": {
36
+ "react": "^19.0.0",
37
+ "react-dom": "^19.0.0"
38
+ },
39
+ "devDependencies": {
40
+ "@types/react": "^19.0.8",
41
+ "@types/react-dom": "^19.0.3",
42
+ "@types/react-syntax-highlighter": "^15.5.13",
43
+ "@testing-library/jest-dom": "^6.6.3",
44
+ "@testing-library/react": "^16.1.0",
45
+ "jsdom": "^25.0.1",
46
+ "vitest": "^2.1.8"
47
+ },
48
+ "scripts": {
49
+ "build": "tsc -p tsconfig.json",
50
+ "typecheck": "tsc --noEmit -p tsconfig.json",
51
+ "lint": "npm run typecheck",
52
+ "test": "npm run build && node ./tests/run-smoke.mjs",
53
+ "prepack": "npm run build"
54
+ },
55
+ "exports": {
56
+ ".": {
57
+ "types": "./dist/index.d.ts",
58
+ "import": "./dist/index.js"
59
+ },
60
+ "./version": {
61
+ "types": "./dist/version.d.ts",
62
+ "import": "./dist/version.js"
63
+ },
64
+ "./types": {
65
+ "types": "./dist/types.d.ts",
66
+ "import": "./dist/types.js"
67
+ },
68
+ "./theme": {
69
+ "types": "./dist/theme.d.ts",
70
+ "import": "./dist/theme.js"
71
+ },
72
+ "./server": {
73
+ "types": "./dist/server.d.ts",
74
+ "import": "./dist/server.js"
75
+ },
76
+ "./styles/default.css": "./src/styles/default.css"
77
+ },
78
+ "main": "./dist/index.js",
79
+ "types": "./dist/index.d.ts",
80
+ "author": "Jacob Stewart <jacob@swarmauri.com>",
81
+ "homepage": "https://mdwrk.com"
82
+ }
@@ -0,0 +1,18 @@
1
+ @import url("@mdwrk/ui-tokens/styles/markdown.css");
2
+
3
+ .markdown-body {
4
+ color: var(--mw-fg-primary, var(--fg-primary, inherit));
5
+ font-family: var(--mw-font-ui, var(--font-ui, inherit));
6
+ }
7
+
8
+ .markdown-body .md-inline-code {
9
+ color: var(--mw-code-fg, var(--fg-primary, inherit));
10
+ background: var(--mw-code-bg, rgba(255, 255, 255, 0.04));
11
+ border-color: var(--mw-code-border, rgba(255, 255, 255, 0.12));
12
+ }
13
+
14
+ .markdown-body .md-code-block,
15
+ .markdown-body .md-code-surface {
16
+ background: var(--mw-code-bg, rgba(255, 255, 255, 0.04));
17
+ border-color: var(--mw-code-border, rgba(255, 255, 255, 0.12));
18
+ }