use std::sync::Arc;
use minimo::banner::Banner;
use minimo::*;
use minimo::ask::*;
fn main() {
Banner::new("minimo").show(yellow_bold);
showln!(yellow_bold, "minimo",gray_dim, "VERSION 0.1.0", white,"A minimalistic terminal printing library for Rust");
showln!(gray, "You can use ", magenta, "show!", gray, " or ", yellow, "showln!", gray, " macros");
showln!(gray, "to print text segments in different colors.\n(Make sure each segment starts with a color)");
"You can also use ".show(white_dim);
"show! ".show(pink);
"and ".show(purple_bold);
"showln! ".show(cyan);
" macros to print random text segments with formatting.".showln(white_dim);
divider_vibrant();
divider_vibrant();
"Bold and colorful text: ".show(red);
"Bold".show(bold);
", ".show(blink);
"Italic".show(italic);
", and ".show(red);
"Underlined".showln(underline);
"Vibrant text example: ".vibrant().print();
divider();
"Divider above".style(red).print();
reset_line();
"Reset line used".show(red);
let name = text("What is your name?").unwrap();
showln!(green, "Hello, ", yellow, name, green, "!");
let choices = vec![
choice!("First choice", "This is the first choice", || {
println!("First choice selected");
Ok("First choice selected".into())
}),
choice!("Second choice", "This is the second choice", || {
println!("Second choice selected");
Ok("Second choice selected".into())
}),
choice!("Third choice", "This is the third choice", || {
println!("Third choice selected");
Ok("Third choice selected".into())
}),
];
let selected : Choice<String> = selection!("Select an option", &choices).unwrap();
showln!(gray, "You selected: ", yellow, selected.name);
selected.run().unwrap();
}