SPB Git

spb/phi-conseil

Public
1.7 KB · 66 lines tsx
1import { ImageResponse } from "next/og";2import { site } from "@/lib/content";3import { buildSpiral } from "@/lib/spiral";45export const alt = `${site.brand.name} — ${site.brand.tagline}`;6export const size = { width: 1200, height: 630 };7export const contentType = "image/png";89export default function OpenGraphImage() {10  const { squares, path, bbox } = buildSpiral(8);11  return new ImageResponse(12    <div13      style={{14        width: "100%",15        height: "100%",16        display: "flex",17        alignItems: "center",18        background: "#f5eee4",19        color: "#1d3047",20        padding: 80,21        fontFamily: "Georgia, serif",22      }}23    >24      <div style={{ display: "flex", flexDirection: "column", flex: 1 }}>25        <div style={{ fontSize: 88, lineHeight: 1 }}>{site.brand.name}</div>26        <div27          style={{28            fontSize: 22,29            letterSpacing: 6,30            marginTop: 24,31            color: "#3a4652",32            fontFamily: "sans-serif",33          }}34        >35          {site.brand.tagline}36        </div>37        <div38          style={{39            fontSize: 30,40            marginTop: 48,41            color: "#3a4652",42            fontFamily: "sans-serif",43            maxWidth: 620,44          }}45        >46          {site.seo.defaultDescription}47        </div>48      </div>49      <svg50        width="400"51        height="247"52        viewBox={`${bbox.x} ${bbox.y} ${bbox.w} ${bbox.h}`}53        fill="none"54        stroke="#c7a075"55        strokeWidth="0.25"56      >57        {squares.map((s, i) => (58          <rect key={i} x={s.x} y={s.y} width={s.s} height={s.s} />59        ))}60        <path d={path} strokeWidth="0.4" />61      </svg>62    </div>,63    size,64  );65}66
Files · main
Menu

Theme