npm.io
0.0.27 • Published 1 week ago

@uiid/code

Licence
MIT
Version
0.0.27
Deps
10
Size
68 kB
Vulns
0
Weekly
0
Stars
1

@uiid/code

Syntax highlighting components for the UIID Design System, powered by Shiki.

Installation

pnpm add @uiid/code

Usage

CodeBlock

Display code blocks with syntax highlighting:

import { CodeBlock } from "@uiid/code";

// Basic usage
<CodeBlock code={myCode} language="typescript" />

// With features
<CodeBlock
  code={myCode}
  language="typescript"
  filename="example.ts"
  showLineNumbers
  copyable
/>

// With pre-rendered HTML (SSR)
<CodeBlock code={myCode} html={prerenderedHtml} />
CodeInline

Display inline code with optional syntax highlighting:

import { CodeInline } from "@uiid/code";

// Plain inline code
<CodeInline>npm install</CodeInline>

// With syntax highlighting
<CodeInline language="typescript">const x: number = 42;</CodeInline>

// In text
<p>
  Run <CodeInline>npm install</CodeInline> to install dependencies.
</p>
Highlighter Utilities

For advanced usage, access the highlighter directly:

import { highlight, getHighlighter, loadLanguage } from "@uiid/code";

// Highlight code
const html = await highlight(code, "typescript");

// Get the highlighter instance
const highlighter = await getHighlighter();

// Load a specific language
await loadLanguage("python");
Hooks
import { useHighlight, useHighlighter } from "@uiid/code";

function MyComponent() {
  const { html, loading, error } = useHighlight(code, "typescript");

  if (loading) return <div>Loading...</div>;
  if (error) return <div>Error: {error.message}</div>;

  return <div dangerouslySetInnerHTML={{ __html: html }} />;
}

Supported Languages

  • JavaScript (javascript)
  • TypeScript (typescript)
  • JSX (jsx)
  • TSX (tsx)
  • JSON (json)
  • CSS (css)
  • HTML (html)
  • Bash (bash)
  • Markdown (markdown)
  • Python (python)

Props

CodeBlock
Prop Type Default Description
code string Required The code to display
language BundledLanguage "typescript" Programming language
filename string - Filename to display in header
showLineNumbers boolean false Show line numbers
copyable boolean true Show copy button
highlightLines number[] - Lines to highlight (1-indexed)
html string - Pre-highlighted HTML for SSR
CodeInline
Prop Type Default Description
language BundledLanguage - Programming language (optional)
html string - Pre-highlighted HTML for SSR

SSR Support

For server-side rendering, pre-highlight your code and pass it via the html prop:

// Server component
import { highlight } from "@uiid/code";

const html = await highlight(code, "typescript");
return <CodeBlock code={code} html={html} />;

License

MIT