use iced::{button, container, slider, Background, Color}; const ACTIVE: Color = Color::from_rgb( 0x72 as f32 / 255.0, 0x89 as f32 / 255.0, 0xDA as f32 / 255.0, ); const DESTRUCTIVE: Color = Color::from_rgb( 0xC0 as f32 / 255.0, 0x47 as f32 / 255.0, 0x47 as f32 / 255.0, ); const HOVERED: Color = Color::from_rgb( 0x67 as f32 / 255.0, 0x7B as f32 / 255.0, 0xC4 as f32 / 255.0, ); pub struct Container; impl container::StyleSheet for Container { fn style(&self) -> container::Style { container::Style { background: Some(Background::Color(Color::from_rgb8( 0x36, 0x39, 0x3F, ))), text_color: Some(Color::WHITE), ..container::Style::default() } } } pub struct Button; impl button::StyleSheet for Button { fn active(&self) -> button::Style { button::Style { background: Some(Background::Color(ACTIVE)), border_radius: 3, text_color: Color::WHITE, ..button::Style::default() } } fn hovered(&self) -> button::Style { button::Style { background: Some(Background::Color(HOVERED)), text_color: Color::WHITE, ..self.active() } } fn pressed(&self) -> button::Style { button::Style { border_width: 1, border_color: Color::WHITE, ..self.hovered() } } } pub struct Clear; impl button::StyleSheet for Clear { fn active(&self) -> button::Style { button::Style { background: Some(Background::Color(DESTRUCTIVE)), border_radius: 3, text_color: Color::WHITE, ..button::Style::default() } } fn hovered(&self) -> button::Style { button::Style { background: Some(Background::Color(Color { a: 0.5, ..DESTRUCTIVE })), text_color: Color::WHITE, ..self.active() } } fn pressed(&self) -> button::Style { button::Style { border_width: 1, border_color: Color::WHITE, ..self.hovered() } } } pub struct Slider; impl slider::StyleSheet for Slider { fn active(&self) -> slider::Style { slider::Style { rail_colors: (ACTIVE, Color { a: 0.1, ..ACTIVE }), handle: slider::Handle { shape: slider::HandleShape::Circle { radius: 9 }, color: ACTIVE, border_width: 0, border_color: Color::TRANSPARENT, }, } } fn hovered(&self) -> slider::Style { let active = self.active(); slider::Style { handle: slider::Handle { color: HOVERED, ..active.handle }, ..active } } fn dragging(&self) -> slider::Style { let active = self.active(); slider::Style { handle: slider::Handle { color: Color::from_rgb(0.85, 0.85, 0.85), ..active.handle }, ..active } } }