import fs from "node:fs";
const API = "https://api.moda.app/v1";
const HEADERS = {
Authorization: `Bearer ${process.env.MODA_API_KEY}`,
"Moda-Version": "2026-05-01",
};
const res = await fetch(`${API}/canvases/${process.env.CANVAS_ID}/tokens`, {
headers: HEADERS,
});
if (!res.ok) {
const err = await res.json().catch(() => null);
console.error("Moda fetch failed:", err?.error ?? res.statusText);
process.exit(1);
}
const { variables, colors, fonts, radii } = await res.json();
// Emit a predictable, diffable TS file.
const body = `// AUTO-GENERATED — edit the Moda canvas instead.
// Source: cvs_${process.env.CANVAS_ID}
// Generated: ${new Date().toISOString()}
export const theme = {
colors: {
${Object.entries(variables)
.filter(([, v]) => typeof v === "string" && v.startsWith("#"))
.map(([k, v]) => ` ${JSON.stringify(k)}: ${JSON.stringify(v)},`)
.join("\n")}
},
palette: ${JSON.stringify(colors, null, 2).replace(/\n/g, "\n ")},
fonts: ${JSON.stringify(fonts, null, 2).replace(/\n/g, "\n ")},
radii: ${JSON.stringify(radii, null, 2).replace(/\n/g, "\n ")},
} as const;
`;
fs.writeFileSync("src/design/theme.ts", body);
console.log("Wrote src/design/theme.ts");