summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorpml68 <contact@pml68.dev>2025-07-22 21:19:51 +0200
committerpml68 <contact@pml68.dev>2025-07-22 21:19:51 +0200
commit84a8518ade52c49135ec8beb0f14025f7220e8d0 (patch)
tree0522e6c01e1d127c121e9446994cd583b7488563 /src
parentstyle: better Cargo.toml formatting [skip ci] (diff)
downloadiced-builder-84a8518ade52c49135ec8beb0f14025f7220e8d0.tar.gz
feat: better button styling for "unsaved changes" dialog
Diffstat (limited to '')
-rw-r--r--src/dialog.rs11
-rw-r--r--src/widget.rs1
-rw-r--r--src/widget/button.rs15
3 files changed, 24 insertions, 3 deletions
diff --git a/src/dialog.rs b/src/dialog.rs
index 3a79dd4..c5e008c 100644
--- a/src/dialog.rs
+++ b/src/dialog.rs
@@ -1,10 +1,12 @@
use std::borrow::Cow;
-use iced::widget::text;
+use iced::widget::{Space, text};
use iced_dialog::button;
+use iced_material::button::filled_tonal;
use crate::Message;
use crate::types::Element;
+use crate::widget::button::danger;
pub const UNSAVED_CHANGES_TITLE: &str = "Hold on for a sec!";
pub const WARNING_TITLE: &str = "Heads up!";
@@ -31,8 +33,11 @@ impl From<Action> for Vec<Element<'_, Message>> {
Action::None => vec![],
Action::Close => vec![button("Close", Message::DialogYes).into()],
Action::UnsavedChanges(_) => vec![
- button("Don't Save", Message::DialogNo).into(),
- button("Save", Message::DialogYes).into(),
+ button("Don't Save", Message::DialogNo).style(danger).into(),
+ Space::with_width(20).into(),
+ button("Save", Message::DialogYes)
+ .style(filled_tonal)
+ .into(),
button("Cancel", Message::DialogCancel).into(),
],
}
diff --git a/src/widget.rs b/src/widget.rs
index 5ebe1f9..bb12de0 100644
--- a/src/widget.rs
+++ b/src/widget.rs
@@ -3,6 +3,7 @@ use iced_material::Theme;
use crate::types::Element;
+pub mod button;
pub mod tip {
pub use super::tooltip::Position;
}
diff --git a/src/widget/button.rs b/src/widget/button.rs
new file mode 100644
index 0000000..5a1975b
--- /dev/null
+++ b/src/widget/button.rs
@@ -0,0 +1,15 @@
+use iced::widget::button::{Status, Style};
+use iced_material::Theme;
+use iced_material::button::styled;
+
+pub fn danger(theme: &Theme, status: Status) -> Style {
+ let primary = theme.colors().error;
+
+ let foreground = primary.on_error;
+ let background = primary.color;
+ let disabled = theme.colors().surface.on_surface;
+
+ let shadow_color = theme.colors().shadow;
+
+ styled(background, foreground, disabled, shadow_color, 0, status)
+}