'use client'; import { useState } from 'react'; import Image from 'next/image'; import { useRouter } from 'next/navigation'; import type { AdminProductVariant, StoreProduct } from '@medusajs/types'; import { useTranslation } from 'react-i18next'; import { Button } from '@kit/ui/button'; import { Card, CardContent, CardDescription, CardFooter, CardHeader, } from '@kit/ui/card'; import { toast } from '@kit/ui/sonner'; import { Spinner } from '@kit/ui/spinner'; import { Trans } from '@kit/ui/trans'; import { handleAddToCart } from '~/lib/services/medusaCart.service'; import { pathsConfig } from '../config'; import { PackageHeader } from './package-header'; import { ButtonTooltip } from './ui/button-tooltip'; export type AnalysisPackageWithVariant = Pick< StoreProduct, 'title' | 'description' | 'subtitle' | 'metadata' > & { variantId: string; nrOfAnalyses: number; price: number; isStandard: boolean; isStandardPlus: boolean; isPremium: boolean; variant: Pick; }; export default function SelectAnalysisPackage({ analysisPackage, countryCode, }: { analysisPackage: AnalysisPackageWithVariant; countryCode: string; }) { const router = useRouter(); const { t, i18n: { language }, } = useTranslation(); const [isAddingToCart, setIsAddingToCart] = useState(false); const { nrOfAnalyses, variantId, title, subtitle = '', description = '', price, } = analysisPackage; const handleSelect = async () => { setIsAddingToCart(true); try { await handleAddToCart({ selectedVariant: { id: variantId }, countryCode, }); setIsAddingToCart(false); toast.success( , ); router.push(pathsConfig.app.cart); } catch (e) { toast.error( , ); setIsAddingToCart(false); console.error(e); } }; return ( {description && ( )} background {subtitle} ); }