rnk
A React-like declarative terminal UI framework for Rust, inspired by Ink.
Features
- React-like API: Familiar component model with hooks (
use_signal,use_effect,use_input) - Declarative UI: Build TUIs with composable components
- Rich Components: Box, Text, List, Table, Tabs, Progress, Sparkline, BarChart, and more
- Flexbox Layout: Powered by Taffy for flexible layouts
- Mouse Support: Full mouse event handling
- Keyboard Input: Easy keyboard event handling with focus management
- Cross-platform: Works on Linux, macOS, and Windows
Quick Start
Add to your Cargo.toml:
[]
= "0.2"
Example
use *;
Components
Basic Components
Box- Flexbox containerText- Text with styling (colors, bold, italic, etc.)Span/Line- Rich text compositionSpacer- Flexible space
Data Display
List- Selectable list with highlightTable- Data table with headersTabs- Tab navigation
Visualization
Progress/Gauge- Progress barsSparkline- Inline data visualizationBarChart- Horizontal/vertical bar chartsScrollbar- Scroll indicator
Hooks
use_signal- Reactive state managementuse_effect- Side effectsuse_input- Keyboard input handlinguse_mouse- Mouse event handlinguse_focus- Focus managementuse_scroll- Scroll stateuse_window_title- Set terminal window title
License
MIT