import { existsSync, readFileSync } from "node:fs"; import { join } from "node:path"; import { getOgImagePath, PROJECT_VIDEO_IDS } from "./project-showcase"; const brandMark = `data:image/png;base64,${readFileSync( join(process.cwd(), "public/brand/mark-dark.png"), ).toString("base64")}`; export const OG_SIZE = { width: 1200, height: 630 } as const; export const OG_CONTENT_TYPE = "image/png"; /** Capa 1200x630 gravada da página do projeto (public/videos//og.jpg), como data URI; `undefined` se não existir. */ export function readProjectOgBackground(id: string): string | undefined { if (!PROJECT_VIDEO_IDS.includes(id)) return undefined; const path = join(process.cwd(), "public", getOgImagePath(id)); if (!existsSync(path)) return undefined; return `data:image/jpeg;base64,${readFileSync(path).toString("base64")}`; } export function OgCard({ eyebrow, title, description, backgroundImage, }: { eyebrow: string; title: string; description: string; /** Imagem de fundo (data URI), escurecida da esquerda para a direita para o texto continuar legível. */ backgroundImage?: string; }) { return (
{backgroundImage && ( <> {/* biome-ignore lint/performance/noImgElement: o ImageResponse (satori) só desenha */}
)} Evandro.dev.br
{eyebrow}
{title}
{description}
EVANDRO.DEV.BR / ENGENHARIA DE SOFTWARE
); }