use chromakitx::{
RGB,
AnsiColor,
CssColor,
CustomColor,
Color,
TextStyle,
helpers::{
interpolate_color,
colorize,
generate_palette,
gradient,
strip_ansi,
percent_color
}
};
fn main() -> () {
println!("=== Complete Helpers Demo ===\n");
println!("1. Color Interpolation:");
let start: RGB = RGB::new(255, 0, 128);
let end: RGB = RGB::new(0, 255, 128);
let colors: Vec<RGB> = interpolate_color(&start, &end, 5);
for (i, color) in colors.iter().enumerate() {
print!("{}", colorize("███", CustomColor::from(*color), None::<AnsiColor>));
if i < colors.len() - 1 {
print!(" → ");
}
}
println!("\n");
println!("2. Palette Generation:");
let base: RGB = RGB::new(64, 156, 255);
let palette: Vec<RGB> = generate_palette(&base, 5);
for color in palette {
print!("{}", colorize("████", CustomColor::from(color), None::<AnsiColor>));
}
println!("\n");
println!("3. Text Colorization:");
let samples: [(&str, AnsiColor); 4] = [
("Success", AnsiColor::Green),
("Warning", AnsiColor::Yellow),
("Error", AnsiColor::Red),
("Info", AnsiColor::Cyan)
];
for (text, color) in samples {
let formatted: String = colorize(text, color, None::<AnsiColor>);
println!(" {}", formatted);
}
println!();
println!("4. Gradient Text:");
let gradient_start: RGB = RGB::new(255, 0, 255);
let gradient_end: RGB = RGB::new(0, 255, 255);
let gradient_text: String = gradient("*** GRADIENT DEMO ***", &gradient_start, &gradient_end);
println!(" {}\n", gradient_text);
println!("5. Strip ANSI Codes:");
let colored: String = colorize("Colored text", CssColor::Gold, Some(CssColor::DarkBlue));
println!(" With ANSI: {}", colored);
println!(" Stripped: {}\n", strip_ansi(&colored));
println!("6. Percent Color:");
let values: [f32; 3] = [20.0, 55.0, 85.0];
for value in values {
let color: AnsiColor = percent_color(value, None, false, AnsiColor::Red, AnsiColor::Yellow, AnsiColor::Green);
println!(" {}Value: {:.0}%{}", Color::new(color, false), value, Color::new(TextStyle::Reset, false));
}
println!();
println!("7. Combined Example (Status Dashboard):");
let statuses: [(&str, f32); 4] = [
("CPU", 85.0),
("Memory", 62.0),
("Disk", 43.0),
("Network", 28.0)
];
for (name, value) in statuses {
let color: AnsiColor = percent_color(value, Some((40.0, 70.0)), false, AnsiColor::Green, AnsiColor::Yellow, AnsiColor::Red);
let bar_length: usize = (value / 100.0 * 20.0) as usize;
let bar: String = "█".repeat(bar_length) + &"░".repeat(20 - bar_length);
println!(" {}{:8} [{}] {:>5.1}%{}", Color::new(color, false), name, bar, value, Color::new(AnsiColor::Default, false));
}
}