1
0
mirror of https://github.com/kremalicious/portfolio.git synced 2024-06-28 00:27:40 +02:00
portfolio/src/templates/Project.jsx

92 lines
2.3 KiB
React
Raw Normal View History

2018-04-24 22:56:19 +02:00
import React, { Component, Fragment } from 'react'
2018-04-21 13:39:18 +02:00
import PropTypes from 'prop-types'
import Helmet from 'react-helmet'
import ReactMarkdown from 'react-markdown'
import Content from '../components/atoms/Content'
import FullWidth from '../components/atoms/FullWidth'
import ProjectImage from '../components/atoms/ProjectImage'
import ProjectTechstack from '../components/molecules/ProjectTechstack'
import ProjectLinks from '../components/molecules/ProjectLinks'
import ProjectNav from '../components/molecules/ProjectNav'
2018-04-23 23:55:12 +02:00
import SEO from '../components/atoms/SEO'
2018-04-21 13:39:18 +02:00
import images from '../images'
import './Project.scss'
2018-04-22 23:51:50 +02:00
class Project extends Component {
2018-04-21 13:39:18 +02:00
constructor() {
super()
}
render() {
2018-04-23 23:55:12 +02:00
const postMeta = this.props.data.projectsJson
const pathContext = this.props.pathContext
const { title, img, img_more, description, links, techstack } = postMeta
const { next, previous } = pathContext
2018-04-21 13:39:18 +02:00
return (
2018-04-24 22:56:19 +02:00
<Fragment>
2018-04-21 13:39:18 +02:00
<Helmet>
<title>{title}</title>
</Helmet>
2018-04-23 23:55:12 +02:00
<SEO postMeta={postMeta} />
2018-04-21 13:39:18 +02:00
<article className="project">
<Content>
<h1 className="project__title">{title}</h1>
<ReactMarkdown
source={description}
escapeHtml={false}
className="project__description"
/>
<FullWidth>
<ProjectImage src={images[img]} alt={title} />
</FullWidth>
{!!img_more && (
<FullWidth>
{img_more.map(key => (
<ProjectImage key={key} src={images[key]} alt={title} />
))}
</FullWidth>
)}
<footer className="project__meta">
{!!techstack && <ProjectTechstack techstack={techstack} />}
{!!links && <ProjectLinks links={links} />}
</footer>
</Content>
</article>
<ProjectNav previous={previous} next={next} />
2018-04-24 22:56:19 +02:00
</Fragment>
2018-04-21 13:39:18 +02:00
)
}
}
Project.propTypes = {
data: PropTypes.object.isRequired,
pathContext: PropTypes.object.isRequired,
}
export default Project
export const projectQuery = graphql`
query ProjectBySlug($slug: String!) {
projectsJson(slug: { eq: $slug }) {
title
2018-04-21 15:46:04 +02:00
slug
2018-04-21 13:39:18 +02:00
img
img_more
description
links {
title
url
}
techstack
}
}
`