#[derive(Debug, Clone)]
pub enum BackgroundFill {
Solid,
Glass {
blur_radius: f64,
},
Texture {
asset_id: &'static str,
},
}
pub trait DropdownStyle {
fn radius(&self) -> f64;
fn border_width(&self) -> f64;
fn padding(&self) -> f64;
fn item_height(&self) -> f64;
fn header_height(&self) -> f64;
fn separator_height(&self) -> f64;
fn item_padding_x(&self) -> f64;
fn font_size(&self) -> f64;
fn font_size_subtitle(&self) -> f64;
fn icon_size(&self) -> f64;
fn icon_text_gap(&self) -> f64;
fn shadow_offset(&self) -> (f64, f64);
fn toggle_track_w(&self) -> f64;
fn toggle_track_h(&self) -> f64;
fn toggle_thumb_d(&self) -> f64;
fn accent_bar_w(&self) -> f64;
fn accent_bar_inset_y(&self) -> f64;
fn item_hover_radius(&self) -> f64;
fn submenu_gap(&self) -> f64;
fn max_visible_items(&self) -> usize;
fn min_width(&self) -> f64;
fn cell_size(&self) -> f64;
fn cell_gap(&self) -> f64;
fn row_label_width(&self) -> f64;
fn checkbox_size(&self) -> f64;
fn background_fill(&self) -> BackgroundFill {
BackgroundFill::Solid
}
}
#[derive(Default)]
pub struct DefaultDropdownStyle;
impl DropdownStyle for DefaultDropdownStyle {
fn radius(&self) -> f64 { 4.0 }
fn border_width(&self) -> f64 { 1.0 }
fn padding(&self) -> f64 { 4.0 }
fn item_height(&self) -> f64 { 32.0 }
fn header_height(&self) -> f64 { 28.0 }
fn separator_height(&self) -> f64 { 9.0 }
fn item_padding_x(&self) -> f64 { 12.0 }
fn font_size(&self) -> f64 { 13.0 }
fn font_size_subtitle(&self) -> f64 { 12.0 }
fn icon_size(&self) -> f64 { 24.0 }
fn icon_text_gap(&self) -> f64 { 6.0 }
fn shadow_offset(&self) -> (f64, f64) { (2.0, 4.0) }
fn toggle_track_w(&self) -> f64 { 36.0 }
fn toggle_track_h(&self) -> f64 { 18.0 }
fn toggle_thumb_d(&self) -> f64 { 14.0 }
fn accent_bar_w(&self) -> f64 { 2.0 }
fn accent_bar_inset_y(&self) -> f64 { 4.0 }
fn item_hover_radius(&self) -> f64 { 2.0 }
fn submenu_gap(&self) -> f64 { 2.0 }
fn max_visible_items(&self) -> usize { 0 }
fn min_width(&self) -> f64 { 180.0 }
fn cell_size(&self) -> f64 { 32.0 }
fn cell_gap(&self) -> f64 { 2.0 }
fn row_label_width(&self) -> f64 { 16.0 }
fn checkbox_size(&self) -> f64 { 14.0 }
}