Code Block

Composable code-block primitives with copy actions, tabs, package-manager commands, and syntax highlighting.

Installation

npx love-ui@latest add code-block

Usage

Core primitives

import {
  CodeBlock,
  CodeBlockHeader,
  CodeBlockContent,
  CodeBlockGroup,
  CodeBlockIcon,
  CodeblockShiki,
  CopyButton,
} from "@loveui/code-blocks"
const code = `export function sum(a: number, b: number) {
  return a + b
}`
 
<CodeBlock>
  <CodeBlockHeader>
    <CodeBlockGroup>
      <CodeBlockIcon language="ts" />
      <span>math.ts</span>
    </CodeBlockGroup>
    <CopyButton content={code} />
  </CodeBlockHeader>
  <CodeBlockContent>
    <CodeblockShiki code={code} language="ts" lineNumbers />
  </CodeBlockContent>
</CodeBlock>

Highlighting engines

import { CodeblockShiki, CodeBlockSugarHigh } from "@loveui/code-blocks"

Package manager command blocks

import { CodeBlockSelectPkg, CodeBlockTabsPkg } from "@loveui/code-blocks"
<CodeBlockSelectPkg command="@loveui/code-blocks" title="Install package" type="install" />
<CodeBlockTabsPkg command="@loveui/code-blocks" type="install" />

MDX pre wrappers

import { PreShikiComponent, PreSugarHighComponent } from "@loveui/code-blocks"
const mdxComponents = {
  ...PreShikiComponent,
}

Exports

  • CodeBlock, CodeBlockHeader, CodeBlockContent, CodeBlockGroup, CodeBlockIcon
  • CopyButton
  • CodeblockShiki, CodeBlockSugarHigh
  • InlineCode, MultiTabs
  • CodeBlockSelectPkg, CodeBlockTabsPkg, SelectPackageManager
  • PreShikiComponent, PreSugarHighComponent
  • Tabs, TabsList, TabsTrigger, TabsContent
  • DropdownMenu primitives
  • usePackageManager, copyToClipboard, reactToText, highlight, sugarHighHighlight

Examples

Default

Headless

Highlighted lines

Highlighted words

Diff

Focus

Hidden line numbers

No syntax highlighting

Sugar High theme