1use std::io::Result;
2
3use cli_prompts::{
4 DisplayPrompt,
5 prompts::{Confirmation, Input},
6 style::{Color, ConfirmationStyle, Formatting, InputStyle, LabelStyle},
7};
8
9fn name_validation(input: &str) -> std::result::Result<String, String> {
10 if input.len() > 0 {
11 Ok(input.to_string())
12 } else {
13 Err(String::from("Name must not be empty"))
14 }
15}
16
17fn main() -> Result<()> {
18 let label_style = LabelStyle::default()
19 .prefix("*")
20 .prefix_formatting(Formatting::default().foreground_color(Color::Cyan))
21 .prompt_formatting(
22 Formatting::default()
23 .bold()
24 .underline()
25 .foreground_color(Color::Magenta),
26 );
27 let input_formatting = Formatting::default().foreground_color(Color::Cyan);
28 let submitted_formatting = Formatting::default().foreground_color(Color::DarkCyan);
29
30 let name = Input::new("Enter your name", name_validation)
31 .style(
32 InputStyle::default()
33 .label_style(label_style.clone())
34 .input_formatting(input_formatting.clone())
35 .submitted_formatting(submitted_formatting.clone()),
36 )
37 .display();
38 let coffee = Confirmation::new("Do you want a cup of coffee")
39 .style(
40 ConfirmationStyle::default()
41 .label_style(label_style.clone())
42 .input_formatting(input_formatting.clone())
43 .submitted_formatting(submitted_formatting.clone()),
44 )
45 .display();
46
47 println!("Name: {:?}", name);
48 println!("Coffee: {:?}", coffee);
49
50 Ok(())
51}