Skip to main content

vtcode_tui/core_tui/session/modal/
layout.rs

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