ratatui_input 0.1.3

Simple to use input widget for ratatui
Documentation
use crossterm::{
    event::{self, KeyCode},
    terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
    ExecutableCommand,
};
use ratatui::{backend::CrosstermBackend, Terminal};
use ratatui_input::{Input, InputState};
use std::io::stdout;

fn main() -> Result<(), std::io::Error> {
    stdout().execute(EnterAlternateScreen)?;
    enable_raw_mode()?;
    let mut terminal = Terminal::new(CrosstermBackend::new(stdout()))?;
    terminal.clear()?;

    let mut state = InputState::default();

    loop {
        terminal.draw(|frame| {
            let area = frame.size();
            let input = Input::default();
            frame.render_stateful_widget(input, area, &mut state);
        })?;
        if event::poll(std::time::Duration::from_millis(16))? {
            let event = event::read()?;
            if let event::Event::Key(key) = event {
                if key.code == KeyCode::Esc {
                    break;
                } else {
                    state.handle_message(event.into());
                }
            }
        }
    }

    stdout().execute(LeaveAlternateScreen)?;
    disable_raw_mode()?;
    Ok(())
}