feat(theme): border style

This commit is contained in:
sand4rt 2025-04-24 17:36:50 +02:00
parent bfad57d86f
commit b67bfa71e1
No known key found for this signature in database
GPG key ID: 8751B9BA696B12FB
3 changed files with 73 additions and 63 deletions

View file

@ -10,26 +10,26 @@ use super::{Filetype, Flavor, Icon};
#[derive(Deserialize, DeserializeOver1, Serialize)] #[derive(Deserialize, DeserializeOver1, Serialize)]
pub struct Theme { pub struct Theme {
pub flavor: Flavor, pub flavor: Flavor,
#[serde(rename = "manager")] #[serde(rename = "manager")]
pub mgr: Mgr, // TODO: Remove `serde(rename)` pub mgr: Mgr, // TODO: Remove `serde(rename)`
pub mode: Mode, pub mode: Mode,
pub status: Status, pub status: Status,
pub which: Which, pub which: Which,
pub confirm: Confirm, pub confirm: Confirm,
pub spot: Spot, pub spot: Spot,
pub notify: Notify, pub notify: Notify,
pub pick: Pick, pub pick: Pick,
pub input: Input, pub input: Input,
pub cmp: Cmp, pub cmp: Cmp,
pub tasks: Tasks, pub tasks: Tasks,
pub help: Help, pub help: Help,
// File-specific styles // File-specific styles
#[serde(skip_serializing)] #[serde(skip_serializing)]
pub filetype: Filetype, pub filetype: Filetype,
#[serde(skip_serializing)] #[serde(skip_serializing)]
pub icon: Icon, pub icon: Icon,
} }
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
@ -37,35 +37,35 @@ pub struct Mgr {
cwd: Style, cwd: Style,
// Hovered // Hovered
hovered: Style, hovered: Style,
preview_hovered: Style, preview_hovered: Style,
// Find // Find
find_keyword: Style, find_keyword: Style,
find_position: Style, find_position: Style,
// Symlink // Symlink
symlink_target: Style, symlink_target: Style,
// Marker // Marker
marker_copied: Style, marker_copied: Style,
marker_cut: Style, marker_cut: Style,
marker_marked: Style, marker_marked: Style,
marker_selected: Style, marker_selected: Style,
// Tab // Tab
tab_active: Style, tab_active: Style,
tab_inactive: Style, tab_inactive: Style,
tab_width: u8, tab_width: u8,
// Count // Count
count_copied: Style, count_copied: Style,
count_cut: Style, count_cut: Style,
count_selected: Style, count_selected: Style,
// Border // Border
pub border_symbol: String, pub border_symbol: String,
pub border_style: Style, pub border_style: Style,
// Highlighting // Highlighting
pub syntect_theme: PathBuf, pub syntect_theme: PathBuf,
@ -74,37 +74,37 @@ pub struct Mgr {
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
pub struct Mode { pub struct Mode {
pub normal_main: Style, pub normal_main: Style,
pub normal_alt: Style, pub normal_alt: Style,
pub select_main: Style, pub select_main: Style,
pub select_alt: Style, pub select_alt: Style,
pub unset_main: Style, pub unset_main: Style,
pub unset_alt: Style, pub unset_alt: Style,
} }
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
pub struct Status { pub struct Status {
pub overall: Style, pub overall: Style,
pub sep_left: StatusSep, pub sep_left: StatusSep,
pub sep_right: StatusSep, pub sep_right: StatusSep,
// Permissions // Permissions
pub perm_sep: Style, pub perm_sep: Style,
pub perm_type: Style, pub perm_type: Style,
pub perm_read: Style, pub perm_read: Style,
pub perm_write: Style, pub perm_write: Style,
pub perm_exec: Style, pub perm_exec: Style,
// Progress // Progress
pub progress_label: Style, pub progress_label: Style,
pub progress_normal: Style, pub progress_normal: Style,
pub progress_error: Style, pub progress_error: Style,
} }
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
pub struct StatusSep { pub struct StatusSep {
pub open: String, pub open: String,
pub close: String, pub close: String,
} }
@ -116,83 +116,83 @@ pub struct Which {
pub rest: Style, pub rest: Style,
pub desc: Style, pub desc: Style,
pub separator: String, pub separator: String,
pub separator_style: Style, pub separator_style: Style,
} }
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
pub struct Confirm { pub struct Confirm {
pub border: Style, pub border: BorderStyle,
pub title: Style, pub title: Style,
pub content: Style, pub content: Style,
pub list: Style, pub list: Style,
pub btn_yes: Style, pub btn_yes: Style,
pub btn_no: Style, pub btn_no: Style,
pub btn_labels: [String; 2], pub btn_labels: [String; 2],
} }
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
pub struct Spot { pub struct Spot {
pub border: Style, pub border: BorderStyle,
pub title: Style, pub title: Style,
pub tbl_col: Style, pub tbl_col: Style,
pub tbl_cell: Style, pub tbl_cell: Style,
} }
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
pub struct Notify { pub struct Notify {
pub title_info: Style, pub title_info: Style,
pub title_warn: Style, pub title_warn: Style,
pub title_error: Style, pub title_error: Style,
pub icon_info: String, pub icon_info: String,
pub icon_warn: String, pub icon_warn: String,
pub icon_error: String, pub icon_error: String,
} }
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
pub struct Pick { pub struct Pick {
pub border: Style, pub border: BorderStyle,
pub active: Style, pub active: Style,
pub inactive: Style, pub inactive: Style,
} }
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
pub struct Input { pub struct Input {
pub border: Style, pub border: BorderStyle,
pub title: Style, pub title: Style,
pub value: Style, pub value: Style,
pub selected: Style, pub selected: Style,
} }
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
pub struct Cmp { pub struct Cmp {
pub border: Style, pub border: BorderStyle,
pub active: Style, pub active: Style,
pub inactive: Style, pub inactive: Style,
pub icon_file: String, pub icon_file: String,
pub icon_folder: String, pub icon_folder: String,
pub icon_command: String, pub icon_command: String,
} }
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
pub struct Tasks { pub struct Tasks {
pub border: Style, pub border: BorderStyle,
pub title: Style, pub title: Style,
pub hovered: Style, pub hovered: Style,
} }
#[derive(Deserialize, DeserializeOver2, Serialize)] #[derive(Deserialize, DeserializeOver2, Serialize)]
pub struct Help { pub struct Help {
pub on: Style, pub on: Style,
pub run: Style, pub run: Style,
pub desc: Style, pub desc: Style,
pub hovered: Style, pub hovered: Style,
pub footer: Style, pub footer: Style,
} }
impl Theme { impl Theme {

View file

@ -0,0 +1,10 @@
use super::Style;
use ratatui::widgets::BorderType;
use serde::{Deserialize, Serialize, Serializer, ser::SerializeMap};
#[derive(Clone, Copy, Debug, Default, Deserialize)]
pub struct BorderStyle {
#[serde(flatten)]
pub style: Style,
pub r#type: BorderType,
}

View file

@ -1 +1 @@
yazi_macro::mod_flat!(color icon style); yazi_macro::mod_flat!(color icon style border_style);