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],
})
};
t.set("bg", light_dark(ident("white"), hex("1b1b1f")));
t.set("fg", light_dark(ident("black"), hex("e8e8ea")));
t.set("fill", light_dark(ident("white"), hex("26262b")));
t.set("stroke", light_dark(hex("444"), hex("9aa0a6")));
t.set("stroke-dark", light_dark(ident("black"), ident("white")));
t.set(
"stroke-light",
light_dark(rgba(0.0, 0.0, 0.0, 0.545), rgba(255.0, 255.0, 255.0, 0.64)),
);
t.set("accent", light_dark(hex("0a84ff"), hex("4aa3ff")));
t.set("accent-text", ident("white"));
t.set("muted", light_dark(hex("888"), hex("9aa0a6")));
t.set("danger", light_dark(ident("crimson"), hex("ff6b6b")));
t.set("warn", light_dark(ident("orange"), hex("ffb454")));
t.set("stray", light_dark(ident("crimson"), hex("ff6b6b")));
t.set(
"group-stroke",
light_dark(rgba(0.0, 0.0, 0.0, 0.4), rgba(255.0, 255.0, 255.0, 0.4)),
);
t.set(
"group-fill",
light_dark(rgba(0.0, 0.0, 0.0, 0.03), rgba(255.0, 255.0, 255.0, 0.05)),
);
t.set(
"header-fill",
light_dark(rgba(0.0, 0.0, 0.0, 0.06), rgba(255.0, 255.0, 255.0, 0.08)),
);
t.set(
"icon-fill",
light_dark(rgba(0.0, 0.0, 0.0, 0.16), rgba(255.0, 255.0, 255.0, 0.18)),
);
t.set(
"grid",
light_dark(rgba(0.0, 0.0, 0.0, 0.10), rgba(255.0, 255.0, 255.0, 0.14)),
);
t.set("tip-bg", light_dark(hex("333"), hex("e8e8ea")));
t.set("tip-fg", light_dark(ident("white"), hex("1a1a1f")));
t.set(
"caption-color",
light_dark(rgba(0.0, 0.0, 0.0, 0.5), rgba(255.0, 255.0, 255.0, 0.55)),
);
t.set(
"footer-color",
light_dark(rgba(0.0, 0.0, 0.0, 0.5), rgba(255.0, 255.0, 255.0, 0.55)),
);
t.set("font-family",
ResolvedValue::RawCss(
"\"Google Sans Code\", ui-monospace, \"SF Mono\", \"Cascadia Code\", \"JetBrains Mono\", Menlo, Consolas, \"Liberation Mono\", monospace"
.into(),
),
);
t.set("font-weight", ResolvedValue::Number(500.0));
t.set("caption-font-weight", ResolvedValue::Number(400.0));
t.set("link-font-weight", ResolvedValue::Number(400.0));
t.set(
"text-color",
ResolvedValue::LiveVar {
name: "fg".into(),
raw: false,
},
);
t.set(
"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
}