"use client"; import { HeartPulse, Loader2, ShoppingCart } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { Button } from '@kit/ui/button'; import { Card, CardHeader, CardFooter, CardDescription, } from '@kit/ui/card'; import { StoreProduct } from '@medusajs/types'; import { useState } from 'react'; import { handleAddToCart } from '~/lib/services/medusaCart.service'; import { InfoTooltip } from '@kit/shared/components/ui/info-tooltip'; import { Trans } from '@kit/ui/trans'; import { toast } from '@kit/ui/sonner'; import { formatCurrency } from '@/packages/shared/src/utils'; export type OrderAnalysisCard = Pick< StoreProduct, 'title' | 'description' | 'subtitle' > & { isAvailable: boolean; variant: { id: string }; price: number | null; }; export default function OrderAnalysesCards({ analyses, countryCode, }: { analyses: OrderAnalysisCard[]; countryCode: string; }) { const { i18n: { language } } = useTranslation() const [variantAddingToCart, setVariantAddingToCart] = useState(null); const handleSelect = async (variantId: string) => { if (variantAddingToCart) { return null; } setVariantAddingToCart(variantId); try { await handleAddToCart({ selectedVariant: { id: variantId }, countryCode, }); toast.success(); setVariantAddingToCart(null); } catch (e) { toast.error(); setVariantAddingToCart(null); console.error(e); } } return (
{analyses.map(({ title, variant, description, subtitle, isAvailable, price, }) => { const formattedPrice = typeof price === 'number' ? formatCurrency({ currencyCode: 'eur', locale: language, value: price, }) : null; return (
{isAvailable && (
)}
{title} {description && ( <> {' '} {formattedPrice} {description}
} /> )} {isAvailable && subtitle && ( {subtitle} )} {!isAvailable && ( )} ); })} ); }