orbital-theme 0.1.1

Theme provider and design tokens for Orbital
Documentation
use crate::{Density, ThemeMode};

#[derive(Clone, Debug, Default)]
pub struct BrandPalette {
    pub primary: String,
}

#[derive(Clone, Debug, Default)]
pub struct ThemeOverrides {
    pub mode: Option<ThemeMode>,
    pub brand: Option<BrandPalette>,
    pub density: Option<Density>,
    pub typography: Option<TypographyOverrides>,
    pub spacing: Option<SpacingScale>,
    pub elevation: Option<ElevationScale>,
    pub shape: Option<ShapeOverrides>,
}

#[derive(Clone, Debug, Default)]
pub struct TypographyOverrides {
    pub font_family_base: Option<String>,
    pub font_family_monospace: Option<String>,
    pub font_family_numeric: Option<String>,
    pub font_family_display: Option<String>,
    pub font_size_scale: Option<f32>,
    pub line_height_scale: Option<f32>,
}

#[derive(Clone, Copy, Debug)]
pub struct SpacingScale {
    pub multiplier: f32,
}

#[derive(Clone, Copy, Debug)]
pub struct ElevationScale {
    pub multiplier: f32,
}

impl Default for ElevationScale {
    fn default() -> Self {
        Self { multiplier: 1.0 }
    }
}

#[derive(Clone, Copy, Debug, Default)]
pub struct ShapeOverrides {
    pub border_radius_scale: Option<f32>,
}