UNPKG

@newrelic/gatsby-theme-newrelic

Version:

[![Community Project header](https://github.com/newrelic/opensource-website/raw/master/src/images/categories/Community_Project.png)](https://opensource.newrelic.com/oss-category/#community-project)

65 lines (60 loc) 1.48 kB
import React from 'react'; import PropTypes from 'prop-types'; import { css } from '@emotion/react'; import CodeBlock from './CodeBlock'; import Terminal from './Terminal'; import { isShellLanguage } from '../utils/codeBlock'; const MDXCodeBlock = ({ animate, children, className, copyable, lineNumbers, live, lineHighlight, preview, ...props }) => { const language = className?.replace('language-', ''); return isShellLanguage(language) ? ( <Terminal animate={animate} copyable={copyable} css={css` &:not(:last-child) { margin-bottom: var(--block-element-spacing); } `} > {children} </Terminal> ) : ( <CodeBlock {...props} copyable={copyable !== 'false'} highlightedLines={lineHighlight} language={language} lineNumbers={lineNumbers === 'true'} live={live === 'true'} preview={preview === 'true'} css={css` &:not(:last-child) { margin-bottom: var(--block-element-spacing); } `} > {children} </CodeBlock> ); }; MDXCodeBlock.propTypes = { animate: PropTypes.bool, children: PropTypes.string, className: PropTypes.string, copyable: PropTypes.oneOf(['true', 'false']), lineHighlight: PropTypes.string, lineNumbers: PropTypes.oneOf(['true', 'false']), live: PropTypes.oneOf(['true', 'false']), preview: PropTypes.oneOf(['true', 'false']), }; export default MDXCodeBlock;