-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSEO.tsx
More file actions
96 lines (90 loc) · 2.1 KB
/
Copy pathSEO.tsx
File metadata and controls
96 lines (90 loc) · 2.1 KB
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import React from 'react';
import { graphql, useStaticQuery } from 'gatsby';
import Helmet from 'react-helmet';
type MetaEntry =
| { name: string; content: any; property?: undefined }
| { property: string; content: any; name?: undefined };
type SEOProps = {
description?: string;
meta?: MetaEntry[];
keywords?: string[];
title?: string;
path?: string;
};
export default function SEO({
description,
meta,
keywords,
title,
path = '',
}: SEOProps) {
const data = useStaticQuery(graphql`
query DefaultSEOQuery {
site {
siteMetadata {
title
description
author
siteUrl
}
}
}
`);
const metaDescription = description || data.site.siteMetadata.description;
return (
<Helmet
htmlAttributes={{
lang: 'en',
}}
title={title ? title : data.site.siteMetadata.title}
titleTemplate={title ? `%s | ${data.site.siteMetadata.title}` : ''}
meta={[
{
name: 'description',
content: metaDescription,
},
{
property: 'og:title',
content: title || data.site.siteMetadata.title,
},
{
property: 'og:description',
content: metaDescription,
},
{
property: 'og:type',
content: process.env.SUBSITE === 'blog' ? 'article' : 'website',
},
{
property: 'og:site_name',
content: 'Dave Allie',
},
{
property: 'og:url',
content: `${data.site.siteMetadata.siteUrl}${path}`,
},
{
name: 'twitter:card',
content: 'summary',
},
{
name: 'twitter:title',
content: title || data.site.siteMetadata.title,
},
{
name: 'twitter:description',
content: metaDescription,
},
]
.concat(
keywords && keywords.length > 0
? {
name: 'keywords',
content: keywords.join(', '),
}
: []
)
.concat(meta || [])}
/>
);
}