diff options
Diffstat (limited to 'src/components/ProjectPreview/ProjectPreview.tsx')
| -rw-r--r-- | src/components/ProjectPreview/ProjectPreview.tsx | 55 | 
1 files changed, 55 insertions, 0 deletions
| diff --git a/src/components/ProjectPreview/ProjectPreview.tsx b/src/components/ProjectPreview/ProjectPreview.tsx new file mode 100644 index 0000000..91969b0 --- /dev/null +++ b/src/components/ProjectPreview/ProjectPreview.tsx @@ -0,0 +1,55 @@ +import { t } from '@lingui/macro'; +import { Project } from '@ts/types/app'; +import { slugify } from '@utils/helpers/slugify'; +import Image from 'next/image'; +import Link from 'next/link'; +import styles from './ProjectPreview.module.scss'; + +const ProjectPreview = ({ project }: { project: Project }) => { +  return ( +    <Link href={`/projet/${project.slug}`}> +      <a className={styles.link}> +        <article className={styles.article}> +          <header> +            {project.cover && ( +              <div className={styles.cover}> +                <Image +                  src={project.cover} +                  layout="fill" +                  objectFit="contain" +                  objectPosition="center" +                  alt={`${project.meta.title} picture`} +                /> +              </div> +            )} +            <h2 className={styles.title}>{project.meta.title}</h2> +          </header> +          <div +            className={styles.body} +            dangerouslySetInnerHTML={{ __html: project.intro }} +          ></div> +          <footer> +            <dl className={styles.meta}> +              {project.meta.license && ( +                <div className={styles.meta__item}> +                  <dt>{t`License:`}</dt> +                  <dd>{project.meta.license}</dd> +                </div> +              )} +              {project.meta.technologies && ( +                <div className={styles.meta__item}> +                  <dt>{t`Technologies:`}</dt> +                  {project.meta.technologies.map((techno) => ( +                    <dd key={slugify(techno)}>{techno}</dd> +                  ))} +                </div> +              )} +            </dl> +          </footer> +        </article> +      </a> +    </Link> +  ); +}; + +export default ProjectPreview; | 
