Files
Frontend/src/app/components/mdx-components.tsx

45 lines
1.2 KiB
TypeScript
Raw Normal View History

2024-04-20 00:34:42 +01:00
import { MDXRemote } from "remote-mdx/rsc";
2024-04-20 02:35:52 +01:00
import { ReactElement } from "react";
2024-04-21 05:47:52 +01:00
import {
formatCode,
formatHeading,
formatLink,
formatList,
formatTable,
formatTableData,
formatTableHeader,
} from "@/app/components/mdx-renderer";
import remarkGfm from "remark-gfm";
/**
* The components to use in the MDX renderer.
*/
2024-04-20 00:34:42 +01:00
const components = {
2024-04-20 02:54:04 +01:00
h1: (props: any) => formatHeading(1, props),
h2: (props: any) => formatHeading(2, props),
h3: (props: any) => formatHeading(3, props),
h4: (props: any) => formatHeading(4, props),
h5: (props: any) => formatHeading(5, props),
h6: (props: any) => formatHeading(6, props),
code: (props: any) => formatCode(props),
ul: (props: any) => formatList(props),
a: (props: any) => formatLink(props),
2024-04-21 05:47:52 +01:00
table: (props: any) => formatTable(props),
th: (props: any) => formatTableHeader(props),
td: (props: any) => formatTableData(props),
2024-04-20 00:34:42 +01:00
};
2024-04-20 02:35:52 +01:00
export function CustomMDX(props: any): ReactElement {
2024-04-21 05:47:52 +01:00
return (
<MDXRemote
{...props}
components={{ ...components, ...(props.components || {}) }}
options={{
mdxOptions: {
remarkPlugins: [remarkGfm],
},
}}
/>
);
2024-04-20 00:34:42 +01:00
}