# rtb-tui
> Part of the [phpboyscout Rust toolkit](https://rust.phpboyscout.uk) —
> small, framework-free crates extracted from
> [rust-tool-base](https://gitlab.com/phpboyscout/rust-tool-base).
Reusable TUI widgets for CLI tools: a multi-step interactive `Wizard`
with escape-to-back navigation (backed by `inquire`), uniform
structured-output helpers (`render_table` / `render_json`) for a
`--output text|json` flag, and a TTY-aware `Spinner` that no-ops when
stderr isn't a terminal.
```rust
use rtb_tui::{render_table, render_json};
use serde::Serialize;
use tabled::Tabled;
#[derive(Tabled, Serialize)]
struct Row { name: &'static str, count: u32 }
let rows = vec![Row { name: "alpha", count: 1 }];
print!("{}", render_table(&rows)); // psql-style text table
print!("{}", render_json(&rows).unwrap()); // pretty-printed JSON array
```
- **Docs:** <https://tui.rust.phpboyscout.uk>
- **API reference:** <https://docs.rs/rtb-tui>
- **Crate:** <https://crates.io/crates/rtb-tui>
## Development
`just ci` runs the full local gate (fmt, clippy, nextest, doc, deny).
All tests run headless — no TTY required. Releases are cut by
release-plz from Conventional Commits — do not tag manually.
## License
MIT