pub trait Catalog {
type Class<'a>;
// Required methods
fn default<'a>() -> Self::Class<'a>;
fn style(&self, class: &Self::Class<'_>, status: Status) -> Style;
}
Expand description
The theme catalog of a Button
.
All themes that can be used with Button
must implement this trait.
§Example
#[derive(Debug, Default)]
pub enum ButtonClass {
#[default]
Primary,
Secondary,
Danger
}
impl Catalog for MyTheme {
type Class<'a> = ButtonClass;
fn default<'a>() -> Self::Class<'a> {
ButtonClass::default()
}
fn style(&self, class: &Self::Class<'_>, status: Status) -> Style {
let mut style = Style::default();
match class {
ButtonClass::Primary => {
style.background = Some(Background::Color(Color::from_rgb(0.529, 0.808, 0.921)));
},
ButtonClass::Secondary => {
style.background = Some(Background::Color(Color::WHITE));
},
ButtonClass::Danger => {
style.background = Some(Background::Color(Color::from_rgb(0.941, 0.502, 0.502)));
},
}
style
}
}
Although, in order to use Button::style
with MyTheme
, Catalog::Class
must implement
From<StyleFn<'_, MyTheme>>
.
Required Associated Types§
Required Methods§
Object Safety§
This trait is not object safe.