vtcode_tui/core_tui/widgets/
panel.rs1use ratatui::style::{Modifier, Style};
7
8pub use vtcode_design::panel::{Panel, PanelStyleProvider, PanelStyles};
9
10use crate::ui::tui::session::{styling::SessionStyles, terminal_capabilities};
11
12impl PanelStyleProvider for SessionStyles {
15 fn default_style(&self) -> Style {
16 SessionStyles::default_style(self)
17 }
18
19 fn accent_style(&self) -> Style {
20 SessionStyles::accent_style(self)
21 }
22
23 fn border_style(&self) -> Style {
24 SessionStyles::border_style(self)
25 }
26}
27
28impl PanelStyles for SessionStyles {
30 fn muted_style(&self) -> Style {
31 self.default_style().add_modifier(Modifier::DIM)
32 }
33
34 fn title_style(&self) -> Style {
35 self.accent_style().add_modifier(Modifier::BOLD)
36 }
37
38 fn border_active_style(&self) -> Style {
39 self.border_style()
40 .remove_modifier(Modifier::DIM)
41 .add_modifier(Modifier::BOLD)
42 }
43
44 fn divider_style(&self) -> Style {
45 self.border_style().add_modifier(Modifier::DIM)
46 }
47}
48
49pub fn new_panel<'a>(styles: &'a SessionStyles) -> Panel<'a, SessionStyles> {
54 Panel::new(styles).border_type(terminal_capabilities::get_border_type())
55}