Skip to content

Components

230 terminal UI components across 4 packages

Breadcrumbswidgets

Breadcrumbs: renders a non-interactive path trail of segments with separators and truncation

Display
PerformanceOverlaywidgets

PerformanceOverlay component

Display
FPSCounterwidgets

FPSCounter component

Display
Tagwidgets

Tag: a short inline label with a colored border and no background fill

Display
Canvaswidgets

A raw Canvas widget providing a HTML5-like 2D drawing context for custom rendering

Display
OrderedListwidgets

OrderedList: renders a numbered list with optional nesting

Display
DiffViewwidgets

DiffView: a scrollable unified diff viewer with +/- line coloring

Display
Highlightwidgets

Highlight component

Display
BigTextwidgets

BigText: renders text as large 5×3 ASCII art banner characters

Display
Digitswidgets

Digits: renders a numeric string as large 3-row ASCII art

Display
ChatMessagewidgets

ChatMessage: displays a single chat message with a colored role badge and word-wrapped content text

Display
Ptywidgets

Pty: Terminal Multiplexer widget

Display
UnorderedListwidgets

UnorderedList - renders a bulleted list with optional nested children

Display
DirectoryTreewidgets

DirectoryTree component

Display
Textwidgets

Text: renders a string of text with word-wrapping, alignment, and scrolling

Display
Markdownwidgets

Markdown: renders a subset of Markdown syntax in the terminal

Display
Accordionwidgets

Accordion: a group of collapsible sections

Display
JSONViewwidgets

JSONView: a syntax-colored, collapsible JSON viewer

Display
jsonToTreewidgets

Convert any JSON-compatible value to a TreeNode, optionally prefixed by `key` (the property name or array index in the parent container)

Display
Rulewidgets

Rule: a horizontal or vertical divider line with an optional centered title

Display
LogViewwidgets

LogView: scrollable, highlighted log output

Display
Carouselwidgets

slide navigator with indicator dots and keyboard controls

Display
Stopwatchwidgets

Stopwatch: counts up from zero, displaying elapsed time

Display
ShortcutBarwidgets

ShortcutBar: a horizontal footer bar that displays quick key bindings

Display
Avatarwidgets

Avatar: a widget that displays user initials with a generated color

Display
QRCodePatternwidgets

Decorative QR-style pattern generator

Display
QRCodewidgets

QRCode component

Display
Badgewidgets

Badge: a short inline label with a colored background

Display
Tooltipwidgets

Tooltip: displays contextual help text

Display
Codewidgets

Code component

Display
ToolCallwidgets

ToolCall: displays an AI tool invocation with status indicator, tool name, arguments, and optional result

Display
ToolApprovalwidgets

ToolApproval: extends ToolCall with an approval prompt row

Display
ProgressCirclewidgets

ProgressCircle component

Display
Clockwidgets

Clock component

Display
Gradientwidgets

Gradient: text rendered with a smooth color gradient

Display
Collapsiblewidgets

Collapsible: a toggleable section with title and body

Display
Kbdwidgets

Kbd: an inline label representing a keyboard input

Display
Timerwidgets

Timer: counts down from a duration to zero

Display
ThinkingBlockwidgets

ThinkingBlock component

Display
StreamingTextwidgets

StreamingText: renders text that "streams in" token by token with a blinking cursor

Display
Watermarkwidgets

Watermark - fills its area with faint repeating text

Display
Typewriterwidgets

Reveals static text character by character

Display
Timelinewidgets

Timeline: renders a vertical list of timeline items

Display
NotificationBadgewidgets

NotificationBadge - a small count label rendered at a corner position

Display
Treewidgets

Tree: a collapsible tree widget for displaying hierarchical data

Display
ChatThreadwidgets

ChatThread component

Display
Stepperwidgets

Stepper: renders a sequence of steps with status indicators

Display
Marqueewidgets

Marquee component

Display
Linkwidgets

Whether to append the URL visually when terminal capabilities lack unicode/OSC 8 support

