Skip to main content

vtcode_tui/core_tui/session/modal/
layout.rs

1use crate::ui::tui::types::SecurePromptConfig;
2use ratatui::prelude::*;
3use ratatui_cheese::input::InputStyles;
4
5use super::state::{ModalListState, ModalSearchState};
6
7pub struct ModalRenderStyles {
8    pub border: Style,
9    pub highlight: Style,
10    pub badge: Style,
11    pub header: Style,
12    pub selectable: Style,
13    pub detail: Style,
14    pub search_match: Style,
15    pub title: Style,
16    pub divider: Style,
17    pub instruction_border: Style,
18    pub instruction_title: Style,
19    pub instruction_bullet: Style,
20    pub instruction_body: Style,
21    pub hint: Style,
22}
23
24pub struct ModalBodyContext<'a, 'b> {
25    pub instructions: &'a [String],
26    pub footer_hint: Option<&'a str>,
27    pub list: Option<&'b mut ModalListState>,
28    pub styles: &'a ModalRenderStyles,
29    pub secure_prompt: Option<&'a SecurePromptConfig>,
30    pub search: Option<&'a ModalSearchState>,
31    pub input: &'a str,
32    pub cursor: usize,
33    pub input_styles: &'a InputStyles,
34}
35
36#[derive(Clone, Copy)]
37pub enum ModalSection {
38    Search,
39    Instructions,
40    Prompt,
41    List,
42}