tinterm 0.2.0

A powerful library for vibrant solid and gradient text with shimmer animations in terminal outputs.
Documentation
use tinterm::*;

fn main() {
    println!("🎨 Tinterm Comprehensive Demo 🎨\n");

    // Section 1: Basic Colors
    println!("=== 1. BASIC COLORS ===");
    println!("{}", "Red Text".color(Color::RED));
    println!("{}", "Green Background".bg(Color::GREEN));
    println!("{}", "Blue on Yellow".fg(Color::BLUE).bg(Color::YELLOW));
    println!("{}", "Custom RGB Color".color(Color::new(255, 165, 0))); // Orange
    println!("{}", "Hex Color".color(Color::from_hex("#FF69B4").unwrap())); // Hot Pink
    println!();

    // Section 2: Text Styling
    println!("=== 2. TEXT STYLING ===");
    println!("{}", "Bold Text".bold());
    println!("{}", "Italic Text".italic());
    println!("{}", "Underlined Text".underline());
    println!("{}", "Strikethrough Text".strikethrough());
    println!("{}", "Dim Text".dim());
    println!("{}", "Bright Text".bright());
    println!("{}", "Reversed Text".reverse());
    println!("{}", "Blinking Text".blink());
    println!();

    // Section 3: Method Chaining
    println!("=== 3. METHOD CHAINING ===");
    println!(
        "{}",
        "Bold Red on Blue".bold().color(Color::RED).bg(Color::BLUE)
    );
    println!(
        "{}",
        "Italic Underlined Green"
            .italic()
            .underline()
            .color(Color::GREEN)
    );
    println!(
        "{}",
        "Bright Magenta with Cyan BG"
            .bright()
            .color(Color::MAGENTA)
            .bg(Color::CYAN)
    );
    println!();

    // Section 4: Gradients
    println!("=== 4. GRADIENTS ===");
    println!("Foreground Gradients:");
    println!(
        "{}",
        "Red to Blue Gradient".gradient(Color::RED, Color::BLUE, None)
    );
    println!(
        "{}",
        "Green to Purple Gradient".gradient(Color::GREEN, Color::PURPLE, None)
    );
    println!(
        "{}",
        "Sunset Colors".gradient(Color::ORANGE, Color::DEEP_PINK, None)
    );

    println!("\nBackground Gradients:");
    println!(
        "{}",
        "Ocean Waves".gradient_bg(Color::DEEP_SKY_BLUE, Color::TEAL, None)
    );
    println!(
        "{}",
        "Forest Floor".gradient_bg(Color::DARK_GREEN, Color::BROWN, None)
    );

    println!("\nMultiline Gradients:");
    let multiline = "Line One\nLine Two\nLine Three";
    println!("Block mode (each line separate):");
    println!(
        "{}",
        multiline.gradient(Color::RED, Color::BLUE, Some(true))
    );
    println!("Continuous mode (across lines):");
    println!(
        "{}",
        multiline.gradient(Color::CYAN, Color::MAGENTA, Some(false))
    );
    println!();

    // Section 5: Shimmer Effects
    println!("=== 5. SHIMMER EFFECTS ===");
    println!("Static Shimmer Renders:");
    println!(
        "{}",
        "✨ Golden Shimmer ✨"
            .shimmer(Color::GOLD, None)
            .static_render()
    );
    println!(
        "{}",
        "💎 Diamond Shine 💎".shine(Color::WHITE).static_render()
    );
    println!(
        "{}",
        "🌟 Stellar Glow 🌟"
            .glow(Color::YELLOW, 200)
            .static_render()
    );
    println!(
        "{}",
        "🌈 Rainbow Gradient 🌈"
            .shimmer_gradient(Color::RED, Color::VIOLET, None)
            .static_render()
    );
    println!();

    // Section 6: Predefined Colors Showcase
    println!("=== 6. PREDEFINED COLORS SHOWCASE ===");
    let colors = vec![
        ("Fire", Color::RED),
        ("Ocean", Color::BLUE),
        ("Forest", Color::GREEN),
        ("Sun", Color::YELLOW),
        ("Lavender", Color::LAVENDER),
        ("Coral", Color::CORAL),
        ("Gold", Color::GOLD),
        ("Silver", Color::SILVER),
        ("Rose", Color::HOT_PINK),
        ("Emerald", Color::LIME_GREEN),
    ];

    for (name, color) in colors {
        println!("{}", format!("{}", name).color(color));
    }
    println!();

    // Section 7: Creative Combinations
    println!("=== 7. CREATIVE COMBINATIONS ===");

    // Logo-style text
    println!(
        "{}",
        "T".color(Color::RED).to_string()
            + &"I".color(Color::ORANGE).to_string()
            + &"N".color(Color::YELLOW).to_string()
            + &"T".color(Color::GREEN).to_string()
            + &"E".color(Color::BLUE).to_string()
            + &"R".color(Color::INDIGO).to_string()
            + &"M".color(Color::VIOLET)
    );

    // Progress bar simulation
    let _progress_full = "████████████████████";
    let _progress_empty = "░░░░░░░░░░░░░░░░░░░░";
    println!(
        "Progress: [{}{}] 75%",
        "███████████████".bg(Color::GREEN),
        "░░░░░".color(Color::DARK_GRAY)
    );

    // Status indicators
    println!("Status: {} Ready", "".color(Color::GREEN));
    println!("Status: {} Warning", "".color(Color::YELLOW));
    println!("Status: {} Error", "".color(Color::RED));

    // Syntax highlighting simulation
    println!("\nSyntax Highlighting Example:");
    println!(
        "{} {} {} {}{}{}",
        "fn".color(Color::PURPLE),
        "main".color(Color::BLUE),
        "()".color(Color::YELLOW),
        "{".color(Color::WHITE),
        "\n    println!".color(Color::CYAN),
        "();".color(Color::WHITE)
    );
    println!("{}", "}".color(Color::WHITE));
    println!();

    // Section 8: Performance Test
    println!("=== 8. PERFORMANCE TEST ===");
    let start = std::time::Instant::now();
    for i in 0..1000 {
        let _colored = format!("Line {}", i).color(Color::BLUE);
    }
    let duration = start.elapsed();
    println!("Rendered 1000 colored strings in: {:?}", duration);

    // Final showcase
    println!(
        "\n{}",
        "🎉 Tinterm Demo Complete! 🎉".gradient(Color::RED, Color::BLUE, None)
    );
    println!(
        "{}",
        "Thank you for using Tinterm!"
            .shimmer(Color::GOLD, None)
            .static_render()
    );
}