import React from "react"; import ReactMarkdown from "react-markdown"; import rehypeRaw from "rehype-raw"; import remarkGfm from "remark-gfm"; import rehypeKatex from "rehype-katex"; import rehypeHighlight from "rehype-highlight"; import remarkMath from "remark-math"; import "katex/dist/katex.min.css"; import { codeLanguageSubset } from "@/utils/stream"; import { components } from "./component"; interface MarkdownRendererProps { content: string; } const MarkdownRenderer: React.FC<MarkdownRendererProps> = ({ content }) => { return ( <ReactMarkdown remarkPlugins={[remarkGfm, [remarkMath, { singleDollarTextMath: true }]]} rehypePlugins={[ rehypeKatex, rehypeRaw, [ rehypeHighlight, { detect: true, ignoreMissing: true, subset: codeLanguageSubset, }, ], ]} components={components} className="prose dark:prose-invert prose-purple max-w-none" > {content} </ReactMarkdown> ); }; export default MarkdownRenderer;