Retro Terminal Emulator

Pro

CRT phosphor glow, scanlines, and a 240 char/sec typer that never re-renders a single line of output mid-stream.

show offretroterminalemulatorframer motion
Retro Terminal Emulator component preview

Installation

Run the following command

~/your-project
pnpm dlx wensity@latest add retro-terminal-emulator

Usage

Import RetroTerminalEmulator from @/components/wensity/retro-terminal-emulator and render it anywhere in your React or Next.js app. The source lands in your own repo, so every prop, class and animation below is yours to edit.

app/example.tsx
import {
RetroTerminalEmulator,
type TerminalLine,
} from "@/components/wensity/retro-terminal-emulator";
const lines: TerminalLine[] = [
{ kind: "comment", text: "# wensity studio · v2.4.0" },
{ kind: "command", text: "pnpm dlx wensity@latest add retro-terminal-emulator" },
{ kind: "output", text: "✓ Resolved deps · 0 added · 0 removed" },
{ kind: "command", text: "pnpm dev" },
{ kind: "output", text: "▲ Next.js · Local: http://localhost:3000" },
{ kind: "output", text: "✓ Ready in 287ms" },
];
export default function Example() {
return (
<RetroTerminalEmulator
lines={lines}
palette="phosphor"
cps={42}
title="wensity@studio: ~"
/>
);
}

Props

PropTypeDefaultDescription
linesTerminalLine[]-Lines to type out, in order.
cpsnumber38Default characters-per-second cadence.
promptstring"$ "Default prompt prefix for command lines.
titlestring"wensity@studio: ~"Header title bar text.
loopbooleantrueLoop the whole sequence forever.
linePausenumber320Pause in milliseconds between lines.
loopPausenumber2200Pause in milliseconds before restarting the loop.
palette"phosphor" | "amber" | "chili""phosphor"Preferred CRT colour theme.