// One-shot: render PNG icons from the SVG mark with sharp (run: node scripts/render-icons.mjs) import { mkdirSync, writeFileSync } from "node:fs"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; import { createRequire } from "node:module"; const here = dirname(fileURLToPath(import.meta.url)); const root = resolve(here, ".."); const require = createRequire(import.meta.url); const sharp = require(process.env.SHARP_PATH ?? "sharp"); const svg = (pad, rx, bg = "#0b0f14") => ` `; async function out(file, size, source) { const buf = await sharp(Buffer.from(source)).resize(size, size).png().toBuffer(); mkdirSync(dirname(file), { recursive: true }); writeFileSync(file, buf); console.log("wrote", file, size); } await out(resolve(root, "src/app/icon.png"), 512, svg(0, 6)); await out(resolve(root, "src/app/apple-icon.png"), 180, svg(0, 0)); await out(resolve(root, "public/icons/icon-192.png"), 192, svg(0, 6)); await out(resolve(root, "public/icons/icon-512.png"), 512, svg(0, 6)); await out(resolve(root, "public/icons/icon-512-maskable.png"), 512, svg(4, 0));