prettui/lib.rs
1//! A terminal-based lib to make pretty command-line ui -> prettui
2//!
3//! # Features
4//!
5//! - Configurable list with items per row, rows per page, and cell width
6//! - Arrow and page list navigation
7//! - Real-time multi-digit numeric list input with live feedback
8//! - Customizable colors
9//!
10//! # Example
11//!
12//! ```rust
13//! use prettui::prelude::*;
14//!
15//! fn main() -> anyhow::Result<()> {
16//! let items: Vec<String> = (1..=100).map(|i| format!("Item {}", i)).collect();
17//! let config = ListConfig::default()
18//! .items_per_row(1)
19//! .rows_per_page(10)
20//! .cell_width(30)
21//! .normal_fg(Color::DarkGrey)
22//! .highlight_fg(Color::Green);
23//!
24//! println!("Example of using");
25//! println!(
26//! "Use arrows/PageUp/PageDown to navigate, type digits, Backspace to delete, Enter to confirm, Esc to cancel."
27//! );
28//! if let Some(idx) = choose_from_list(&items, &config)? {
29//! println!("You chose: {}", items[idx]);
30//! } else {
31//! println!("Selection cancelled.");
32//! }
33//!
34//! let ic = InputConfig {
35//! input_text_color: Color::Blue,
36//! ..Default::default()
37//! };
38//! let name = read_input(&ic)?;
39//! // Without log level:
40//! let oc = OutputConfig {
41//! log_level: None,
42//! ..Default::default()
43//! };
44//! write_output(&oc, &format!("Hello, {}!", name))?;
45//! // With log level:
46//! let oc2 = OutputConfig {
47//! log_level: Some("DEBUG".into()),
48//! ..Default::default()
49//! };
50//! write_output(&oc2, "This is a debug message.")?;
51//!
52//! Ok(())
53//! }
54//! ```
55
56pub mod color;
57pub mod io;
58pub mod list;
59
60pub mod prelude {
61 pub use super::color::*;
62 pub use super::io::*;
63 pub use super::list::*;
64}