Terminal

Display streaming console output with full ANSI color support.

The Terminal component displays console output with ANSI color support, streaming indicators, and auto-scroll functionality.

See scripts/terminal.tsx for this example.

Installation

npx ai-elements@latest add terminal

Features

  • Full ANSI color support (256 colors, bold, italic, underline)
  • Streaming mode with cursor animation
  • Auto-scroll to latest output
  • Copy output to clipboard
  • Clear button support
  • Dark terminal theme

ANSI Support

The Terminal uses ansi-to-react to parse ANSI escape codes:

\x1b[32m✓\x1b[0m Success # Green checkmark \x1b[31m✗\x1b[0m Error # Red X \x1b[33mwarn\x1b[0m Warning # Yellow text \x1b[1mBold\x1b[0m # Bold text

Examples

Basic Usage

See scripts/terminal-basic.tsx for this example.

Streaming Mode

See scripts/terminal-streaming.tsx for this example.

With Clear Button

See scripts/terminal-clear.tsx for this example.

Props

<Terminal />

PropTypeDefaultDescription
outputstring-Terminal output text (supports ANSI codes).
isStreamingbooleanfalseShow streaming indicator.
autoScrollbooleantrueAuto-scroll to bottom on new output.
onClear() => void-Callback to clear output (enables clear button).
classNamestring-Additional CSS classes.

<TerminalCopyButton />

PropTypeDefaultDescription
onCopy() => void-Callback after successful copy.
onError(error: Error) => void-Callback if copying fails.
timeoutnumber2000Duration to show copied state (ms).

<TerminalHeader />

PropTypeDefaultDescription
...propsReact.HTMLAttributes<HTMLDivElement>-Any other props are spread to the div element.

<TerminalTitle />

PropTypeDefaultDescription
...propsReact.HTMLAttributes<HTMLDivElement>-Any other props are spread to the div element.

<TerminalStatus />

PropTypeDefaultDescription
...propsReact.HTMLAttributes<HTMLDivElement>-Any other props are spread to the div element.

<TerminalActions />

PropTypeDefaultDescription
...propsReact.HTMLAttributes<HTMLDivElement>-Any other props are spread to the div element.

<TerminalClearButton />

PropTypeDefaultDescription
...propsReact.ComponentProps<typeof Button>-Any other props are spread to the Button component.

<TerminalContent />

PropTypeDefaultDescription
...propsReact.HTMLAttributes<HTMLDivElement>-Any other props are spread to the div element.