import React, { ReactElement } from 'react' import { graphql, useStaticQuery } from 'gatsby' import { ImageDataLike, getSrc } from 'gatsby-plugin-image' import useDarkMode from '../../../hooks/useDarkMode' import { useSiteMetadata } from '../../../hooks/useSiteMetadata' const query = graphql` query Logo { logo: allFile(filter: { name: { eq: "apple-touch-icon" } }) { edges { node { relativePath } } } } ` export type HeadMetaProps = { title?: string description?: string image?: ImageDataLike slug: string children?: ReactElement } export default function HeadMeta(props: HeadMetaProps): ReactElement { const data = useStaticQuery(query) const logo = data.logo.edges[0].node.relativePath const { siteTitle, siteUrl, siteDescription, author } = useSiteMetadata() const { themeColor } = useDarkMode() const title = props.title ? `${props.title} ¦ ${siteTitle}` : `${siteTitle} ¦ ${siteDescription}` const description = props.description ? props.description.slice(0, 160) : siteDescription const url = props.slug ? `${siteUrl}${props.slug}` : siteUrl const image = props.image ? `${siteUrl}${getSrc(props.image)}` : `${siteUrl}${logo}` return ( <> {title} {props.children} ) }