#!/usr/bin/env python3
"""Turn design-tokens.json into prototype/assets/css/tokens.css (CSS custom properties).

Usage:  python3 tools/build_tokens.py
"""
from __future__ import annotations

import json
from pathlib import Path

ROOT = Path(__file__).resolve().parent.parent
SOURCE = ROOT / "design-tokens.json"
OUT_FILE = ROOT / "prototype" / "assets" / "css" / "tokens.css"

# JSON group -> CSS custom property prefix. "layout" tokens keep their bare names.
PREFIXES = {
    "color": "color",
    "font": "font",
    "font-weight": "weight",
    "font-size": "text",
    "line-height": "leading",
    "letter-spacing": "tracking",
    "space": "space",
    "radius": "radius",
    "shadow": "shadow",
    "duration": "dur",
    "easing": "ease",
    "z": "z",
    "layout": "",
}


def css_name(group: str, name: str) -> str:
    prefix = PREFIXES[group]
    return f"--{prefix}-{name}" if prefix else f"--{name}"


def main() -> None:
    tokens = json.loads(SOURCE.read_text(encoding="utf-8"))
    lines = ["/* Generated from design-tokens.json by tools/build_tokens.py. Do not edit by hand. */",
             ":root {"]
    for group in PREFIXES:
        entries = tokens.get(group, {})
        if not entries:
            continue
        lines.append(f"  /* {group} */")
        for name, token in entries.items():
            lines.append(f"  {css_name(group, name)}: {token['value']};")
    lines.append("}")
    OUT_FILE.parent.mkdir(parents=True, exist_ok=True)
    OUT_FILE.write_text("\n".join(lines) + "\n", encoding="utf-8")
    print(f"wrote {OUT_FILE}")


if __name__ == "__main__":
    main()
