feat: add a new [notify] section to the theme.toml to configure the notify component's style (#749)

This commit is contained in:
little camel 2024-02-29 12:02:27 +08:00 committed by GitHub
parent 4d8e276a6f
commit 73b7e5acf7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 32 additions and 4 deletions

View file

@ -149,6 +149,21 @@ footer = { fg = "black", bg = "white" }
# : }}}
# : Notify {{{
[notify]
title_info = { fg = "green" }
title_warn = { bg = "yellow" }
title_error = { fg = "red" }
# Icons
icon_info = ""
icon_warn = ""
icon_error = ""
# : }}}
# : File-specific styles {{{
[filetype]

View file

@ -18,6 +18,7 @@ pub struct Theme {
pub tasks: Tasks,
pub which: Which,
pub help: Help,
pub notify: Notify,
// File-specific styles
#[serde(rename = "filetype", deserialize_with = "Filetype::deserialize", skip_serializing)]
@ -160,3 +161,14 @@ pub struct Help {
pub hovered: Style,
pub footer: Style,
}
#[derive(Deserialize, Serialize)]
pub struct Notify {
pub title_info: Style,
pub title_warn: Style,
pub title_error: Style,
pub icon_info: String,
pub icon_warn: String,
pub icon_error: String,
}

View file

@ -1,6 +1,7 @@
use std::rc::Rc;
use ratatui::{buffer::Buffer, layout::{self, Constraint, Offset, Rect}, style::{Style, Stylize}, widgets::{Block, BorderType, Paragraph, Widget, Wrap}};
use ratatui::{buffer::Buffer, layout::{self, Constraint, Offset, Rect}, widgets::{Block, BorderType, Paragraph, Widget, Wrap}};
use yazi_config::THEME;
use yazi_core::notify::{Level, Message};
use crate::{widgets::Clear, Ctx};
@ -42,9 +43,9 @@ impl<'a> Widget for Layout<'a> {
for (i, m) in notify.messages.iter().enumerate().take(limit) {
let (icon, style) = match m.level {
Level::Info => ("", Style::default().green()),
Level::Warn => ("", Style::default().yellow()),
Level::Error => ("", Style::default().red()),
Level::Info => (&THEME.notify.icon_info, THEME.notify.title_info),
Level::Warn => (&THEME.notify.icon_warn, THEME.notify.title_warn),
Level::Error => (&THEME.notify.icon_error, THEME.notify.title_error),
};
let mut rect =