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