use crate::private::Sealed;
#[derive(Debug, Clone, Copy, Default)]
pub struct ExtraSmall;
impl Sealed for ExtraSmall {}
#[derive(Debug, Clone, Copy, Default)]
pub struct Small;
impl Sealed for Small {}
#[derive(Debug, Clone, Copy, Default)]
pub struct Medium;
impl Sealed for Medium {}
#[derive(Debug, Clone, Copy, Default)]
pub struct Large;
impl Sealed for Large {}
#[derive(Debug, Clone, Copy, Default)]
pub struct ExtraLarge;
impl Sealed for ExtraLarge {}
pub trait ComponentSize: Sealed + Copy + Default {
const NAME: &'static str;
const HEIGHT: f32;
const PADDING_H: f32;
const PADDING_V: f32;
const FONT_SIZE: f32;
}
impl ComponentSize for ExtraSmall {
const NAME: &'static str = "xs";
const HEIGHT: f32 = 24.0;
const PADDING_H: f32 = 8.0;
const PADDING_V: f32 = 4.0;
const FONT_SIZE: f32 = 12.0;
}
impl ComponentSize for Small {
const NAME: &'static str = "sm";
const HEIGHT: f32 = 32.0;
const PADDING_H: f32 = 12.0;
const PADDING_V: f32 = 6.0;
const FONT_SIZE: f32 = 14.0;
}
impl ComponentSize for Medium {
const NAME: &'static str = "md";
const HEIGHT: f32 = 40.0;
const PADDING_H: f32 = 16.0;
const PADDING_V: f32 = 8.0;
const FONT_SIZE: f32 = 14.0;
}
impl ComponentSize for Large {
const NAME: &'static str = "lg";
const HEIGHT: f32 = 48.0;
const PADDING_H: f32 = 20.0;
const PADDING_V: f32 = 10.0;
const FONT_SIZE: f32 = 16.0;
}
impl ComponentSize for ExtraLarge {
const NAME: &'static str = "xl";
const HEIGHT: f32 = 56.0;
const PADDING_H: f32 = 24.0;
const PADDING_V: f32 = 12.0;
const FONT_SIZE: f32 = 18.0;
}