| --- |
| // Import the global.css file here so that it is included on |
| // all pages through the use of the <BaseHead /> component. |
| import '../styles/global.css'; |
| |
| interface Props { |
| title: string; |
| description: string; |
| image?: string; |
| } |
| |
| const canonicalURL = new URL(Astro.url.pathname, Astro.site); |
| |
| const { title, description, image = '/blog-placeholder-1.jpg' } = Astro.props; |
| --- |
| |
| <!-- Global Metadata --> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width,initial-scale=1" /> |
| <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> |
| <meta name="generator" content={Astro.generator} /> |
| |
| <!-- Font preloads --> |
| <link rel="preconnect" href="https://fonts.googleapis.com"> |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| <link href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@300..700&display=swap" rel="stylesheet"> |
| |
| <!-- Canonical URL --> |
| <link rel="canonical" href={canonicalURL} /> |
| |
| <!-- Primary Meta Tags --> |
| <title>{title}</title> |
| <meta name="title" content={title} /> |
| <meta name="description" content={description} /> |
| |
| <!-- Open Graph / Facebook --> |
| <meta property="og:type" content="website" /> |
| <meta property="og:url" content={Astro.url} /> |
| <meta property="og:title" content={title} /> |
| <meta property="og:description" content={description} /> |
| <meta property="og:image" content={new URL(image, Astro.url)} /> |
| |
| <!-- Twitter --> |
| <meta property="twitter:card" content="summary_large_image" /> |
| <meta property="twitter:url" content={Astro.url} /> |
| <meta property="twitter:title" content={title} /> |
| <meta property="twitter:description" content={description} /> |
| <meta property="twitter:image" content={new URL(image, Astro.url)} /> |