pub mod confirm;
pub mod group_by_picker;
pub mod overlay;
pub mod source_picker;
pub mod stack;
use crossterm::event::{KeyCode, MouseEvent};
use ratatui::{layout::Rect, Frame};
use crate::tui::themes::Theme;
pub use confirm::ConfirmDialog;
pub use group_by_picker::GroupByPickerDialog;
pub use source_picker::ClientPickerDialog;
pub use stack::DialogStack;
pub enum DialogResult {
None,
Close,
#[allow(dead_code)]
Replace(Box<dyn DialogContent>),
}
pub trait DialogContent {
fn desired_size(&self, viewport: Rect) -> (u16, u16);
fn render(&self, frame: &mut Frame, area: Rect, theme: &Theme);
fn handle_key(&mut self, _key: KeyCode) -> DialogResult {
DialogResult::None
}
fn handle_mouse(&mut self, _event: MouseEvent, _area: Rect) -> DialogResult {
DialogResult::None
}
}