Skip to main content

ishou_render/
scss.rs

1//! SCSS renderer — emits `$ishou-...` variables. Mirror of CSS.
2
3use ishou_tokens::TokenSet;
4
5pub fn render(t: &TokenSet) -> String {
6    let mut out = String::from("// ishou — pleme-io design tokens (generated)\n\n");
7    for (k, v) in t.color.entries() {
8        out.push_str(&format!("$ishou-{}: {};\n", k.replace('_', "-"), v.hex()));
9    }
10    for (role, palette_key) in t.roles.pairs() {
11        let rgb = t.color.get(palette_key).expect("role resolves");
12        out.push_str(&format!("$ishou-color-{role}: {};\n", rgb.hex()));
13    }
14    for (k, v) in t.spacing.pairs() {
15        out.push_str(&format!("$ishou-space-{k}: {v}px;\n"));
16    }
17    for (k, v) in t.radius.pairs() {
18        out.push_str(&format!("$ishou-radius-{k}: {v}px;\n"));
19    }
20    out
21}