Ink UI is a collection of reusable UI components for command-line interfaces built on top of the Ink React renderer. It is designed to give CLI tools the kind of rich, consistent interface you would expect from a modern web app, but rendered entirely in the terminal. The library ships with a broad set of interactive inputs, including text, email, password, confirm prompts, and single or multi-select lists, so you can cover most CLI interaction needs out of the box. It also includes feedback and status components such as spinners, progress bars, badges, alerts, status messages, and list components, helping you communicate background work and results clearly. All components are theme-driven, with styles and configuration defined via React context, which lets you override colors, layout, and visual markers while keeping behavior intact. The theming system is extensible, so you can extend the default theme, add component-specific configuration like list markers.
Features
- Ready-made React components for building rich CLIs (TextInput, EmailInput, PasswordInput, ConfirmInput, Select, MultiSelect, etc.)
- Built-in feedback components like Spinner, ProgressBar, Badge, StatusMessage, Alert, and list components for better UX in terminals
- Theme-based styling system using React context, with a default theme that can be extended or replaced
- Component themes support both style overrides and non-visual configuration (for example, list markers or status colors)
- First-class support for customization through ThemeProvider, extendTheme, and useComponentTheme helpers
- Delivered as @inkjs/ui via npm, designed to plug directly into existing Ink apps with comprehensive docs and examples