55 lines
1.3 KiB
JavaScript
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
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
`
|