jevstrudel.git / website / src / components / HeadSEO.astro
HeadSEO.astro27 lines · 1.0 KB · raw
1---
2import { SITE, OPEN_GRAPH, type Frontmatter } from '../config';
3
4export interface Props {
5  frontmatter: Frontmatter;
6  canonicalUrl: URL;
7}
8
9const { frontmatter, canonicalUrl } = Astro.props as Props;
10const formattedContentTitle = `${frontmatter.title} 🚀 ${SITE.title}`;
11const imageSrc = frontmatter.image?.src ?? OPEN_GRAPH.image.src;
12const canonicalImageSrc = new URL(imageSrc, Astro.site);
13const imageAlt = frontmatter.image?.alt ?? OPEN_GRAPH.image.alt;
14---
15
16<!-- Page Metadata -->
17<link rel="canonical" href={canonicalUrl} />
18
19<!-- og Tags -->
20<meta property="og:title" content={formattedContentTitle} />
21<meta property="og:type" content="article" />
22<meta property="og:url" content={canonicalUrl} />
23<meta property="og:locale" content={frontmatter.ogLocale ?? SITE.defaultLanguage} />
24<meta property="og:image" content={canonicalImageSrc} />
25<meta property="og:image:alt" content={imageAlt} />
26<meta name="description" property="og:description" content={frontmatter.description ?? SITE.description} />
27<meta property="og:site_name" content={SITE.title} />