gooten-gatsby-example
Version:
Gatsby page demonstrating using Gooten source plugin (npm gatsby-source-gooten)
90 lines (83 loc) • 1.84 kB
JavaScript
import { useStaticQuery, graphql } from "gatsby";
import PropTypes from "prop-types";
import React from "react";
import Helmet from "react-helmet";
function SEO({ description, lang, meta, keywords, title }) {
const { site } = useStaticQuery(graphql`
query DefaultSEOQuery {
site {
siteMetadata {
title
description
author
}
}
}
`);
const metaDescription = description || site.siteMetadata.description;
return (
<Helmet
htmlAttributes={{
lang
}}
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(
keywords.length > 0
? {
name: `keywords`,
content: keywords.join(`, `)
}
: []
)
.concat(meta)}
title={title}
titleTemplate={`%s | ${site.siteMetadata.title}`}
/>
);
}
SEO.defaultProps = {
lang: `en`,
keywords: [],
meta: []
};
SEO.propTypes = {
description: PropTypes.string,
keywords: PropTypes.arrayOf(PropTypes.string),
lang: PropTypes.string,
meta: PropTypes.array,
title: PropTypes.string.isRequired
};
export default SEO;