freeman 0.1.0

A terminal-based API testing tool - like Postman, but for your terminal
Documentation
//! Popup overlay rendering.

use ratatui::{prelude::*, widgets::*};
use crate::messages::RenderState;
use crate::tui::chrome::centered_rect;

pub fn draw_help_popup(f: &mut Frame, area: Rect) {
    let popup_area = centered_rect(60, 70, area);
    let help_text = r#"
 FREEMAN TUI - Keyboard Shortcuts

 NAVIGATION
   Tab / Shift+Tab    Switch panels
   ↑ / ↓              Scroll response / navigate headers
   Ctrl+↑ / Ctrl+↓    Navigate history

 REQUEST
   m                  Cycle HTTP method
   s / Enter          Send request
   e                  Edit current field
   i                  Import cURL (URL panel)
   c                  Copy as cURL

 HEADERS
   a                  Add new header
   d                  Delete selected header
   Enter              Toggle header enabled

 AUTH
   t                  Cycle auth type (None/Bearer/Basic)
   Tab                Switch between username/password

 GENERAL
   ?                  Toggle this help
   q / Ctrl+C         Quit

 Press any key to close...
"#;
    let block = Block::default().borders(Borders::ALL).title(" Help ").style(Style::default().bg(Color::Black));
    let help = Paragraph::new(help_text).block(block).wrap(Wrap { trim: false });
    f.render_widget(Clear, popup_area);
    f.render_widget(help, popup_area);
}

pub fn draw_curl_import_popup(f: &mut Frame, state: &RenderState, area: Rect) {
    let popup_area = centered_rect(80, 30, area);
    let block = Block::default().borders(Borders::ALL).title(" Import cURL (Enter to import, Esc to cancel) ").style(Style::default().bg(Color::Black));
    let content = if state.http.curl_import_buffer.is_empty() { "Paste cURL command here..." } else { &state.http.curl_import_buffer };
    let input = Paragraph::new(content).block(block).wrap(Wrap { trim: false });
    f.render_widget(Clear, popup_area);
    f.render_widget(input, popup_area);
}

pub fn draw_workspace_input_popup(f: &mut Frame, state: &RenderState, area: Rect) {
    let popup_area = centered_rect(60, 20, area);
    let block = Block::default().borders(Borders::ALL).title(" 📂 Open Workspace (Enter to load, Esc to cancel) ").style(Style::default().bg(Color::Black));
    let content = if state.http.workspace_path_input.is_empty() { "Enter project directory path...\n\nExample: ~/projects/my-api" } else { &state.http.workspace_path_input };
    let input = Paragraph::new(content).block(block).wrap(Wrap { trim: false });
    f.render_widget(Clear, popup_area);
    f.render_widget(input, popup_area);
}