use floem::{peniko::Color, style::Style};
use crate::widgets::{
badge::BadgeProps, button::ButtonProps, checkbox::CheckboxProps, common_props::OxyVariant,
radio_button::RadioProps, text_header::HeaderProps, text_input::InputProps,
toggle::ToggleProps, tooltip::TooltipProps,
};
pub struct DefaultThemeProps {
pub get_variant_colors: fn(OxyVariant) -> Color,
pub get_hover_variant_colors: fn(OxyVariant) -> Color,
pub get_active_variant_colors: fn(OxyVariant) -> Color,
pub light_text_color: Color,
pub dark_text_color: Color,
pub __default_accent: Color,
}
pub trait ThemeStyling {
fn theme_defaults(&self) -> DefaultThemeProps;
fn get_button_style(&self, button_props: ButtonProps) -> Box<dyn Fn(Style) -> Style + '_>;
fn get_checkbox_style(&self, checkbox_props: CheckboxProps)
-> Box<dyn Fn(Style) -> Style + '_>;
fn get_input_style(&self, checkbox_props: InputProps) -> Box<dyn Fn(Style) -> Style + '_>;
fn get_toggle_style(&self, toggle_props: ToggleProps) -> Box<dyn Fn(Style) -> Style + '_>;
fn get_radio_style(
&self,
radio_props: RadioProps,
) -> (
Box<dyn Fn(Style) -> Style + '_>,
Box<dyn Fn(Style) -> Style + '_>,
);
fn get_header_style(&self, header_props: HeaderProps) -> Box<dyn Fn(Style) -> Style + '_>;
fn get_divider_style(&self) -> Box<dyn Fn(Style) -> Style + '_>;
fn get_tooltip_style(&self, tooltip_props: TooltipProps) -> Box<dyn Fn(Style) -> Style + '_>;
fn get_badge_style(&self, badge_props: BadgeProps) -> Box<dyn Fn(Style) -> Style + '_>;
}