[MIRROR] https://codeberg.org/naomi/nanel
1use iced::{
2 Background, Theme, border,
3 theme::palette,
4 widget::{button, container},
5};
6
7use crate::config::CORNER_RADIUS;
8
9pub fn rounded_container(theme: &Theme) -> container::Style {
10 let palette = theme.extended_palette();
11
12 container::Style {
13 background: Some(palette.background.base.color.into()),
14 border: border::rounded(CORNER_RADIUS),
15 ..container::Style::default()
16 }
17}
18
19pub fn squared_container(theme: &Theme) -> container::Style {
20 let palette = theme.extended_palette();
21
22 container::Style {
23 background: Some(palette.background.base.color.into()),
24 ..container::Style::default()
25 }
26}
27
28fn styled(pair: palette::Pair) -> button::Style {
29 button::Style {
30 background: Some(Background::Color(pair.color)),
31 text_color: pair.text,
32 border: border::rounded(CORNER_RADIUS),
33 ..button::Style::default()
34 }
35}
36
37fn disabled(style: button::Style) -> button::Style {
38 button::Style {
39 background: style
40 .background
41 .map(|background| background.scale_alpha(0.5)),
42 text_color: style.text_color.scale_alpha(0.5),
43 ..style
44 }
45}
46
47pub fn solid(theme: &Theme, status: button::Status) -> button::Style {
48 let palette = theme.extended_palette();
49 let base = styled(palette.primary.strong);
50
51 match status {
52 button::Status::Active | button::Status::Pressed => base,
53 button::Status::Hovered => button::Style {
54 background: Some(Background::Color(palette.primary.base.color)),
55 ..base
56 },
57 button::Status::Disabled => disabled(base),
58 }
59}
60
61pub fn transparent(theme: &Theme, status: button::Status) -> button::Style {
62 let palette = theme.extended_palette();
63 let base = styled(palette.background.base);
64
65 match status {
66 button::Status::Active | button::Status::Pressed => base,
67 button::Status::Hovered => button::Style {
68 background: Some(Background::Color(palette.background.weak.color)),
69 ..base
70 },
71 button::Status::Disabled => disabled(base),
72 }
73}