#!/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`);
}