2023-05-05 19:56:51 +02:00
|
|
|
import { ChoiceLink } from 'shared/components/choice-link.mjs'
|
|
|
|
import { OkIcon, NoIcon, WarningIcon } from 'shared/components/icons.mjs'
|
|
|
|
import { useTranslation } from 'next-i18next'
|
|
|
|
|
|
|
|
export const ns = ['sets']
|
|
|
|
|
|
|
|
const Title = ({ set }) => (
|
|
|
|
<div className="flex flex-row items-center gap-2">
|
|
|
|
<img
|
|
|
|
alt="img"
|
|
|
|
src={set.img}
|
|
|
|
className="shadow mask mask-squircle bg-neutral aspect-square w-12 h-12"
|
|
|
|
/>
|
|
|
|
<span>{set.name}</span>
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
|
2023-06-20 17:30:18 +02:00
|
|
|
export const SetLacksMeasies = ({ set, design, t, hrefBuilder }) => (
|
2023-05-05 19:56:51 +02:00
|
|
|
<ChoiceLink
|
|
|
|
icon={<NoIcon className="w-10 h-10 text-error" />}
|
|
|
|
title={<Title set={set} />}
|
2023-06-20 17:30:18 +02:00
|
|
|
href={hrefBuilder(design, set)}
|
2023-05-05 19:56:51 +02:00
|
|
|
>
|
|
|
|
<div className="flex flex-row gap-2 items-center">
|
|
|
|
<WarningIcon className="w-6 h-6 shrink-0 text-error" />
|
|
|
|
<span>{t('setLacksMeasiesForDesign', { design: t(`designs:${design}.t`) })}</span>
|
|
|
|
</div>
|
|
|
|
</ChoiceLink>
|
|
|
|
)
|
|
|
|
|
2023-06-20 17:30:18 +02:00
|
|
|
export const SetSummary = ({ set, design, t, hrefBuilder }) => (
|
2023-05-05 19:56:51 +02:00
|
|
|
<ChoiceLink
|
|
|
|
title={<Title set={set} />}
|
|
|
|
icon={<OkIcon className="w-10 h-10 text-success" stroke={3} />}
|
2023-06-20 17:30:18 +02:00
|
|
|
href={hrefBuilder(design, set)}
|
2023-05-18 11:38:54 +02:00
|
|
|
></ChoiceLink>
|
2023-05-05 19:56:51 +02:00
|
|
|
)
|
|
|
|
|
2023-06-20 17:30:18 +02:00
|
|
|
export const SetCandidate = ({ set, design, requiredMeasies = [], hrefBuilder }) => {
|
2023-05-05 19:56:51 +02:00
|
|
|
const { t } = useTranslation(['sets'])
|
|
|
|
|
2023-06-20 17:30:18 +02:00
|
|
|
const setProps = { set, design, t, hrefBuilder }
|
2023-05-05 19:56:51 +02:00
|
|
|
|
|
|
|
// Quick check for required measurements
|
|
|
|
if (!set.measies || Object.keys(set.measies).length < requiredMeasies.length)
|
|
|
|
return <SetLacksMeasies {...setProps} />
|
|
|
|
|
|
|
|
// Proper check for required measurements
|
|
|
|
for (const m of requiredMeasies) {
|
|
|
|
if (!Object.keys(set.measies).includes(m)) return <SetLacksMeasies {...setProps} />
|
|
|
|
}
|
|
|
|
|
|
|
|
return <SetSummary {...setProps} />
|
|
|
|
}
|