InvestWeb/components/wiki/RenderMarkdown.tsx
2023-02-06 17:05:19 -08:00

30 lines
804 B
TypeScript

import Link from "next/link";
import ReactMarkdown from "react-markdown";
import rehypeHighlight from "rehype-highlight";
import rehypeRaw from "rehype-raw";
import rehypeSlug from "rehype-slug";
import remarkGfm from "remark-gfm";
interface RenderMarkdownProps {
children: string;
}
export default function RenderMarkdown({ children }: RenderMarkdownProps) {
return (
<ReactMarkdown
remarkPlugins={[remarkGfm]}
rehypePlugins={[rehypeRaw, rehypeHighlight, rehypeSlug]}
components={{
a: ({ node, ...props }) => {
return (
<Link legacyBehavior href={props.href as string}>
<a>{props.children ? props.children[0] : props.href}</a>
</Link>
);
},
}}
>
{children}
</ReactMarkdown>
);
}