#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[non_exhaustive]
pub enum ThemeVariant {
Light,
Dark,
HighContrast,
}
impl ThemeVariant {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
ThemeVariant::Light => "light",
ThemeVariant::Dark => "dark",
ThemeVariant::HighContrast => "high-contrast",
}
}
#[must_use]
pub const fn heading(self) -> &'static str {
match self {
ThemeVariant::Light => "Light",
ThemeVariant::Dark => "Dark",
ThemeVariant::HighContrast => "High Contrast",
}
}
}
impl std::fmt::Display for ThemeVariant {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[non_exhaustive]
pub enum Contrast {
Low,
Standard,
High,
}
impl Contrast {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Contrast::Low => "low",
Contrast::Standard => "standard",
Contrast::High => "high",
}
}
#[must_use]
pub const fn badge(self) -> &'static str {
match self {
Contrast::Low => "low",
Contrast::Standard => "OK",
Contrast::High => "AA",
}
}
}
impl std::fmt::Display for Contrast {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_str())
}
}