Display
Placeholderwidgets

Placeholder - a labeled stand-in box for prototyping terminal layouts

Display
Scrollbarwidgets

Show begin/end arrow symbols

Feedback
Alertwidgets

Alert: full-width status message box with a colored border and an icon prefix

Feedback
Bannerwidgets

Banner: full-width alert with title and body text

Feedback
BarColumnwidgets

BarColumn component

Feedback
TextColumnwidgets

TextColumn component

Feedback
TimeColumnwidgets

TimeColumn component

Feedback
SpeedColumnwidgets

SpeedColumn component

Feedback
PercentageColumnwidgets

PercentageColumn component

Feedback
StatusMessagewidgets

StatusMessage: a single-line status indicator

Feedback
Spinnerwidgets

Spinner: animated loading indicator

Feedback
SPINNER_FRAMESwidgets

Built-in spinner frame sets

Feedback
Calloutwidgets

Callout component

Feedback
LoadingDotswidgets

Dot color

Feedback
Progresswidgets

Progress component

Feedback
TaskListwidgets

TaskList: a vertical list of tasks with status indicators

Feedback
ProgressBarwidgets

ProgressBar: horizontal progress indicator

Feedback
MultiProgresswidgets

MultiProgress: stacks multiple labeled progress bars in a vertical list

Feedback
Skeletonwidgets

Skeleton component

Feedback
EmptyStatewidgets

EmptyState component

Feedback
ContextMenuwidgets

ContextMenu: a floating menu widget positioned at absolute coordinates

Input
CommandPalettewidgets

CommandPalette: a fuzzy-search overlay widget

Input
Checkboxwidgets

Checkbox: a toggleable boolean input with a label

Input
Knobwidgets

Knob component

Input
Buttonwidgets

Button: a pressable button with a label and visual variants

Input
PinInputwidgets

PinInput component

Input
Sliderwidgets

Slider component

Input
TextInputwidgets

TextInput: a single-line text input field with optional command auto-completion support

Input
Listwidgets

List: a scrollable, selectable list of items

Input
VirtualListwidgets

VirtualList: a scroll-virtualized list widget

Input
RangeInputwidgets

RangeInput component

Input
computeRangewidgets

Compute visible range for fixed-height items

Input
computeVariableRangewidgets

Compute visible range for variable-height items

Input
Panelwidgets

Panel: a labeled container widget

Layout
DraggableWidgetwidgets

DraggableWidget component

Layout
DroppableWidgetwidgets

DroppableWidget component

Layout
DragStatewidgets

── Drag State Manager ──

Layout
Stackwidgets

Stack: a widget that layers children on top of each other

Layout
ScrollViewwidgets

ScrollView: a height-bounded scrollable container

Layout
Columnswidgets

Columns: splits available width evenly across child widgets

Layout
Cardwidgets

Card: a bordered container with an optional title in the top border

Layout
AspectRatiowidgets

contain = fit inside, cover = fill

Layout
Dockwidgets

Dock component

Layout
Centerwidgets

Center: centers a single child widget horizontally and/or vertically

Layout
Dividerwidgets

Divider: a horizontal or vertical separator line with optional label

Layout
SplitPanewidgets

SplitPane: two-pane resizable layout widget

Layout
Fillwidgets

Fill component

Layout
Masonrywidgets

Vertical gap between items

Layout
ScrollAccelerationwidgets

ScrollAcceleration component

Layout
Gridwidgets

Grid: a true CSS-Grid-like layout container

Layout
GridItemwidgets

GridItem: a child container that can define grid column/row spans or starts

Layout
BulletChartwidgets

BulletChart: a metric display with target marker and qualitative range bands

Data
Hexdumpwidgets

Character shown for non-printable bytes in ASCII column

Data
TreeTablewidgets

TreeTable: combines Tree expand/collapse with Table columns

Data
Tablewidgets

Table: renders tabular data with columns, headers, and optional zebra-striping

