hitman 0.12.1

A command line tool for hitting API endpoints
Documentation
use ratatui::{
    layout::{Alignment, Rect},
    style::Stylize,
    text::{Line, Text},
    widgets::{Block, BorderType, Clear, Padding, Paragraph},
    Frame,
};

use super::{centered, keymap::keymap_list, Component};

pub struct Help;

impl Component for Help {
    fn render_ui(&mut self, frame: &mut Frame, area: Rect) {
        let lines: Vec<_> = keymap_list()
            .into_iter()
            .map(|(a, b)| Line::from(format!("{a:-14} {b}")))
            .collect();

        let longest = lines.iter().map(Line::width).max().unwrap_or(0);

        let inner_area =
            centered(area, 4 + longest as u16, 2 + lines.len() as u16);

        let content = Paragraph::new(Text::from(lines))
            .block(
                Block::bordered()
                    .title("Keyboard shortcuts")
                    .title_alignment(Alignment::Center)
                    .border_type(BorderType::Rounded)
                    .padding(Padding::horizontal(1))
                    .cyan(),
            )
            .white();

        frame.render_widget(Clear, inner_area);
        frame.render_widget(content, inner_area);
    }
}