"use client"; import { useState } from "react"; import { Loader2 } from "lucide-react"; import { StoreCart, StoreCartLineItem } from "@medusajs/types" import CartItems from "./cart-items" import { Trans } from '@kit/ui/trans'; import { Button } from '@kit/ui/button'; import { Card, CardContent, CardHeader, } from '@kit/ui/card'; import DiscountCode from "./discount-code"; import { initiatePaymentSession } from "@lib/data/cart"; import { formatCurrency } from "@/packages/shared/src/utils"; import { useTranslation } from "react-i18next"; import { handleNavigateToPayment } from "@/lib/services/medusaCart.service"; import AnalysisLocation from "./analysis-location"; const IS_DISCOUNT_SHOWN = true as boolean; export default function Cart({ cart, synlabAnalyses, ttoServiceItems, }: { cart: StoreCart | null synlabAnalyses: StoreCartLineItem[]; ttoServiceItems: StoreCartLineItem[]; }) { const { i18n: { language } } = useTranslation(); const [isInitiatingSession, setIsInitiatingSession] = useState(false); const items = cart?.items ?? []; if (!cart || items.length === 0) { return (

); } async function initiatePayment() { setIsInitiatingSession(true); const response = await initiatePaymentSession(cart!, { provider_id: 'pp_montonio_montonio', }); if (response.payment_collection) { const { payment_sessions } = response.payment_collection; const paymentSessionId = payment_sessions![0]!.id; const url = await handleNavigateToPayment({ language, paymentSessionId }); window.location.href = url; } else { setIsInitiatingSession(false); } } const hasCartItems = Array.isArray(cart.items) && cart.items.length > 0; const isLocationsShown = synlabAnalyses.length > 0; return (
{hasCartItems && ( <>

{formatCurrency({ value: cart.subtotal, currencyCode: cart.currency_code, locale: language, })}

{formatCurrency({ value: cart.discount_total, currencyCode: cart.currency_code, locale: language, })}

{formatCurrency({ value: cart.total, currencyCode: cart.currency_code, locale: language, })}

)}
{IS_DISCOUNT_SHOWN && (
)} {isLocationsShown && (
)}
); }