import { ImageResponse } from "next/og" async function loadAssets(): Promise< { name: string; data: Buffer; weight: 400 | 600; style: "normal" }[] > { const [ { base64Font: normal }, { base64Font: mono }, { base64Font: semibold }, ] = await Promise.all([ import("./geist-regular-otf.json").then((mod) => mod.default || mod), import("./geistmono-regular-otf.json").then((mod) => mod.default || mod), import("./geist-semibold-otf.json").then((mod) => mod.default || mod), ]) return [ { name: "Geist", data: Buffer.from(normal, "base64"), weight: 400 as const, style: "normal" as const, }, { name: "Geist Mono", data: Buffer.from(mono, "base64"), weight: 400 as const, style: "normal" as const, }, { name: "Geist", data: Buffer.from(semibold, "base64"), weight: 600 as const, style: "normal" as const, }, ] } export async function GET(request: Request) { const { searchParams } = new URL(request.url) const title = searchParams.get("title") const description = searchParams.get("description") const [fonts] = await Promise.all([loadAssets()]) return new ImageResponse( (
20 ? 64 : 80, letterSpacing: "-0.04em", }} > {title}
{description}
), { width: 1200, height: 628, fonts, } ) }