homepage/src/templates/blogTemplate.js

55 lines
1.3 KiB
JavaScript

import React, { useEffect } from 'react'
import { graphql } from 'gatsby'
import Layout from '../components/layout'
import { MDXRenderer } from 'gatsby-plugin-mdx'
import { MDXProvider } from '@mdx-js/react'
const MdLeakH1 = props => <h2 {...props}># {props.children}</h2>
const MdLeakH2 = props => <h3 {...props}>## {props.children}</h3>
const MdLeakH3 = props => <h4 {...props}>### {props.children}</h4>
const MdLeakH4 = props => <h5 {...props}>#### {props.children}</h5>
const components = {
h1: MdLeakH1,
h2: MdLeakH2,
h3: MdLeakH3,
h4: MdLeakH4,
}
export default function Template({
data, // this prop will be injected by the GraphQL query below.
}) {
const {
frontmatter: { title, path },
body,
} = data.mdx
useEffect(() => {
document.title = `ctdo - ${title.toLowerCase()}`
}, [title])
return (
<Layout path={path}>
<MdLeakH1>{title}</MdLeakH1>
<MDXProvider components={components}>
<MDXRenderer>{body}</MDXRenderer>
</MDXProvider>
</Layout>
)
}
export const pageQuery = graphql`
query($slug: String!) {
mdx(fields: { slug: { eq: $slug } }) {
id
excerpt(pruneLength: 160)
body
frontmatter {
title
date(formatString: "MMMM DD, YYYY")
description
}
}
}
`