use std::sync::OnceLock;
use crate::{
SrgbColor,
palette::{Palette, PaletteBuilder, SemanticRole},
};
pub fn mocha() -> &'static Palette {
static MOCHA: OnceLock<Palette> = OnceLock::new();
MOCHA.get_or_init(|| {
PaletteBuilder::new()
.set(
SemanticRole::Background,
SrgbColor::from_u8(0x1e, 0x1e, 0x2e),
) .set(SemanticRole::Surface, SrgbColor::from_u8(0x31, 0x32, 0x44)) .set(SemanticRole::Text, SrgbColor::from_u8(0xcd, 0xd6, 0xf4)) .set(SemanticRole::DimText, SrgbColor::from_u8(0xa6, 0xad, 0xc8)) .set(SemanticRole::Accent, SrgbColor::from_u8(0x89, 0xb4, 0xfa)) .set(SemanticRole::Error, SrgbColor::from_u8(0xf3, 0x8b, 0xa8)) .set(SemanticRole::Keyword, SrgbColor::from_u8(0xcb, 0xa6, 0xf7)) .set(
SemanticRole::StringLit,
SrgbColor::from_u8(0xa6, 0xe3, 0xa1),
) .set(SemanticRole::Comment, SrgbColor::from_u8(0x6c, 0x70, 0x86)) .set(SemanticRole::Number, SrgbColor::from_u8(0xfa, 0xb3, 0x87)) .build_adjusted()
})
}
pub fn macchiato() -> &'static Palette {
static MACCHIATO: OnceLock<Palette> = OnceLock::new();
MACCHIATO.get_or_init(|| {
PaletteBuilder::new()
.set(
SemanticRole::Background,
SrgbColor::from_u8(0x24, 0x27, 0x3a),
) .set(SemanticRole::Surface, SrgbColor::from_u8(0x36, 0x3a, 0x4f)) .set(SemanticRole::Text, SrgbColor::from_u8(0xca, 0xd3, 0xf5)) .set(SemanticRole::DimText, SrgbColor::from_u8(0xa5, 0xad, 0xcb)) .set(SemanticRole::Accent, SrgbColor::from_u8(0x8a, 0xad, 0xf4)) .set(SemanticRole::Error, SrgbColor::from_u8(0xed, 0x87, 0x96)) .set(SemanticRole::Keyword, SrgbColor::from_u8(0xc6, 0xa0, 0xf6)) .set(
SemanticRole::StringLit,
SrgbColor::from_u8(0xa6, 0xda, 0x95),
) .set(SemanticRole::Comment, SrgbColor::from_u8(0x6e, 0x73, 0x8d)) .set(SemanticRole::Number, SrgbColor::from_u8(0xf5, 0xa9, 0x7f)) .build_adjusted()
})
}
pub fn frappe() -> &'static Palette {
static FRAPPE: OnceLock<Palette> = OnceLock::new();
FRAPPE.get_or_init(|| {
PaletteBuilder::new()
.set(
SemanticRole::Background,
SrgbColor::from_u8(0x30, 0x34, 0x46),
) .set(SemanticRole::Surface, SrgbColor::from_u8(0x41, 0x45, 0x59)) .set(SemanticRole::Text, SrgbColor::from_u8(0xc6, 0xd0, 0xf5)) .set(SemanticRole::DimText, SrgbColor::from_u8(0xa5, 0xad, 0xce)) .set(SemanticRole::Accent, SrgbColor::from_u8(0x8c, 0xaa, 0xee)) .set(SemanticRole::Error, SrgbColor::from_u8(0xe7, 0x82, 0x84)) .set(SemanticRole::Keyword, SrgbColor::from_u8(0xca, 0x9e, 0xe6)) .set(
SemanticRole::StringLit,
SrgbColor::from_u8(0xa6, 0xd1, 0x89),
) .set(SemanticRole::Comment, SrgbColor::from_u8(0x73, 0x79, 0x94)) .set(SemanticRole::Number, SrgbColor::from_u8(0xef, 0x9f, 0x76)) .build_adjusted()
})
}
pub fn latte() -> &'static Palette {
static LATTE: OnceLock<Palette> = OnceLock::new();
LATTE.get_or_init(|| {
PaletteBuilder::new()
.set(
SemanticRole::Background,
SrgbColor::from_u8(0xef, 0xf1, 0xf5),
) .set(SemanticRole::Surface, SrgbColor::from_u8(0xcc, 0xd0, 0xda)) .set(SemanticRole::Text, SrgbColor::from_u8(0x4c, 0x4f, 0x69)) .set(SemanticRole::DimText, SrgbColor::from_u8(0x6c, 0x6f, 0x85)) .set(SemanticRole::Accent, SrgbColor::from_u8(0x1e, 0x66, 0xf5)) .set(SemanticRole::Error, SrgbColor::from_u8(0xd2, 0x0f, 0x39)) .set(SemanticRole::Keyword, SrgbColor::from_u8(0x88, 0x39, 0xef)) .set(
SemanticRole::StringLit,
SrgbColor::from_u8(0x40, 0xa0, 0x2b),
) .set(SemanticRole::Comment, SrgbColor::from_u8(0x9c, 0xa0, 0xb0)) .set(SemanticRole::Number, SrgbColor::from_u8(0xfe, 0x64, 0x0b)) .build_adjusted()
})
}