import { useState, useEffect } from 'react' import { useTranslation } from 'next-i18next' import { configs } from 'shared/designs/index.js' import DesignIcon from 'shared/components/icons/design.js' import Worm from 'shared/components/worm.js' import { strapiHost } from 'shared/config/freesewing.mjs' import Link from 'next/link' const colors = { 1: 'bg-pink-300', 2: 'bg-green-400', 3: 'bg-yellow-400', 4: 'bg-orange-400', 5: 'bg-red-400' } const Difficulty = ({ score=1 }) => { const icons = [] for (let i=0;i) } return icons } const Design = ({ design }) => { const { t } = useTranslation(['patterns']) const { code="Anonymous", difficulty=3, } = configs[design] const designer = configs[design].design || "Anonymous" const people = new Set() for (const contrib of ['design', 'code']) { if (Array.isArray(configs[design][contrib])) { for (const person of configs[design][contrib]) people.add(person) } else people.add(configs[design][contrib]) } const [examples, setExamples] = useState([]) useEffect(async () => { // Strapi filtering syntax const url = `${strapiHost}/showcaseposts?_locale=en&_sort=date:DESC` + `&_where[_or][0][design1_eq]=${design}` + `&_where[_or][1][design2_eq]=${design}` + `&_where[_or][2][design3_eq]=${design}` + `&_limit=6` await fetch(url) .then(response => response.json()) .then(data => setExamples(data.map(post => ({ slug: `/showcase/${post.slug}`, img: `${strapiHost}${post.image.formats.thumbnail.url}`, title: post.title })))) .catch(err => console.log(err)) }, [ design ]) return (
{/* Link over the entire card */} {/* Slanted corner ribbon with the difficulty */}
{/* People who did the Design/Code */}
{[...people].map(person => person).join(' / ')}

{t(`${design}.t`)}

{t(`${design}.d`)}
) } export default Design