import React from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import notFound from './not-found.jpg'; import { makeStyles } from '@material-ui/core/styles'; import { Card, CardContent, CardMedia, Typography, Button, Chip, Link, } from '@material-ui/core'; import BackgroundImage from 'gatsby-background-image'; function Project({ reverse, title, description, technologies, github, live, img, fluid, }) { const classes = useStyles(); return ( {fluid ? ( ) : ( )}
{title} {description}
{technologies.map(technology => { return ( ); })}
{github && ( )} {live && ( )}
); } const useStyles = makeStyles(theme => ({ card: { display: 'flex', minHeight: '400px', '&.reverse': { flexDirection: 'row-reverse', [theme.breakpoints.down('sm')]: { flexDirection: 'column', }, }, [theme.breakpoints.down('sm')]: { flexDirection: 'column', }, }, cardContent: { display: 'flex', flexDirection: 'column', width: '45%', [theme.breakpoints.down('sm')]: { width: '100%', }, }, divider: { flex: 1, }, contentContainer: { marginBottom: theme.spacing(8), }, technologies: { marginBottom: theme.spacing(2), '& > *:not(:last-child)': { marginRight: theme.spacing(1), }, '& > *': { marginBottom: theme.spacing(1), }, }, buttons: { '& > *:not(:last-child)': { marginRight: theme.spacing(1), }, '& > *': { marginBottom: theme.spacing(1), [theme.breakpoints.down('xs')]: { width: '100%', }, }, }, cover: { width: '55%', [theme.breakpoints.down('sm')]: { width: '100%', paddingTop: '56.25%', }, }, })); Project.defaultProps = { reverse: false, title: '', description: '', technologies: [], github: '', live: '', img: notFound, }; Project.propTypes = { reverse: PropTypes.bool.isRequired, title: PropTypes.string.isRequired, description: PropTypes.string.isRequired, technologies: PropTypes.arrayOf(PropTypes.string).isRequired, github: PropTypes.string.isRequired, live: PropTypes.string.isRequired, img: PropTypes.string.isRequired, }; export default Project;