Data
RadarChartwidgets

Axis names, one per spoke

Data
BrailleCanvaswidgets

BrailleCanvas component

Data
Definitionwidgets

Definition: term + definition pairs, stacked vertically

Data
DataGridwidgets

Callback fired when the filter changes

Data
useListStatewidgets

Hook that creates a fresh ListState

Data
Statwidgets

Stat component

Data
BarChartwidgets

Color for text labels

Data
Calendarwidgets

Calendar component

Data
Sparklinewidgets

Sparkline: a compact inline chart showing a data trend

Data
CandlestickChartwidgets

CandlestickChart: renders OHLC candle data as a terminal chart

Data
LineChartwidgets

LineChart: ASCII/Unicode line plot for a series of numbers

Data
AreaChartwidgets

AreaChart component

Data
useTableStatewidgets

Hook that creates a fresh TableState

Data
StackedBarChartwidgets

StackedBarChart component

Data
Histogramwidgets

Histogram component

Data
Meterwidgets

Meter: a self-contained metric display with label, bar, and value with low/optimum/high thresholds

Data
PieChartwidgets

PieChart component

Data
GanttChartwidgets

GanttChart component

Data
StatusIndicatorwidgets

StatusIndicator: simple up/down indicator with label

Data
ScatterPlotwidgets

Point marker

Data
KeyValuewidgets

KeyValue: aligned key: value pairs

Data
Gaugewidgets

Gauge: a self-contained metric display with label, bar, and value

Data
HeatMapwidgets

HeatMap: 2D matrix displayed with character-density shading

Data
Sidebarwidgets

Sidebar: a vertical list of navigation items with optional badges

Data
LineGaugewidgets

Show percentage label at right

Data
useCounterjsx

useCounter component

Hook
useModaljsx

useModal: typed modal manager with queueing and cleanup

Hook
useViewMetajsx

useViewMeta component

Hook
useTerminalSizejsx

useTerminalSize component

Hook
AUDIBLE_FEEDBACK_TYPESjsx

Types that produce an audible bell

Hook
triggerFeedbackjsx

Fire feedback for a given interaction type

Hook
useFeedbackjsx

map UI events to terminal audio cues (bell)

Hook
useFocusWithinjsx

useFocusWithin: check if focus is within a list of IDs

Hook
useTogglejsx

useToggle component

Hook
useTypeaheadjsx

Accumulates printable character keypresses to navigate lists by typing

Hook
useKeyboardNavigationjsx

useKeyboardNavigation: arrow-key list navigation with wrap/clamp support

Hook
useSubprocessjsx

useSubprocess component

Hook
useFocusjsx

useFocus: consume focus state for a focusable element

Hook
useThrottlejsx

useThrottle: throttle a changing value

Hook
useTimeoutjsx

useTimeout: run a callback once after a delay

Hook
useBooleanjsx

useBoolean component

Hook
useBelljsx

useBell - A React-like hook for triggering the terminal bell

Hook
useListjsx

useList component

Hook
detectPackageManagerjsx

Detect the running package manager from environment variables

Hook
getPackageManagerCommandsjsx

Return command helpers for the given package manager

Hook
usePackageManagerjsx

Hook: returns commands for the detected package manager (stable across renders)

Hook
useStopwatchjsx

useStopwatch: tracks elapsed time with start, pause, and reset controls

Hook
useMapjsx

useMap component

Hook
useDebouncejsx

useDebounce: debounce a changing value

Hook
useFocusManagerjsx

useFocusManager: manages focus state for a subtree

Hook
useCountdownjsx

useCountdown: counts down from a start value with start, pause, and reset controls

Hook
useElementSizejsx

useElementSize: track the size of a widget element

Hook
useClipboardjsx

useClipboard: interact with the system clipboard

Hook
useFocusTrapjsx

useFocusTrap: cycle Tab / Shift+Tab focus through a fixed list of IDs

Hook
useSetjsx

useSet component

