import { Flex, Heading, Link, Stack, Table, Text, useColorMode } from '@chakra-ui/react'; import NextLink from 'next/link'; import { PrismLight as SyntaxHighlighter } from 'react-syntax-highlighter'; import { nightOwl, materialLight, materialDark } from 'react-syntax-highlighter/dist/cjs/styles/prism'; import bash from 'react-syntax-highlighter/dist/cjs/languages/prism/bash'; import go from 'react-syntax-highlighter/dist/cjs/languages/prism/go'; import graphql from 'react-syntax-highlighter/dist/cjs/languages/prism/graphql'; import java from 'react-syntax-highlighter/dist/cjs/languages/prism/java'; import javascript from 'react-syntax-highlighter/dist/cjs/languages/prism/javascript'; import json from 'react-syntax-highlighter/dist/cjs/languages/prism/json'; import python from 'react-syntax-highlighter/dist/cjs/languages/prism/python'; import sh from 'react-syntax-highlighter/dist/cjs/languages/prism/shell-session'; import solidity from 'react-syntax-highlighter/dist/cjs/languages/prism/solidity'; import swift from 'react-syntax-highlighter/dist/cjs/languages/prism/swift'; import { textStyles } from '../theme/foundations'; import { getProgrammingLanguageName } from '../utils'; // syntax highlighting languages supported SyntaxHighlighter.registerLanguage('bash', bash); SyntaxHighlighter.registerLanguage('terminal', bash); SyntaxHighlighter.registerLanguage('go', go); SyntaxHighlighter.registerLanguage('graphql', graphql); SyntaxHighlighter.registerLanguage('java', java); SyntaxHighlighter.registerLanguage('javascript', javascript); SyntaxHighlighter.registerLanguage('json', json); SyntaxHighlighter.registerLanguage('python', python); SyntaxHighlighter.registerLanguage('sh', sh); SyntaxHighlighter.registerLanguage('solidity', solidity); SyntaxHighlighter.registerLanguage('swift', swift); const { header1, header2, header3, header4 } = textStyles; const MdTable = ({ children }: any) => ( {children}
) const Code = ({ className, ...code }: any) => { const { colorMode } = useColorMode(); const isDark = colorMode === 'dark'; if (className?.includes('terminal')) return ( {code.children} ); if (code.inline) return ( {code.children[0]} ); if (className?.startsWith('language-')) return ( {code.children} ); return {code.children[0]}; }; const MDXComponents = { // paragraphs p: ({ children }: any) => { return ( {children} ); }, // links a: ({ children, href }: any) => { return ( {children} ); }, // headings h1: ({ children }: any) => { return ( {children} ); }, h2: ({ children }: any) => { return ( {children} ); }, h3: ({ children }: any) => { return ( {children} ); }, h4: ({ children }: any) => { return ( {children} ); }, // lists ul: ({ children }: any) => { return ( {children} ); }, ol: ({ children }: any) => { return ( {children} ); }, // tables table: MdTable, // pre pre: ({ children }: any) => { return (
{children}
); }, // code code: Code }; export default MDXComponents;