Feat: begin slight refactoring

This commit is contained in:
2026-02-01 12:38:48 +01:00
parent 5b4a6ddd14
commit c356aebfde
39 changed files with 4699 additions and 3168 deletions

View File

@@ -1,7 +1,6 @@
use crate::theme::{browser, input, ui};
use ratatui::style::Color;
use crate::theme;
use ratatui::layout::{Constraint, Layout, Rect};
use ratatui::style::Style;
use ratatui::style::{Color, Style};
use ratatui::text::{Line, Span};
use ratatui::widgets::Paragraph;
use ratatui::Frame;
@@ -14,7 +13,7 @@ pub struct FileBrowserModal<'a> {
entries: &'a [(String, bool, bool)],
selected: usize,
scroll_offset: usize,
border_color: Color,
border_color: Option<Color>,
width: u16,
height: u16,
}
@@ -27,7 +26,7 @@ impl<'a> FileBrowserModal<'a> {
entries,
selected: 0,
scroll_offset: 0,
border_color: ui::TEXT_PRIMARY,
border_color: None,
width: 60,
height: 16,
}
@@ -44,7 +43,7 @@ impl<'a> FileBrowserModal<'a> {
}
pub fn border_color(mut self, c: Color) -> Self {
self.border_color = c;
self.border_color = Some(c);
self
}
@@ -59,10 +58,13 @@ impl<'a> FileBrowserModal<'a> {
}
pub fn render_centered(self, frame: &mut Frame, term: Rect) {
let colors = theme::get();
let border_color = self.border_color.unwrap_or(colors.ui.text_primary);
let inner = ModalFrame::new(self.title)
.width(self.width)
.height(self.height)
.border_color(self.border_color)
.border_color(border_color)
.render_centered(frame, term);
let rows = Layout::vertical([Constraint::Length(1), Constraint::Min(1)]).split(inner);
@@ -71,8 +73,8 @@ impl<'a> FileBrowserModal<'a> {
frame.render_widget(
Paragraph::new(Line::from(vec![
Span::raw("> "),
Span::styled(self.input, Style::new().fg(input::TEXT)),
Span::styled("", Style::new().fg(input::CURSOR)),
Span::styled(self.input, Style::new().fg(colors.input.text)),
Span::styled("", Style::new().fg(colors.input.cursor)),
])),
rows[0],
);
@@ -97,13 +99,13 @@ impl<'a> FileBrowserModal<'a> {
format!("{prefix}{name}")
};
let color = if is_selected {
browser::SELECTED
colors.browser.selected
} else if *is_dir {
browser::DIRECTORY
colors.browser.directory
} else if *is_cagire {
browser::PROJECT_FILE
colors.browser.project_file
} else {
browser::FILE
colors.browser.file
};
Line::from(Span::styled(display, Style::new().fg(color)))
})