Skip to content

Commit

Permalink
feat: Create an MDX component to render MDX content with default mapp…
Browse files Browse the repository at this point in the history
…ed components
  • Loading branch information
jerelmiller committed Jan 27, 2021
1 parent 6dde701 commit 210f5bd
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
1 change: 1 addition & 0 deletions packages/gatsby-theme-newrelic/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export { default as Layout } from './src/components/Layout';
export { default as Link } from './src/components/Link';
export { default as Logo } from './src/components/Logo';
export { default as MarkdownContainer } from './src/components/MarkdownContainer';
export { default as MDX } from './src/components/MDX';
export { default as MDXCallout } from './src/components/MDXCallout';
export { default as MDXCodeBlock } from './src/components/MDXCodeBlock';
export { default as MDXCollapserGroup } from './src/components/MDXCollapserGroup';
Expand Down
46 changes: 46 additions & 0 deletions packages/gatsby-theme-newrelic/src/components/MDX.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import React from 'react';
import PropTypes from 'prop-types';
import { MDXRenderer } from 'gatsby-plugin-mdx';
import { MDXProvider } from '@mdx-js/react';
import Button from './Button';
import MDXCallout from './MDXCallout';
import Collapser from './Collapser';
import Icon from './Icon';
import InlineCode from './InlineCode';
import Link from './Link';
import MDXCodeBlock from './MDXCodeBlock';
import MDXCollapserGroup from './MDXCollapserGroup';
import MDXLink from './MDXLink';
import MDXTable from './MDXTable';
import MDXVideo from './MDXVideo';

const defaultComponents = {
a: MDXLink,
code: MDXCodeBlock,
pre: (props) => props.children,
Button,
ButtonLink: (props) => <Button {...props} as={Link} />,
Callout: MDXCallout,
Collapser,
CollapserGroup: MDXCollapserGroup,
Icon,
InlineCode,
Link,
table: MDXTable,
Video: MDXVideo,
};

const MDX = ({ body, components }) => {
return (
<MDXProvider components={{ ...defaultComponents, ...components }}>
<MDXRenderer>{body}</MDXRenderer>
</MDXProvider>
);
};

MDX.propTypes = {
body: PropTypes.node,
components: PropTypes.object,
};

export default MDX;

0 comments on commit 210f5bd

Please sign in to comment.