diff options
| author | Kevin J Hoerr <kjhoerr@protonmail.com> | 2021-04-22 01:39:47 -0400 |
|---|---|---|
| committer | Kevin J Hoerr <kjhoerr@protonmail.com> | 2021-04-22 01:39:47 -0400 |
| commit | d4f172ed203e6f3f6d1143f49c304cea8d45170e (patch) | |
| tree | 2d1d611052df544df9603d2ebd9f17905a90ebea /src/components/SEO.tsx | |
| parent | 9bfb5ce80ce8b5c2e7821b7ebea28a5f35848135 (diff) | |
| download | submelon.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.tsx | 76 |
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 |
