@mintlify/mdx
TypeScript icon, indicating that this package has built-in type declarations

0.0.46 • Public • Published
Mintlify Logo

Mint

Open source docs builder that's beautiful, fast, and easy to work with.

contributions welcome Tweet

Mintlify

Mintlify's markdown parser

@mintlify/mdx is a thin layer on top of next-mdx-remote that provides a better developer experience for Next.js users by adding support for syntax highlighting.

Installation

# using npm
npm i @mintlify/mdx

# using yarn
yarn add @mintlify/mdx

# using pnpm
pnpm add @mintlify/mdx

Examples

Next.js pages router

You can check the example app here.

  1. Call the getCompiledMdx function inside getStaticProps and return the mdxSource object.

    export const getStaticProps = (async () => {
      const mdxSource = await getCompiledMdx({
        source: "## Markdown H2",
      });
    
      return {
        props: {
          mdxSource,
        },
      };
    }) satisfies GetStaticProps<{
      mdxSource: MDXCompiledResult;
    }>;
  2. Pass the mdxSource object as props inside the MDXComponent.

    export default function Page({
      mdxSource,
    }: InferGetStaticPropsType<typeof getStaticProps>) {
      return <MDXComponent {...mdxSource} />;
    }
  3. Import @mintlify/mdx/dist/styles.css inside your _app.tsx file. This file contains the styles for the code syntax highlighting.

    import "@mintlify/mdx/dist/styles.css";
    
    import { AppProps } from "next/app";
    
    export default function App({ Component, pageProps }: AppProps) {
      return <Component {...pageProps} />;
    }

Next.js app router

You can check the example app here.

  1. Call the getCompiledServerMdx function inside your async React Server Component which will give you the frontmatter and content.

    import { getCompiledServerMdx } from "@mintlify/mdx";
    
    export default async function Home() {
      const { content, frontmatter } = await getCompiledServerMdx({
        source: `---
          title: Title
          ---
    
          ## Markdown H2
        `,
      });
    
      return (
        <article className="prose mx-auto py-8">
          <h1>{String(frontmatter.title)}</h1>
    
          {content}
        </article>
      );
    }
  2. Import @mintlify/mdx/dist/styles.css inside your layout.tsx file. This file contains the styles for the code syntax highlighting.

    import type { Metadata } from "next";
    import "@mintlify/mdx/dist/styles.css";
    
    export const metadata: Metadata = {
      title: "Create Next App",
      description: "Generated by create next app",
    };
    
    export default function RootLayout({
      children,
    }: {
      children: React.ReactNode;
    }) {
      return (
        <html lang="en">
          <body>{children}</body>
        </html>
      );
    }

APIs

Similar to next-mdx-remote, this package exports the following APIs:

  • getCompiledMdx - a function that compiles MDX source to MDXCompiledResult.
  • MDXComponent - a component that renders MDXCompiledResult.
  • getCompiledServerMdx - a function that compiles MDX source to return content and frontmatter and should be used inside async React Server Component.
  • MDXServerComponent - a component that renders content and frontmatter and should be used inside async React Server Component.

getCompiledMdx

import { getCompiledMdx } from "@mintlify/mdx";

const mdxSource = await getCompiledMdx({
  source: "## Markdown H2",
  mdxOptions: {
    remarkPlugins: [
      // Remark plugins
    ],
    rehypePlugins: [
      // Rehype plugins
    ],
  },
});

MDXComponent

import { MDXComponent } from "@mintlify/mdx";

<MDXComponent
  components={
    {
      // Your custom components
    }
  }
  {...mdxSource}
/>;

getCompiledServerMdx

import { getCompiledServerMdx } from "@mintlify/mdx";

const { content, frontmatter } = await getCompiledServerMdx({
  source: `---
    title: Title
    ---

    ## Markdown H2
  `,
  mdxOptions: {
    remarkPlugins: [
      // Remark plugins
    ],
    rehypePlugins: [
      // Rehype plugins
    ],
  },
  components: {
    // Your custom components
  },
});

MDXServerComponent

import { MDXServerComponent } from "@mintlify/mdx";

<MDXServerComponent
  source="## Markdown H2"
  components={
    {
      // Your custom components
    }
  }
/>;

Built with ❤︎ by Mintlify

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
0.0.465,094latest

Version History

VersionDownloads (Last 7 Days)Published
0.0.465,094
0.1.00
0.0.450
0.0.444,269
0.0.436
0.0.420
0.0.410
0.0.400
0.0.390
0.0.380
0.0.370
0.0.3656
0.0.350
0.0.340
0.0.330
0.0.320
0.0.310
0.0.300
0.0.290
0.0.282
0.0.270
0.0.260
0.0.250
0.0.240
0.0.230
0.0.220
0.0.210
0.0.200
0.0.190
0.0.180
0.0.170
0.0.160
0.0.150
0.0.140
0.0.130
0.0.120
0.0.110
0.0.100
0.0.90
0.0.80
0.0.70
0.0.60
0.0.51
0.0.40
0.0.30
0.0.20

Package Sidebar

Install

npm i @mintlify/mdx

Weekly Downloads

9,428

Version

0.0.46

License

MIT

Unpacked Size

56.9 kB

Total Files

22

Last publish

Collaborators

  • rickyzhangca-mintlify
  • ronan-mintlify
  • hahnbee
  • hanmint