diff --git a/quartz.layout.ts b/quartz.layout.ts index 81203ec2d..d2a85dc82 100644 --- a/quartz.layout.ts +++ b/quartz.layout.ts @@ -6,7 +6,15 @@ export const sharedPageComponents: SharedLayout = { head: Component.Head({ favicons: [ { path: "static/icon.png", size: "200x200", mime: "image/png" } - ] + ], + + openGraph: { + path: "static/og-image.png", + mime: "image/png", + width: "1200", + height: "675", + alt: "Quartz logo" + } }), header: [], afterBody: [], diff --git a/quartz/components/Head.tsx b/quartz/components/Head.tsx index aa0194fe9..2c7414fd1 100644 --- a/quartz/components/Head.tsx +++ b/quartz/components/Head.tsx @@ -10,8 +10,17 @@ interface Favicon { mime?: string } +interface OpenGraphImage { + path: string + alt?: string + mime?: string + width?: string + height?: string +} + interface Options { favicons?: Favicon[] + openGraph?: OpenGraphImage } export default ((opts?: Options) => { @@ -27,8 +36,6 @@ export default ((opts?: Options) => { const path = url.pathname as FullSlug const baseDir = fileData.slug === "404" ? path : pathToRoot(fileData.slug!) - const ogImagePath = `https://${cfg.baseUrl}/static/og-image.png` - const icons = opts?.favicons ?? [] return ( @@ -45,9 +52,15 @@ export default ((opts?: Options) => { - {cfg.baseUrl && } - - + {cfg.baseUrl && opts?.openGraph && ( + <> + + {opts.openGraph.mime && ()} + {opts.openGraph.width && ()} + {opts.openGraph.height && ()} + {opts.openGraph.alt && ()} + + )} {icons.map(({ path, size, mime }) => ( ))}