From b9765d9320b3aecdf97c8af2303701366123ca22 Mon Sep 17 00:00:00 2001 From: Darius Cepulis Date: Thu, 9 Apr 2026 09:19:10 -0500 Subject: [PATCH] feat(site): add default OG image for social sharing (#1295) --- site/public/og-default.png | Bin 0 -> 33364 bytes site/scripts/generate-og-default.mjs | 62 +++++++++++++++++++++++++++ site/src/layouts/Base.astro | 20 +++++---- 3 files changed, 73 insertions(+), 9 deletions(-) create mode 100644 site/public/og-default.png create mode 100644 site/scripts/generate-og-default.mjs diff --git a/site/public/og-default.png b/site/public/og-default.png new file mode 100644 index 0000000000000000000000000000000000000000..418c4cd2bf8d810c107d661dc3081e63600c2955 GIT binary patch literal 33364 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 literal 0 HcmV?d00001 diff --git a/site/scripts/generate-og-default.mjs b/site/scripts/generate-og-default.mjs new file mode 100644 index 00000000..d3087bfc --- /dev/null +++ b/site/scripts/generate-og-default.mjs @@ -0,0 +1,62 @@ +/** + * Generates the default OG image: Video.js mono logo in manila on a dark background. + * + * Usage: node scripts/generate-og-default.mjs + * Output: public/og-default.png (1200×630) + */ + +import { readFileSync } from 'node:fs'; +import { dirname, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import sharp from 'sharp'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +const BACKGROUND = '#1e1d1d'; // faded-black (dark mode bg) +const LOGO_FILL = '#f3e7d2'; // manila-light +const WIDTH = 1200; +const HEIGHT = 630; + +// Read the mono logo SVG and replace currentColor with manila +const logoSvg = readFileSync(resolve(__dirname, '../src/assets/logos/videojs-mono.svg'), 'utf-8'); + +// The logo viewBox is 0 0 381 68 → aspect ratio ~5.6:1 +const logoNativeW = 381; +const logoNativeH = 68; +const logoAspect = logoNativeW / logoNativeH; + +// ~80% of image width +const logoW = Math.round(WIDTH * 0.8); +const logoH = Math.round(logoW / logoAspect); + +// Prepare the logo SVG at the target size with manila fill +const coloredLogo = logoSvg + .replace(/currentColor/g, LOGO_FILL) + .replace(/ - {image && } + {/* Twitter */} @@ -123,14 +127,12 @@ const fullTitle = /> - { - resolvedTwitterImage && ( - - ) - } + {/* Whatever else */}