#!/usr/bin/env bun /** Writes sample social cards to /tmp/og-samples for visual review: `bun run scripts/og-samples.tsx`. */ import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; import { join } from "node:path"; import { FEATURE_PAGES } from "~/lib/marketing/features"; import { AccountCard, FeatureCard, RepoCard, SiteCard } from "~/server/og/cards"; import { loadRuntimeFromDisk } from "~/server/og/disk-runtime"; import { renderPng } from "~/server/og/render"; const OUT = "/tmp/og-samples"; const HOST = "gitfor.dev"; const avatar = `data:image/png;base64,${readFileSync(join(import.meta.dir, "../public/android-chrome-512x512.png")).toString("base64")}`; const runtime = loadRuntimeFromDisk(); const samples = { site: , "repo-full": ( ), "repo-minimal": ( ), "repo-topics": ( ), "account-user": ( ), "account-org": ( ), ...Object.fromEntries( FEATURE_PAGES.map((page) => [ `feature-${page.slug}`, , ]), ), }; mkdirSync(OUT, { recursive: true }); for (const [name, element] of Object.entries(samples)) { const started = performance.now(); const png = await renderPng(element, runtime); const path = join(OUT, `${name}.png`); writeFileSync(path, png); console.log(`${path} ${(png.byteLength / 1024).toFixed(0)} KiB ${(performance.now() - started).toFixed(0)} ms`); }