From c153f93dc8691a71dc76aad3dd618298da9d238a Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Tue, 17 Oct 2023 19:46:08 +0200 Subject: refactor(components): rewrite Card component * make the component more generic * merge `` and `` styles into card component to avoid repeating the same structure * remove most of the props to use composition However the CSS is a bit complex because of the two variants... Also, the component should be refactored when the CSS pseudo-class `:has` has enough support: the provider and the `cover` and `meta` props should be removed. --- src/pages/projets/index.tsx | 72 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 17 deletions(-) (limited to 'src/pages/projets') diff --git a/src/pages/projets/index.tsx b/src/pages/projets/index.tsx index 44354ce..abb6da0 100644 --- a/src/pages/projets/index.tsx +++ b/src/pages/projets/index.tsx @@ -2,14 +2,22 @@ import type { MDXComponents } from 'mdx/types'; import type { GetStaticProps } from 'next'; import Head from 'next/head'; +import NextImage from 'next/image'; import { useRouter } from 'next/router'; import Script from 'next/script'; import { useIntl } from 'react-intl'; import { + Card, + CardCover, + CardBody, + CardFooter, + CardHeader, + CardTitle, CardsList, type CardsListItem, getLayout, Link, + MetaList, PageLayout, } from '../../components'; import PageContent, { meta } from '../../content/pages/projects.mdx'; @@ -56,24 +64,54 @@ const ProjectsPage: NextPageWithLayout = ({ projects }) => { const items: CardsListItem[] = projects.map( ({ id, meta: projectMeta, slug, title: projectTitle }) => { const { cover, tagline, technologies } = projectMeta; + const figureLabel = intl.formatMessage( + { + defaultMessage: '{title} cover', + description: 'ProjectsPage: figure (cover) accessible name', + id: 'FdF33B', + }, + { title: projectTitle } + ); return { - cover, - id: id as string, - meta: technologies?.length - ? [ - { - id: 'technologies', - label: metaLabel, - value: technologies.map((techno) => { - return { id: techno, value: techno }; - }), - }, - ] - : [], - tagline, - title: projectTitle, - url: `${ROUTES.PROJECTS}/${slug}`, + card: ( + + + + ) : undefined + } + meta={ + technologies ? ( + { + return { id: techno, value: techno }; + }), + }, + ]} + /> + ) : undefined + } + isCentered + linkTo={`${ROUTES.PROJECTS}/${slug}`} + > + + {projectTitle} + + {tagline} + + + ), + id: `${id}`, }; } ); @@ -127,7 +165,7 @@ const ProjectsPage: NextPageWithLayout = ({ projects }) => { breadcrumb={breadcrumbItems} breadcrumbSchema={breadcrumbSchema} > - + ); -- cgit v1.2.3