summaryrefslogtreecommitdiff
path: root/examples/docs/src/components/HeadSEO.astro
blob: e8ac787d3d311ea0e69a37974b5471604928e730 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
---
import type { CollectionEntry } from 'astro:content';
import { SITE, OPEN_GRAPH } from '../consts';

type Props = { canonicalUrl: URL } & CollectionEntry<'docs'>['data'];

const { ogLocale, image, title, description, canonicalUrl } = Astro.props;
const formattedContentTitle = `${title} 🚀 ${SITE.title}`;
const imageSrc = image?.src ?? OPEN_GRAPH.image.src;
const canonicalImageSrc = new URL(imageSrc, Astro.site);
const imageAlt = image?.alt ?? OPEN_GRAPH.image.alt;
---

<!-- Page Metadata -->
<link rel="canonical" href={canonicalUrl} />

<!-- OpenGraph Tags -->
<meta property="og:title" content={formattedContentTitle} />
<meta property="og:type" content="article" />
<meta property="og:url" content={canonicalUrl} />
<meta property="og:locale" content={ogLocale ?? SITE.defaultLanguage} />
<meta property="og:image" content={canonicalImageSrc} />
<meta property="og:image:alt" content={imageAlt} />
<meta name="description" property="og:description" content={description ?? SITE.description} />
<meta property="og:site_name" content={SITE.title} />

<!-- Twitter Tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content={OPEN_GRAPH.twitter} />
<meta name="twitter:title" content={formattedContentTitle} />
<meta name="twitter:description" content={description ?? SITE.description} />
<meta name="twitter:image" content={canonicalImageSrc} />
<meta name="twitter:image:alt" content={imageAlt} />

<!--
  TODO: Add json+ld data, maybe https://schema.org/APIReference makes sense?
  Docs: https://developers.google.com/search/docs/advanced/structured-data/intro-structured-data
  https://www.npmjs.com/package/schema-dts seems like a great resource for implementing this.
  Even better, there's a React component that integrates with `schema-dts`: https://github.com/google/react-schemaorg
-->
ass='deletions'>-2/+53 2025-01-02Fix Vue & Svelte server renderer types (#12776)Gravatar Amine Ilidrissi 3-2/+12 2025-01-02fix: make `reference()` a sync transform (#12781)Gravatar Matt Kane 3-4/+20 2024-12-31Fix sync-examples workflow (#12562)Gravatar Bjorn Lu 1-22/+20 2024-12-26fix(@astrojs/rss): revert incorrect Content-Type header applied for RSS XML f...Gravatar Chloe Arciniega 3-2/+7 2024-12-24patch: update partytown dependencies (#12822)Gravatar Scott Davis 4-15/+28 2024-12-23[ci] formatGravatar Louis Escher 1-1/+1 2024-12-23Fix server island script breaking when charset is added to content-type (#12810)Gravatar Louis Escher 5-1/+28 2024-12-20fix(toolbar): assign label to icons (#12734)Gravatar Emanuele Stoppa 3-6/+6 2024-12-20fix: better logs for invalid content config (#12798)Gravatar Matt Kane 6-4/+69 2024-12-20[ci] release (#12790)astro@5.1.1@astrojs/vue@5.0.3@astrojs/tailwind@5.1.4@astrojs/svelte@7.0.2@astrojs/studio@0.1.3@astrojs/solid-js@5.0.1@astrojs/react@4.1.2@astrojs/preact@4.0.1@astrojs/mdx@4.0.3@astrojs/markdoc@0.12.4@astrojs/db@0.14.5@astrojs/alpinejs@0.4.1Gravatar Houston (Bot) 51-124/+177 2024-12-20fix(deps): upgrade Vite (#12799)Gravatar Matt Kane 14-84/+152 2024-12-20update comment in packages/astro/src/types/public/common.ts (#12782)Gravatar Hiromasa Fujimori 2-1/+6 2024-12-19[ci] formatGravatar Matt Kane 1-4/+2 2024-12-19fix: pass raw frontmatter to when parsing markdown in glob loader (#12789)Gravatar Matt Kane 13-1/+171 2024-12-19chore: move files to `.mjs` (#12765)Gravatar Emanuele Stoppa 2-0/+0 2024-12-19chore: fix links in session errors (#12787)Gravatar Matt Kane 1-4/+4 2024-12-19[ci] release (#12762)astro@5.1.0Gravatar Houston (Bot) 33-159/+140