use super::ir::{ResolvedCall, ResolvedValue, VarTable};
pub fn built_in_defaults() -> VarTable {
let mut t = VarTable::new();
let ident = |s: &str| ResolvedValue::Ident(s.into());
let hex = |s: &str| ResolvedValue::Hex(s.into());
let rgba = |r: f64, g: f64, b: f64, a: f64| {
ResolvedValue::Call(ResolvedCall {
name: "rgba".into(),
args: vec![
ResolvedValue::Number(r),
ResolvedValue::Number(g),
ResolvedValue::Number(b),
ResolvedValue::Number(a),
],
})
};
let light_dark = |l: ResolvedValue, d: ResolvedValue| {
ResolvedValue::Call(ResolvedCall {
name: "light-dark".into(),
args: vec![l, d],
})
};
set_visual(&mut t, "bg", light_dark(ident("white"), hex("1b1b1f")));
set_visual(&mut t, "fg", light_dark(ident("black"), hex("e8e8ea")));
set_visual(&mut t, "fill", light_dark(ident("white"), hex("26262b")));
set_visual(&mut t, "stroke", light_dark(hex("444"), hex("9aa0a6")));
set_visual(&mut t, "accent", light_dark(hex("0a84ff"), hex("4aa3ff")));
set_visual(&mut t, "accent-text", ident("white"));
set_visual(&mut t, "muted", light_dark(hex("888"), hex("9aa0a6")));
set_visual(
&mut t,
"danger",
light_dark(ident("crimson"), hex("ff6b6b")),
);
set_visual(&mut t, "warn", light_dark(ident("orange"), hex("ffb454")));
set_visual(&mut t, "stray", light_dark(ident("crimson"), hex("ff6b6b")));
set_visual(
&mut t,
"group-stroke",
light_dark(rgba(0.0, 0.0, 0.0, 0.4), rgba(255.0, 255.0, 255.0, 0.4)),
);
set_visual(
&mut t,
"group-fill",
light_dark(rgba(0.0, 0.0, 0.0, 0.03), rgba(255.0, 255.0, 255.0, 0.05)),
);
set_visual(
&mut t,
"icon-fill",
light_dark(rgba(0.0, 0.0, 0.0, 0.16), rgba(255.0, 255.0, 255.0, 0.18)),
);
set_visual(
&mut t,
"grid",
light_dark(rgba(0.0, 0.0, 0.0, 0.10), rgba(255.0, 255.0, 255.0, 0.14)),
);
set_visual(&mut t, "tip-bg", light_dark(hex("333"), hex("e8e8ea")));
set_visual(&mut t, "tip-fg", light_dark(ident("white"), hex("1a1a1f")));
set_visual(
&mut t,
"caption-color",
light_dark(rgba(0.0, 0.0, 0.0, 0.5), rgba(255.0, 255.0, 255.0, 0.55)),
);
set_visual(
&mut t,
"footer-color",
light_dark(rgba(0.0, 0.0, 0.0, 0.5), rgba(255.0, 255.0, 255.0, 0.55)),
);
set_visual(
&mut t,
"font-family",
ResolvedValue::RawCss(
"ui-monospace, \"SF Mono\", \"Cascadia Code\", \"JetBrains Mono\", Menlo, Consolas, \"Liberation Mono\", monospace"
.into(),
),
);
set_visual(&mut t, "font-weight", ident("normal"));
set_visual(&mut t, "caption-font-weight", ident("normal"));
set_visual(&mut t, "link-font-weight", ident("normal"));
set_visual(
&mut t,
"text-color",
ResolvedValue::LiveVar {
name: "fg".into(),
raw: false,
},
);
set_visual(
&mut t,
"shadow-color",
light_dark(rgba(0.0, 0.0, 0.0, 0.2), rgba(0.0, 0.0, 0.0, 0.5)),
);
for (name, value) in crate::palette::palette_vars() {
t.set(name, value);
}
t
}
fn set_visual(t: &mut VarTable, name: &str, v: ResolvedValue) {
t.set(name, v);
}