feat(MED-123): analysis to order can be not-available

This commit is contained in:
Karli
2025-08-18 14:11:19 +03:00
parent 9b50b0f92a
commit abf455117d
3 changed files with 56 additions and 41 deletions

View File

@@ -14,6 +14,7 @@ import { useState } from 'react';
import { handleAddToCart } from '~/lib/services/medusaCart.service'; import { handleAddToCart } from '~/lib/services/medusaCart.service';
import { useRouter } from 'next/navigation'; import { useRouter } from 'next/navigation';
import { InfoTooltip } from '~/components/ui/info-tooltip'; import { InfoTooltip } from '~/components/ui/info-tooltip';
import { Trans } from '@kit/ui/trans';
export default function OrderAnalysesCards({ export default function OrderAnalysesCards({
analyses, analyses,
@@ -49,47 +50,59 @@ export default function OrderAnalysesCards({
variants, variants,
description, description,
subtitle, subtitle,
}) => ( status,
<Card metadata,
key={title} }) => {
variant="gradient-success" const isAvailable = status === 'published' && !!metadata?.analysisIdOriginal;
className="flex flex-col justify-between" return (
> <Card
<CardHeader className="flex-row"> key={title}
<div variant={isAvailable ? "gradient-success" : "gradient-warning"}
className={'flex size-8 items-center-safe justify-center-safe rounded-full text-white bg-primary\/10 mb-6'} className="flex flex-col justify-between"
> >
<HeartPulse className="size-4 fill-green-500" /> <CardHeader className="flex-row">
</div> <div
<div className='ml-auto flex size-8 items-center-safe justify-center-safe rounded-full text-white bg-warning'> className={'flex size-8 items-center-safe justify-center-safe rounded-full text-white bg-primary\/10 mb-6'}
<Button
size="icon"
variant="outline"
className="px-2 text-black"
onClick={() => handleSelect(variants![0]!)}
> >
{isAddingToCart ? <Loader2 className="size-4 stroke-2 animate-spin" /> : <ShoppingCart className="size-4 stroke-2" />} <HeartPulse className="size-4 fill-green-500" />
</Button> </div>
</div> {isAvailable && (
</CardHeader> <div className='ml-auto flex size-8 items-center-safe justify-center-safe rounded-full text-white bg-warning'>
<CardFooter className="flex flex-col items-start gap-2"> <Button
<h5> size="icon"
{title} variant="outline"
{description && ( className="px-2 text-black"
<> onClick={() => handleSelect(variants![0]!)}
{' '} >
<InfoTooltip content={`${description}`} /> {isAddingToCart ? <Loader2 className="size-4 stroke-2 animate-spin" /> : <ShoppingCart className="size-4 stroke-2" />}
</> </Button>
</div>
)} )}
</h5> </CardHeader>
{subtitle && ( <CardFooter className="flex flex-col items-start gap-2">
<CardDescription> <h5>
{subtitle} {title}
</CardDescription> {description && (
)} <>
</CardFooter> {' '}
</Card> <InfoTooltip content={`${description}`} />
))} </>
)}
</h5>
{isAvailable && subtitle && (
<CardDescription>
{subtitle}
</CardDescription>
)}
{!isAvailable && (
<CardDescription>
<Trans i18nKey={'order-analysis:analysisNotAvailable'} />
</CardDescription>
)}
</CardFooter>
</Card>
);
})}
</div> </div>
); );
} }

View File

@@ -1,4 +1,5 @@
{ {
"title": "Select analysis", "title": "Select analysis",
"description": "Select the analysis that suits your needs" "description": "Select the analysis that suits your needs",
"analysisNotAvailable": "Analysis is not available currently"
} }

View File

@@ -1,4 +1,5 @@
{ {
"title": "Vali analüüs", "title": "Vali analüüs",
"description": "Vali enda vajadustele sobiv analüüs" "description": "Vali enda vajadustele sobiv analüüs",
"analysisNotAvailable": "Analüüsi tellimine ei ole hetkel saadaval"
} }