use super::*;
pub(crate) fn draw_help(f: &mut Frame, app: &App, area: Rect) {
let theme = &app.theme;
let text = vec![
Line::from(Span::styled(
"Void - keyboard shortcuts",
Style::default()
.fg(theme.accent)
.add_modifier(Modifier::BOLD),
)),
Line::from(""),
Line::from(Span::styled("Global", Style::default().fg(theme.accent))),
Line::from(" Tab / 1-5 Switch tab (Dashboard, Tasks, Stats, Settings, Help)"),
Line::from(" q / Esc Quit (auto-saves)"),
Line::from(" Ctrl-S Export JSON backup"),
Line::from(""),
Line::from(Span::styled("Timer", Style::default().fg(theme.accent))),
Line::from(" s / Space Start / resume timer"),
Line::from(" p Pause timer"),
Line::from(" r Reset timer"),
Line::from(" n Skip (logs elapsed; does not advance pomodoro cycle)"),
Line::from(" E End session (pause + summary)"),
Line::from(" m Cycle mode (Focus / Short / Long / Custom)"),
Line::from(" + / = Increase duration by 1 min"),
Line::from(" - Decrease duration by 1 min"),
Line::from(" z Toggle zen mode (distraction-free timer)"),
Line::from(" Enter Cycle active task status (Todo → Active → Done)"),
Line::from(" x Mark active task done"),
Line::from(""),
Line::from(Span::styled("Pomodoro", Style::default().fg(theme.accent))),
Line::from(" Cycle position persists across restarts"),
Line::from(" After focus, auto-switches to break (enable auto-start in Settings)"),
Line::from(" Long break every N focus sessions (configurable)"),
Line::from(" All tasks done → free focus, pause, or prompt (Settings)"),
Line::from(""),
Line::from(Span::styled("Stats", Style::default().fg(theme.accent))),
Line::from(" j / k Select recent session"),
Line::from(" d Delete selected session"),
Line::from(" + / - Adjust session minutes"),
Line::from(" E End session"),
Line::from(""),
Line::from(Span::styled("Tasks", Style::default().fg(theme.accent))),
Line::from(" a Add task (title, notes, estimate, due, tags)"),
Line::from(" e Edit selected task"),
Line::from(" d Delete selected task (with confirmation)"),
Line::from(" Enter Cycle status: Pending → In Progress → Done"),
Line::from(" Space Set as active task for timer"),
Line::from(" f Start focus on selected task"),
Line::from(" t Toggle today-queue flag"),
Line::from(" g Cycle filter (All / Open / Done / Today)"),
Line::from(" / Search tasks by title, notes, or tags"),
Line::from(" 1 / 2 / 3 Set priority Low / Med / High"),
Line::from(" j / k Navigate list"),
Line::from(" Ctrl+j/k Reorder task in queue"),
Line::from(""),
Line::from(Span::styled("Settings", Style::default().fg(theme.accent))),
Line::from(" Up / Down Navigate"),
Line::from(" Enter / +- Increment value"),
Line::from(" Left / - Decrement value"),
Line::from(" Theme Cycle Dark / Light / Polaris / Matrix in Settings"),
Line::from(""),
Line::from(Span::styled("Data", Style::default().fg(theme.accent))),
Line::from(" Data persists locally in SQLite (~/.local/share/void/)."),
Line::from(" Ctrl-S or Settings exports a JSON backup."),
Line::from(" Void never sends your tasks anywhere — fully offline."),
];
let block = Block::default()
.title(Span::styled(
format!(" {} Help ", app.icons.help),
Style::default().fg(theme.accent),
))
.borders(Borders::ALL)
.border_type(BorderType::Rounded)
.border_style(Style::default().fg(theme.dim));
f.render_widget(
Paragraph::new(text).block(block).wrap(Wrap { trim: false }),
area,
);
}