import { makeStyles, Card, Typography, CardContent, CardMedia, Button, Box, Grid, Chip, Container, Paper } from '@material-ui/core' import styles from '../styles/Card.module.css' import Link from 'next/link' import MediumIcon from '../public/svgs/medium.svg' import GFGIcon from '../public/svgs/gfg.svg' const useStyles = makeStyles({ aboutCard : { background : 'rgba(255,255,255,.1)', margin : '4px', }, aboutCardContent : { height: '19em', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: "flex-start", margin: "4px", }, aboutCardTitle : { fontWeight: '800', textAlign: 'center', }, aboutCardBody : { textAlign: 'center', fontSize: "14px", marginBottom: '.5em', }, contactCard: { background : 'rgba(255,255,255,.1)', margin : '8px', height : '32.5em', display : 'flex', flexDirection : 'column' }, contactCardContent: { flex : '1', display : 'flex', flexDirection : 'column' } }) export const AboutCard = ({ image, title, body, hashtag }) => { const classes = useStyles() return( <Card elevation={2} className={classes.aboutCard}> <CardContent className={classes.aboutCardContent}> {image} <Typography variant="subtitle1" component="h5" className={classes.aboutCardTitle}>{title}</Typography> <Typography variant="body2" component="p" className={classes.aboutCardBody}>{body}</Typography> <Chip label={hashtag}/> </CardContent> </Card> ) } export const ContactCard = (props) => { const classes = useStyles() return( <Card className={classes.contactCard}> <div style={{height : '250px'}}> { props.image } </div> <CardContent className={classes.contactCardContent}> <Typography variant="h6" style={{fontWeight : '600'}}>{props.title}</Typography> <Typography variant="body2" style={{flex : '1'}}>{props.description}</Typography> <Button variant="contained" color="primary" style={{margin : '0px auto', marginTop : '.8em'}} onClick={() => {window.location.href = "mailto:[email protected]?subject=" + props.subject + "&body=message%20goes%20here"}}>{props.action}</Button> </CardContent> </Card>) } export const EventCard = (props) => { const dateISO = Date.parse(props.date); const dateString = new Intl.DateTimeFormat('en-US', {year: 'numeric', month: 'long',day: '2-digit'}).format(dateISO); console.log(props) return( <Card> <CardContent> <Grid container wrap="wrap-reverse" justifyContent="space-between"> <Grid item xs={12} md={2}> <img src={props.Image} alt={props.title} style={{height : '100%', width : '100%', objectFit : 'contain'}}/> </Grid> <Grid item xs={12} md={10} container direction="column" justifyContent="space-between"> <Grid item className={styles.cardContent}> <Box> <Grid container alignItems="flex-start" justifyContent="space-between"> <Grid item xs={12} alignItems="stretch"> <Typography style={{fontWeight : '600', fontSize : '1.5em'}}>{props.title}</Typography> { props.speaker && <Typography variant="body1" style={{fontWeight : '500', marginBottom : '1em'}}> Speaker: {props.speaker}</Typography> } </Grid> </Grid> </Box> <Box className={styles.cardDescription}> <Typography variant="body2" className={styles.cardDescription}>{props.description}</Typography> </Box> </Grid> <Grid item container justifyContent="space-between" alignItems="flex-end" className={styles.blogButtonBar} > <Grid item> <Typography>{dateString}</Typography> </Grid> <Grid item style={{display : 'flex', justifyContent : 'flex-end'}}> <Box className={styles.buttonsLG}> {/* <Button variant="contained" style={{marginRight : '1em'}} onClick={() => window.open(props.learn)}>Learn More</Button> */} <Button variant="contained" color="primary" onClick={() => window.open(props.register)}>Register</Button> </Box> </Grid> </Grid> </Grid> </Grid> <Box className={styles.buttonsMD}> <Button variant="contained" color="primary" onClick={() => window.open(props.register)}>Register</Button> </Box> </CardContent> </Card>) } export const BlogCard = (props) => { return( <Card className={styles.blogCard} style={{height : '100%'}}> <CardContent> <Grid container wrap="wrap"> <Grid item xs={12} md={2}> <img src={props.Image} alt={props.title} style={{height : '100%', width : '100%', objectFit : 'cover'}}/> </Grid> <Grid item xs={12} md={10} container direction="column" justifyContent="space-between"> <Grid item className={styles.cardContent}> <Grid container alignItems="flex-start" justifyContent="space-around"> <Grid item container> <Grid item xs={12}><Typography style={{fontWeight : '600', fontSize : '1.3em', maxWidth : '90%'}}>{props.title}</Typography></Grid> <Grid item xs={12}><Typography variant="body1" style={{fontWeight : '500', marginBottom : '1em'}}>Author: {props.speaker}</Typography></Grid> </Grid> </Grid> <Box className={styles.cardDescription} textOverflow="ellipsis" overflow="hidden"> {props.discription} </Box> </Grid> <Grid item container justifyContent="space-between" className={styles.blogButtonBar}> <Grid item alignItems="flex-end"> {props.Platform === 'GeeksForGeeks' ? <GFGIcon style={{width : '60px', display: 'flex', alignItems: 'flex-end'}}/> : props.Platform === 'Medium' ? <MediumIcon style={{width : '80px', display: 'flex', alignItems: 'flex-end'}}/> : <Typography variant="subtitle1" style={{fontWeight : '600'}}>{props.Platform}</Typography>} </Grid> <Grid item style={{display : 'flex', justifyContent : 'flex-end'}}> <Button variant="contained" color="primary" onClick={() => window.open(props.url)}>Read More</Button> </Grid> </Grid> </Grid> </Grid> </CardContent> </Card>) } export const MediaCard = props => { const classes = useStyles(); const {image, title, description} = props; return ( <Card style={{margin : '8px', minHeight : '20em'}}> <Box style={{margin : '2em 0em .5em 2em'}}>{ image }</Box> <CardContent> <Typography gutterBottom variant="h6" component="h2"> {title} </Typography> <Typography variant="body2" color="textSecondary" component="p"> {description} </Typography> </CardContent> </Card> ); }