AnyBot/src/theme.rs

69 lines
2.5 KiB
Rust
Raw Normal View History

// Colours. Light values come from the original's stylesheet
// (index CSS, ":root,.sand-1vbcnu7" block). Dark values come from the renderer's appearance primitives.
use eframe::egui::Color32;
#[derive(Clone, Copy)]
pub struct Palette {
pub pane: Color32,
pub sidebar: Color32,
pub elevated: Color32,
pub hover: Color32,
pub active: Color32,
pub primary: Color32,
pub text: Color32,
pub text2: Color32,
pub text3: Color32,
pub on_primary: Color32,
pub bubble_user: Color32,
pub border: Color32,
pub focus: Color32,
pub accent: Color32,
pub danger: Color32,
}
const fn hexa(r: u8, g: u8, b: u8, a: u8) -> Color32 {
Color32::from_rgba_unmultiplied_const(r, g, b, a)
}
pub const LIGHT: Palette = Palette {
pane: hexa(0xff, 0xff, 0xff, 0xff),
sidebar: hexa(0xf5, 0xf5, 0xf5, 0xff),
elevated: hexa(0xff, 0xff, 0xff, 0xff),
hover: hexa(0x1c, 0x1c, 0x1c, 0x0f),
active: hexa(0x1c, 0x1c, 0x1c, 0x14),
primary: hexa(0x1c, 0x1c, 0x1c, 0xff),
text: hexa(0x1c, 0x1c, 0x1c, 0xff),
text2: hexa(0x1c, 0x1c, 0x1c, 0xad),
text3: hexa(0x1c, 0x1c, 0x1c, 0x8f),
on_primary: hexa(0xff, 0xff, 0xff, 0xff),
bubble_user: hexa(0x1c, 0x1c, 0x1c, 0xff),
border: hexa(0x1c, 0x1c, 0x1c, 0x1f),
focus: hexa(0x1e, 0x86, 0xfc, 0xff),
accent: hexa(0x16, 0x80, 0xf3, 0xff),
danger: hexa(0xcd, 0x28, 0x34, 0xff),
};
// From the original's renderer (index.eager-common: appearance primitives dark neutral/0..6 and the
// g_ alpha table): pane #1f1f1f, elevated #161616, chrome #121212, sidebar #0e0e0e, ink #f5f5f5,
// primary hover #dbdbdb; translucent tokens are the ink at hover 6%, active 8%, agent bubble 4%,
// user bubble 18%, text 66/54%, border 10%. Accent blue/0 #1884fc, danger red/0 #fc2c3e.
// Measured from the original's dark window: chat rgb 19, sidebar 16, bubbles/cards 31–33.
pub const DARK: Palette = Palette {
pane: hexa(0x13, 0x13, 0x13, 0xff),
sidebar: hexa(0x10, 0x10, 0x10, 0xff),
elevated: hexa(0x1f, 0x1f, 0x1f, 0xff),
hover: hexa(0xf5, 0xf5, 0xf5, 0x0f),
active: hexa(0xf5, 0xf5, 0xf5, 0x14),
primary: hexa(0xf5, 0xf5, 0xf5, 0xff),
text: hexa(0xf5, 0xf5, 0xf5, 0xff),
text2: hexa(0xf5, 0xf5, 0xf5, 0xa8),
text3: hexa(0xf5, 0xf5, 0xf5, 0x8a),
on_primary: hexa(0x1f, 0x1f, 0x1f, 0xff),
bubble_user: hexa(0xf5, 0xf5, 0xf5, 0x2e),
border: hexa(0xf5, 0xf5, 0xf5, 0x1a),
focus: hexa(0x18, 0x84, 0xfc, 0xff),
accent: hexa(0x18, 0x84, 0xfc, 0xff),
danger: hexa(0xfc, 0x2c, 0x3e, 0xff),
};