Package Exports
- react-shiki
Readme
react-shiki
Syntax highlighting component for react using Shiki
Installation
(pnpm|bun|yarn) add react-shiki
npm install react-shiki
Usage
import type { ReactNode } from 'react';
import type { BundledLanguage } from 'shiki';
import ShikiHighlighter, { isInlineCode, type Element } from 'react-shiki';
interface CodeHighlightProps {
className?: string | undefined;
children?: ReactNode | undefined;
node?: Element | undefined;
}
export const CodeHighlight = ({
className,
children,
node,
...props
}: CodeHighlightProps): JSX.Element => {
const match = className?.match(/language-(\w+)/);
// TODO: remove need for consumer use of BundledLanguage from shiki
const language = match ? (match[1] as BundledLanguage) : undefined;
const isInline: boolean | undefined = node ? isInlineCode(node) : undefined;
return !isInline ? (
<ShikiHighlighter
language={language as BundledLanguage}
theme={'houston'}
{...props}>
{String(children)}
</ShikiHighlighter>
) : (
<code className={className} {...props}>
{children}
</code>
);
};