1
0
Fork 0
freesewing/sites/shared/components/designs/design.mjs

46 lines
1.6 KiB
JavaScript
Raw Normal View History

2023-05-01 18:27:06 +02:00
import Link from 'next/link'
import { useTranslation } from 'next-i18next'
import { Difficulty } from 'shared/components/designs/difficulty.mjs'
import { designs } from 'shared/config/designs.mjs'
import { DesignTag } from 'shared/components/designs/tag.mjs'
export const ns = ['design', 'designs', 'tags']
const defaultLink = (design) => `/new/${design}`
export const Design = ({ name, hrefBuilder = false }) => {
2023-05-01 18:27:06 +02:00
const { t } = useTranslation(ns)
const getHref = hrefBuilder ? hrefBuilder : defaultLink
2023-05-01 18:27:06 +02:00
return (
<div
2023-05-01 18:27:06 +02:00
className={`flex flex-col flex-nowrap items-start justify-start gap-2 pt-2 pb-4 h-auto w-96
btn btn-secondary btn-ghost border border-secondary
2023-05-24 09:48:09 -05:00
hover:bg-opacity-20 hover:bg-secondary hover:border hover:border-secondary
relative`}
2023-05-01 18:27:06 +02:00
>
2023-05-24 09:48:09 -05:00
<Link
href={getHref(name)}
2023-05-24 09:48:09 -05:00
className="w-full h-full before:absolute before:inset-y-0 before:inset-x-0"
>
<h5 className="flex flex-row items-center justify-between w-full">
<span>{t(`designs:${name}.t`)}</span>
<span className="flex flex-col items-end">
<span className="text-xs font-medium opacity-70">{t('design:difficulty')}</span>
<Difficulty score={designs[name].difficulty} />
</span>
</h5>
<span className={`normal-case text-base font-medium text-base-content text-left grow`}>
{t(`designs:${name}.d`)}
</span>
</Link>
<span className="flex flex-row flex-wrap gap-1 relative z-10">
2023-05-01 18:27:06 +02:00
{designs[name].tags.map((tag) => (
<DesignTag key={tag} tag={tag} />
))}
</span>
</div>
2023-05-01 18:27:06 +02:00
)
}