Skip to content
Snippets Groups Projects
code-block-element-static.tsx 810 B
import React from 'react';

import type { TCodeBlockElement } from '@udecode/plate-code-block';
import type { SlateElementProps } from '@udecode/plate-common';

import { cn } from '@udecode/cn';
import { SlateElement } from '@udecode/plate-common';

export const CodeBlockElementStatic = ({
  children,
  className,
  ...props
}: SlateElementProps<TCodeBlockElement>) => {
  const { element } = props;

  const state = {
    className: element?.lang ? `${element.lang} language-${element.lang}` : '',
  };

  return (
    <SlateElement className={cn(className, 'py-1', state.className)} {...props}>
      <pre className='overflow-x-auto rounded-md bg-zinc-100 px-6 py-8 font-mono text-sm leading-[normal] [tab-size:2] dark:bg-zinc-800'>
        <code>{children}</code>
      </pre>
    </SlateElement>
  );
};