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}