| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /**
- * SEO component that queries for data with
- * Gatsby's useStaticQuery React hook
- *
- * See: https://www.gatsbyjs.org/docs/use-static-query/
- */
- 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
|