Components
230 terminal UI components across 4 packages
BreadcrumbsBreadcrumbs: renders a non-interactive path trail of segments with separators and truncation
PerformanceOverlayPerformanceOverlay component
FPSCounterFPSCounter component
TagTag: a short inline label with a colored border and no background fill
CanvasA raw Canvas widget providing a HTML5-like 2D drawing context for custom rendering
OrderedListOrderedList: renders a numbered list with optional nesting
DiffViewDiffView: a scrollable unified diff viewer with +/- line coloring
HighlightHighlight component
BigTextBigText: renders text as large 5×3 ASCII art banner characters
DigitsDigits: renders a numeric string as large 3-row ASCII art
ChatMessageChatMessage: displays a single chat message with a colored role badge and word-wrapped content text
PtyPty: Terminal Multiplexer widget
UnorderedListUnorderedList - renders a bulleted list with optional nested children
DirectoryTreeDirectoryTree component
TextText: renders a string of text with word-wrapping, alignment, and scrolling
MarkdownMarkdown: renders a subset of Markdown syntax in the terminal
AccordionAccordion: a group of collapsible sections
JSONViewJSONView: a syntax-colored, collapsible JSON viewer
jsonToTreeConvert any JSON-compatible value to a TreeNode, optionally prefixed by `key` (the property name or array index in the parent container)
RuleRule: a horizontal or vertical divider line with an optional centered title
LogViewLogView: scrollable, highlighted log output
Carouselslide navigator with indicator dots and keyboard controls
StopwatchStopwatch: counts up from zero, displaying elapsed time
ShortcutBarShortcutBar: a horizontal footer bar that displays quick key bindings
AvatarAvatar: a widget that displays user initials with a generated color
QRCodePatternDecorative QR-style pattern generator
QRCodeQRCode component
BadgeBadge: a short inline label with a colored background
TooltipTooltip: displays contextual help text
CodeCode component
ToolCallToolCall: displays an AI tool invocation with status indicator, tool name, arguments, and optional result
ToolApprovalToolApproval: extends ToolCall with an approval prompt row
ProgressCircleProgressCircle component
ClockClock component
GradientGradient: text rendered with a smooth color gradient
CollapsibleCollapsible: a toggleable section with title and body
KbdKbd: an inline label representing a keyboard input
TimerTimer: counts down from a duration to zero
ThinkingBlockThinkingBlock component
StreamingTextStreamingText: renders text that "streams in" token by token with a blinking cursor
WatermarkWatermark - fills its area with faint repeating text
TypewriterReveals static text character by character
TimelineTimeline: renders a vertical list of timeline items
NotificationBadgeNotificationBadge - a small count label rendered at a corner position
TreeTree: a collapsible tree widget for displaying hierarchical data
ChatThreadChatThread component
StepperStepper: renders a sequence of steps with status indicators
MarqueeMarquee component
LinkWhether to append the URL visually when terminal capabilities lack unicode/OSC 8 support
PlaceholderPlaceholder - a labeled stand-in box for prototyping terminal layouts
ScrollbarShow begin/end arrow symbols
AlertAlert: full-width status message box with a colored border and an icon prefix
BannerBanner: full-width alert with title and body text
BarColumnBarColumn component
TextColumnTextColumn component
TimeColumnTimeColumn component
SpeedColumnSpeedColumn component
PercentageColumnPercentageColumn component
StatusMessageStatusMessage: a single-line status indicator
SpinnerSpinner: animated loading indicator
SPINNER_FRAMESBuilt-in spinner frame sets
CalloutCallout component
LoadingDotsDot color
ProgressProgress component
TaskListTaskList: a vertical list of tasks with status indicators
ProgressBarProgressBar: horizontal progress indicator
MultiProgressMultiProgress: stacks multiple labeled progress bars in a vertical list
SkeletonSkeleton component
EmptyStateEmptyState component
ContextMenuContextMenu: a floating menu widget positioned at absolute coordinates
CommandPaletteCommandPalette: a fuzzy-search overlay widget
CheckboxCheckbox: a toggleable boolean input with a label
KnobKnob component
ButtonButton: a pressable button with a label and visual variants
PinInputPinInput component
SliderSlider component
TextInputTextInput: a single-line text input field with optional command auto-completion support
ListList: a scrollable, selectable list of items
VirtualListVirtualList: a scroll-virtualized list widget
RangeInputRangeInput component
computeRangeCompute visible range for fixed-height items
computeVariableRangeCompute visible range for variable-height items
PanelPanel: a labeled container widget
DraggableWidgetDraggableWidget component
DroppableWidgetDroppableWidget component
DragState── Drag State Manager ──
StackStack: a widget that layers children on top of each other
ScrollViewScrollView: a height-bounded scrollable container
ColumnsColumns: splits available width evenly across child widgets
CardCard: a bordered container with an optional title in the top border
AspectRatiocontain = fit inside, cover = fill
DockDock component
CenterCenter: centers a single child widget horizontally and/or vertically
DividerDivider: a horizontal or vertical separator line with optional label
SplitPaneSplitPane: two-pane resizable layout widget
FillFill component
MasonryVertical gap between items
ScrollAccelerationScrollAcceleration component
GridGrid: a true CSS-Grid-like layout container
GridItemGridItem: a child container that can define grid column/row spans or starts
BulletChartBulletChart: a metric display with target marker and qualitative range bands
HexdumpCharacter shown for non-printable bytes in ASCII column
TreeTableTreeTable: combines Tree expand/collapse with Table columns
TableTable: renders tabular data with columns, headers, and optional zebra-striping
RadarChartAxis names, one per spoke
BrailleCanvasBrailleCanvas component
DefinitionDefinition: term + definition pairs, stacked vertically
DataGridCallback fired when the filter changes
useListStateHook that creates a fresh ListState
StatStat component
BarChartColor for text labels
CalendarCalendar component
SparklineSparkline: a compact inline chart showing a data trend
CandlestickChartCandlestickChart: renders OHLC candle data as a terminal chart
LineChartLineChart: ASCII/Unicode line plot for a series of numbers
AreaChartAreaChart component
useTableStateHook that creates a fresh TableState
StackedBarChartStackedBarChart component
HistogramHistogram component
MeterMeter: a self-contained metric display with label, bar, and value with low/optimum/high thresholds
PieChartPieChart component
GanttChartGanttChart component
StatusIndicatorStatusIndicator: simple up/down indicator with label
ScatterPlotPoint marker
KeyValueKeyValue: aligned key: value pairs
GaugeGauge: a self-contained metric display with label, bar, and value
HeatMapHeatMap: 2D matrix displayed with character-density shading
SidebarSidebar: a vertical list of navigation items with optional badges
LineGaugeShow percentage label at right
useCounterjsxuseCounter component
useModaljsxuseModal: typed modal manager with queueing and cleanup
useViewMetajsxuseViewMeta component
useTerminalSizejsxuseTerminalSize component
AUDIBLE_FEEDBACK_TYPESjsxTypes that produce an audible bell
triggerFeedbackjsxFire feedback for a given interaction type
useFeedbackjsxmap UI events to terminal audio cues (bell)
useFocusWithinjsxuseFocusWithin: check if focus is within a list of IDs
useTogglejsxuseToggle component
useTypeaheadjsxAccumulates printable character keypresses to navigate lists by typing
useKeyboardNavigationjsxuseKeyboardNavigation: arrow-key list navigation with wrap/clamp support
useSubprocessjsxuseSubprocess component
useFocusjsxuseFocus: consume focus state for a focusable element
useThrottlejsxuseThrottle: throttle a changing value
useTimeoutjsxuseTimeout: run a callback once after a delay
useBooleanjsxuseBoolean component
useBelljsxuseBell - A React-like hook for triggering the terminal bell
useListjsxuseList component
detectPackageManagerjsxDetect the running package manager from environment variables
getPackageManagerCommandsjsxReturn command helpers for the given package manager
usePackageManagerjsxHook: returns commands for the detected package manager (stable across renders)
useStopwatchjsxuseStopwatch: tracks elapsed time with start, pause, and reset controls
useMapjsxuseMap component
useDebouncejsxuseDebounce: debounce a changing value
useFocusManagerjsxuseFocusManager: manages focus state for a subtree
useCountdownjsxuseCountdown: counts down from a start value with start, pause, and reset controls
useElementSizejsxuseElementSize: track the size of a widget element
useClipboardjsxuseClipboard: interact with the system clipboard
useFocusTrapjsxuseFocusTrap: cycle Tab / Shift+Tab focus through a fixed list of IDs
useSetjsxuseSet component
SortPromptuisortable item list
validateInputuivalidateInput component
AppShelluifull-screen application layout
RadioGroupuiRadioGroup: renders a vertical list of mutually exclusive options
WelcomeScreenuiWelcomeScreen component
AutocompleteuiHighlight color for the selected suggestion
TokenUsageuiTokenUsage component
PopoveruiThe specific terminal coordinates (row/col) to anchor this popover to
Selectuisingle-item dropdown selector
Paginationuisimple page navigator
PasswordInputuiPasswordInput component
ContentSwitcheruishow a single active child widget
Modaluioverlay dialog with backdrop
QuizPromptuiQuizPrompt component
ToastuiEnable screen reader announcements (default: true)
NotificationStoreui── NotificationStore (singleton) ──────────────────────────────────────────
NotificationCenteruiNotificationCenter component
notificationsuiGlobal singleton accessor
useNotificationsui── useNotifications JSX hook ───────────────────────────────────────────────
NumberInputuiNumberInput component
SetupFlowuiSetupFlow component
DatePickeruicalendar date selector widget
TagInputuiTagInput component
TreeSelectuiexpandable tree with single or multi selection
Pagesuinamed page container with optional overlay behavior
Formuicompound input container with validation
MenuuiMenu: a vertical list of interactive items supporting keyboard navigation, shortcuts, and disabled states
SearchInputuiSearchInput component
TimePickeruiTimePicker component
WizarduiWizard component
Transferuidual-list shuttle selector widget
SnippetPromptuiparse template placeholders and manage prompt values
ConfirmDialoguiyes/no prompt overlay
SwitchuiSwitch component
NonInteractiveErroruiNonInteractiveError component
promptuiImperative prompts for CLI scripts: no widget stack required
EditablePromptuiEditablePrompt component
DraggableuiDraggable component
DroppableuiDroppable component
FormContextuiFormContext component
FormBuilderuiFormBuilder component
useFormuiuseForm component
SegmentedControluisingle-selection segmented control
FilePickeruiFilePicker: an interactive file browser widget
LinearPromptuiscreen-reader-friendly linear prompt rendering
MultiSelectuicheckbox-style multi-item selector
SearchableSelectuisearchable dropdown selector with filtering
ThemeSwitcheruiThemeSwitcher component
EmailInputuiCommon domains to suggest after '@'
DisclosureuiDisclosure component
ButtonGroupuiButtonGroup component
MaskedInputuiColor for the text
AnnounceruiMax messages kept in the visible log
CheckboxGroupuiCheckboxGroup component
ListbaruiListbar component
RatinguiRating: renders a row of star glyphs for a 1-to-N rating
DateRangePickeruicalendar date range selector widget
Spaceruiflexible empty space
BasicAuthPromptuiBasicAuthPrompt component
SurveyPromptuiSurveyPrompt component
MultilineTextInputuiMultilineTextInput component
Tabsuitabbed container with keyboard switching
PathInputuiPathInput: filesystem path input with Tab-completion
ColorPickeruiColorPicker component
DraweruiDrawer: a side panel that slides in from any edge
TextAreauiTextArea - a multi-line text input field
BreadcrumbuiBreadcrumb component
Comboboxuitext input with inline filtered dropdown
MenuBaruihorizontal menu bar with dropdown menus
KeyboardShortcutsuiA group of bindings belonging to the same category
ScalePromptuiScalePrompt component