Hook
SortPromptui

sortable item list

Template
validateInputui

validateInput component

Template
AppShellui

full-screen application layout

Template
RadioGroupui

RadioGroup: renders a vertical list of mutually exclusive options

Template
WelcomeScreenui

WelcomeScreen component

Template
Autocompleteui

Highlight color for the selected suggestion

Template
TokenUsageui

TokenUsage component

Template
Popoverui

The specific terminal coordinates (row/col) to anchor this popover to

Template
Selectui

single-item dropdown selector

Template
Paginationui

simple page navigator

Template
PasswordInputui

PasswordInput component

Template
ContentSwitcherui

show a single active child widget

Template
Modalui

overlay dialog with backdrop

Template
QuizPromptui

QuizPrompt component

Template
Toastui

Enable screen reader announcements (default: true)

Template
NotificationStoreui

── NotificationStore (singleton) ──────────────────────────────────────────

Template
NotificationCenterui

NotificationCenter component

Template
notificationsui

Global singleton accessor

Template
useNotificationsui

── useNotifications JSX hook ───────────────────────────────────────────────

Template
NumberInputui

NumberInput component

Template
SetupFlowui

SetupFlow component

Template
DatePickerui

calendar date selector widget

Template
TagInputui

TagInput component

Template
TreeSelectui

expandable tree with single or multi selection

Template
Pagesui

named page container with optional overlay behavior

Template
Formui

compound input container with validation

Template
Menuui

Menu: a vertical list of interactive items supporting keyboard navigation, shortcuts, and disabled states

Template
SearchInputui

SearchInput component

Template
TimePickerui

TimePicker component

Template
Wizardui

Wizard component

Template
Transferui

dual-list shuttle selector widget

Template
SnippetPromptui

parse template placeholders and manage prompt values

Template
ConfirmDialogui

yes/no prompt overlay

Template
Switchui

Switch component

Template
NonInteractiveErrorui

NonInteractiveError component

Template
promptui

Imperative prompts for CLI scripts: no widget stack required

Template
EditablePromptui

EditablePrompt component

Template
Draggableui

Draggable component

Template
Droppableui

Droppable component

Template
FormContextui

FormContext component

Template
FormBuilderui

FormBuilder component

Template
useFormui

useForm component

Template
SegmentedControlui

single-selection segmented control

Template
FilePickerui

FilePicker: an interactive file browser widget

Template
LinearPromptui

screen-reader-friendly linear prompt rendering

Template
MultiSelectui

checkbox-style multi-item selector

Template
SearchableSelectui

searchable dropdown selector with filtering

Template
ThemeSwitcherui

ThemeSwitcher component

Template
EmailInputui

Common domains to suggest after '@'

Template
Disclosureui

Disclosure component

Template
ButtonGroupui

ButtonGroup component

Template
MaskedInputui

Color for the text

Template
Announcerui

Max messages kept in the visible log

Template
CheckboxGroupui

CheckboxGroup component

Template
Listbarui

Listbar component

Template
Ratingui

Rating: renders a row of star glyphs for a 1-to-N rating

Template
DateRangePickerui

calendar date range selector widget

Template
Spacerui

flexible empty space

Template
BasicAuthPromptui

BasicAuthPrompt component

Template
SurveyPromptui

SurveyPrompt component

Template
MultilineTextInputui

MultilineTextInput component

Template
Tabsui

tabbed container with keyboard switching

Template
PathInputui

PathInput: filesystem path input with Tab-completion

Template
ColorPickerui

ColorPicker component

Template
Drawerui

Drawer: a side panel that slides in from any edge

Template
TextAreaui

TextArea - a multi-line text input field

Template
Breadcrumbui

Breadcrumb component

Template
Comboboxui

text input with inline filtered dropdown

Template
MenuBarui

horizontal menu bar with dropdown menus

Template
KeyboardShortcutsui

A group of bindings belonging to the same category

Template
ScalePromptui

ScalePrompt component

Template