Terminal apps thatlook designed.
Nineteen React components for the command line — tables, trees, command palettes, sparklines, wizards — with a theme engine and focus management already wired up. Everything below is rendered live, in your browser, exactly as it draws in a terminal.
You write JSX.
Caret draws the terminal.
No ANSI escape codes, no manual string padding, no cursor math. Declare the interface and let the renderer handle the grid.
Titled containers with an embedded footer and theme-aware borders.
import { Card, Badge, Text } from 'caret-tui';
const App = () => (
<Card
title="System Status"
footer="Updated 1m ago"
variant="success"
>
<Text>All systems are operational.</Text>
<Badge variant="success">3 regions live</Badge>
</Card>
);Nineteen components,
all of them live.
Not a screenshot gallery. Every tile below is the real render, animating in place. Click one to open its documentation.
Status labels in six variants.
The layout primitive, with themed borders.
Title in the top border, footer in the bottom.
History, ghost-text completion and masking.
Sortable, paginated, keyboard-driven tables.
Nested, collapsible directory views.
Headings, links, lists and code, in the terminal.
Queued toasts from anywhere via useNotify().
Masks the layout underneath for modals.
Split layouts with titled sections.
Linear progress with variants and labels.
Fixed viewport with a proportional scrollbar.
A command palette for your CLI.
Single choice with descriptions and disabled items.
Horizontal rules that follow the theme.
Inline block charts for live metrics.
Nine animation styles for background work.
Breadcrumb tracker for multi-step flows.
Theme-aware typography with colour variants.
19 of 19 shownEvery prop, every variant, in the reference→Focus a pane.
Use your keyboard.
Keyboard navigation, focus management, sorting and filtering ship with the components. Click into any pane below and drive it exactly as you would in a terminal.
type to filter · ↑↓ move · ⏎ run · esc reset
↑↓ move · space toggle · ⏎ open
←/→ paginate · s sort · ↑↓ move
One palette,
every component.
Variants are semantic, not hardcoded colours. Set the theme once and Badge, ProgressBar, Sparkline, Card and the rest pick it up — with full OKLCH support for wide-gamut terminals.
Your next CLI deserves
better than console.log.
Install the package, import a component, and the terminal does the rest.