/** * SEO component that queries for data with * Gatsby's useStaticQuery React hook * * See: https://www.gatsbyjs.org/docs/use-static-query/ */ import { graphql, useStaticQuery } from "gatsby" import PropTypes from "prop-types" import React from "react" import Helmet from "react-helmet" interface Props { title: string; description: string; lang: string; keywords: string[]; meta: any; imageSource: string; imageAlt: string; } function SEO({ description, lang, meta, keywords, title, imageSource, imageAlt }: Partial) { const { site } = useStaticQuery( graphql` query { site { siteMetadata { title description author siteUrl } } } ` ) const metaDescription = description || site.siteMetadata.description const image = imageSource ? `${site.siteMetadata.siteUrl}${imageSource}` : null const imageAltText = imageAlt || metaDescription return ( 0 ? { name: `keywords`, content: keywords.join(`, `), } : [] ) .concat(meta)} /> ) } SEO.defaultProps = { lang: `en`, meta: [], keywords: [], } SEO.propTypes = { description: PropTypes.string, lang: PropTypes.string, meta: PropTypes.array, keywords: PropTypes.arrayOf(PropTypes.string), title: PropTypes.string.isRequired, } export default SEO