import { chromium } from "playwright-core";
import { join, dirname } from "node:path";
import { fileURLToPath } from "node:url";
import { readFile, writeFile, mkdir } from "node:fs/promises";
import { homedir } from "node:os";
const root = dirname(dirname(dirname(fileURLToPath(import.meta.url)))); // repo root
const exe = join(homedir(), ".cache/ms-playwright/chromium-1234/chrome-linux64/chrome");
const browser = await chromium.launch({ executablePath: exe, headless: true });
const page = await browser.newPage({ viewport: { width: 512, height: 512 } });
const svg = await readFile(join(root, "brand/bugtrail.svg"), "utf8");
await page.setContent(`<body style="margin:0;background:transparent">${svg.replace("<svg ", '<svg width="512" height="512" ')}</body>`);
await page.screenshot({ path: "/tmp/ltt-shots/28-logo-preview.png", omitBackground: true });
// emit PNG icons for the extension manifest from the same SVG
const sizes = [16, 32, 48, 128];
const iconsDir = join(root, "packages/extension/src/icons");
await mkdir(iconsDir, { recursive: true });
for (const size of sizes) {
await page.setViewportSize({ width: size, height: size });
await page.setContent(`<body style="margin:0;background:transparent">${svg.replace("<svg ", `<svg width="${size}" height="${size}" `)}</body>`);
const buf = await page.screenshot({ omitBackground: true });
await writeFile(join(iconsDir, `icon-${size}.png`), buf);
}
await browser.close();
console.log("icons written to", iconsDir);