MDX Table of Contents
For use with Next.js.
import { MDXProvider } from '@mdx-js/react';import { MDXComponents } from 'components/MDX/MDXComponents';import { Toc } from 'components/Toc/Toc';import * as React from 'react';export interface MarkdownProps<Frontmatter> {meta: Frontmatter;children?: React.ReactNode;}export default function MarkdownPage<T extends { title: string } = { title: string }>({ children, meta }: MarkdownProps<T>) {const anchors = React.Children.toArray(children).filter((child: any) =>child.props?.mdxType && ['h2', 'h3'].includes(child.props.mdxType)).map((child: any) => ({url: '#' + child.props.id,depth:(child.props?.mdxType &&parseInt(child.props.mdxType.replace('h', ''), 0)) ??0,text: child.props.children}));return (<><MDXProvider components={MDXComponents}>{children}</MDXProvider><Toc anchors={anchors} /></>);}
Source: Jared Palmer