Interactive Components
Terminal UI components for interactive CLI applications
Interactive Components
Enable with features = ["components"]:
[dependencies]
xacli = { version = "0.1", features = ["components"] }
use xacli::components::*;
Input
let name = Input::new("Enter your name:")
.default("Alice")
.run()?;
Confirm
let confirmed = Confirm::new("Are you sure?")
.default(false)
.run()?;
Select
let color = Select::new("Choose a color:")
.option("Red", "red")
.option("Green", "green")
.option("Blue", "blue")
.run()?;
MultiSelect
let langs = MultiSelect::new("Select languages:")
.option("Rust", "rust")
.option("Python", "python")
.option("Go", "go")
.run()?;
ProgressBar
let (bar, handle) = ProgressBar::new(100, "Processing...");
std::thread::spawn(move || {
for _ in 0..100 {
std::thread::sleep(std::time::Duration::from_millis(50));
handle.inc(1);
}
handle.finish();
});
bar.run()?;
Spinner
let spinner = Spinner::new("Loading...")
.frames(spinner::frames::dots())
.run()?;
// Do work...
spinner.stop();
Keyboard Shortcuts
| Component | Keys |
|---|---|
| Input | Enter submit, Esc cancel |
| Confirm | Y/N select, Enter confirm |
| Select | ↑/↓ navigate, Enter select |
| MultiSelect | Space toggle, Enter confirm |