aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/components/SEO.tsx
diff options
context:
space:
mode:
authorKevin J Hoerr <kjhoerr@protonmail.com>2021-04-22 01:39:47 -0400
committerKevin J Hoerr <kjhoerr@protonmail.com>2021-04-22 01:39:47 -0400
commitd4f172ed203e6f3f6d1143f49c304cea8d45170e (patch)
tree2d1d611052df544df9603d2ebd9f17905a90ebea /src/components/SEO.tsx
parent9bfb5ce80ce8b5c2e7821b7ebea28a5f35848135 (diff)
downloadsubmelon.dev-d4f172ed203e6f3f6d1143f49c304cea8d45170e.tar.gz
submelon.dev-d4f172ed203e6f3f6d1143f49c304cea8d45170e.tar.bz2
submelon.dev-d4f172ed203e6f3f6d1143f49c304cea8d45170e.zip
Changes
Diffstat (limited to 'src/components/SEO.tsx')
-rw-r--r--src/components/SEO.tsx76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/components/SEO.tsx b/src/components/SEO.tsx
new file mode 100644
index 0000000..ce86222
--- /dev/null
+++ b/src/components/SEO.tsx
@@ -0,0 +1,76 @@
+import React from "react"
+import PropTypes from "prop-types"
+import { Helmet } from "react-helmet"
+import { useStaticQuery, graphql } from "gatsby"
+
+function SEO({ description, lang, meta, title }) {
+ const { site } = useStaticQuery(
+ graphql`
+ query {
+ site {
+ siteMetadata {
+ title
+ description
+ author
+ }
+ }
+ }
+ `
+ )
+ const metaDescription = description || site.siteMetadata.description
+ return (
+ <Helmet
+ htmlAttributes={{
+ lang,
+ }}
+ title={title}
+ titleTemplate={`%s | ${site.siteMetadata.title}`}
+ meta={[
+ {
+ name: `description`,
+ content: metaDescription,
+ },
+ {
+ property: `og:title`,
+ content: title,
+ },
+ {
+ property: `og:description`,
+ content: metaDescription,
+ },
+ {
+ property: `og:type`,
+ content: `website`,
+ },
+ {
+ name: `twitter:card`,
+ content: `summary`,
+ },
+ {
+ name: `twitter:creator`,
+ content: site.siteMetadata.author,
+ },
+ {
+ name: `twitter:title`,
+ content: title,
+ },
+ {
+ name: `twitter:description`,
+ content: metaDescription,
+ },
+ ].concat(meta)}
+ />
+ )
+}
+SEO.defaultProps = {
+ lang: `en`,
+ meta: [],
+ description: ``,
+}
+SEO.propTypes = {
+ description: PropTypes.string,
+ lang: PropTypes.string,
+ meta: PropTypes.arrayOf(PropTypes.object),
+ title: PropTypes.string.isRequired,
+}
+export default SEO \ No newline at end of file