diff --git a/src/app/opengraph-image.tsx b/src/app/opengraph-image.tsx index 0b57092..8910178 100644 --- a/src/app/opengraph-image.tsx +++ b/src/app/opengraph-image.tsx @@ -3,14 +3,14 @@ import { ImageResponse } from 'next/og' /** * Default Open Graph + Twitter card image for the site root. * - * Generated at build time as a static PNG (1200×630) so social platforms - * cache a single asset. Matches the social-kit design: stacked-triangle - * mark + lockup top-left, big headline center, orbital motif on the right, - * chartreuse + cobalt aurora backdrop on dark. + * Tuned for LinkedIn / X / Slack feed posting: dark plate (high contrast + * against feeds' white surfaces), oversized headline, four measured-fact + * pills as the visual rhythm, restrained orbital motif on the right. + * + * Generated at build time via next/og ImageResponse so a single PNG ships + * to /out/opengraph-image and platforms cache one canonical asset. */ -// Static export: prerender at build time so a single PNG is emitted to /out -// and platforms cache one canonical asset. export const dynamic = 'force-static' export const alt = 'Vitus Labs — Composable React engine. 15 packages, 4.82 KB CSS-in-JS engine, 170+ CSS props, 123 motion presets.' @@ -18,13 +18,13 @@ export const size = { width: 1200, height: 630 } export const contentType = 'image/png' const INK = '#0A0B0D' -const PAPER = '#ECEAE2' +const SURFACE = '#14161A' +const PAPER = '#F1EFE7' const ACCENT = '#C8FF3A' const COBALT = '#2F4DFF' const MUTED = '#A8A69C' const BORDER = '#2E3138' -/** Stacked-triangle mark — three trapezoidal slabs over a unit canvas. */ function Mark({ size: s = 36 }: { size?: number }) { return ( - {rings.map((r, i) => ( -
- ))} - {/* Nodes anchored at the right edge of each ring */} -
-
- {/* Center disc with mark */} -
- -
+ {children}
) } @@ -129,7 +78,7 @@ export default async function OpenGraphImage() { height: '100%', display: 'flex', flexDirection: 'column', - padding: '64px 72px', + padding: '56px 72px', background: INK, color: PAPER, fontFamily: 'sans-serif', @@ -137,72 +86,113 @@ export default async function OpenGraphImage() { overflow: 'hidden', }} > - {/* Background — radial chartreuse glow on the right + faint cobalt counter-note */} + {/* Aurora — chartreuse bloom on the right + cobalt counter-note bottom-left */}
- {/* Faint dot-grid */} +
+ {/* Dot grid, masked to top-right so it doesn't fight the headline */}
- - - {/* Lockup */} + {/* TOP ROW — lockup left, MIT pill right */}
- +
+ +
+ vitus + + · + + labs +
+
- vitus - - · - - labs + + OPEN SOURCE · MIT · v2.6.1
- {/* Headline block */} + {/* BODY — eyebrow, big headline, stat pill row */}
- Build, style + Build React apps - & ship{' '} @@ -243,20 +231,17 @@ export default async function OpenGraphImage() {
-
- 15 packages · 4.82 KB CSS-in-JS engine · 170+ CSS props · 123 motion - presets + + {/* Stat pills */} +
+ 15 packages + 4.82 KB engine + 170+ CSS props + 123 motion presets
- {/* Footer */} + {/* FOOTER */}
vitus-labs.com - MIT · TYPESCRIPT-FIRST + + TYPESCRIPT-FIRST · REACT · REACT-NATIVE +
, {