mod constructors;
mod methods;
mod tree_widgets;
use ratatui::layout::Rect;
use ratatui_toolkit::{
AIChat, AppTheme, CodeDiff, InputState, MarkdownWidget, MenuBar, MessageRole, MessageStore,
ResizableGridWidget, TermTui, ThemePicker, ToastManager,
};
use std::time::Instant;
use super::demo_tab::DemoTab;
use crate::app::tree_widgets::{FileSystemTreeWidget, TreeViewWidget};
#[derive(Clone, Copy, PartialEq, Eq)]
pub enum TreePaneFocus {
FileTree,
ComponentTree,
}
pub struct App {
pub current_tab: DemoTab,
pub menu_bar: MenuBar,
pub code_diff: CodeDiff,
pub file_tree: FileSystemTreeWidget,
pub component_tree: TreeViewWidget,
pub tree_focus: TreePaneFocus,
pub show_dialog: bool,
pub dialog_type: ratatui_toolkit::DialogType,
pub markdown_widget: MarkdownWidget<'static>,
pub show_theme_picker: bool,
pub theme_picker_index: usize,
pub theme_filter: String,
pub saved_theme_index: usize,
pub current_theme: AppTheme,
pub original_theme: Option<AppTheme>,
pub theme_picker: ThemePicker,
pub terminal: Option<TermTui>,
pub terminal2: Option<TermTui>,
pub terminal_split: ResizableGridWidget,
pub terminal_content_area: Option<Rect>,
pub grid_split_widget: ResizableGridWidget,
pub grid_content_area: Option<Rect>,
pub ai_chat: AIChat,
pub toast_manager: ToastManager,
pub start_time: Instant,
}