chore: transfer repo
This commit is contained in:
64
components/cart/CartSummary.tsx
Normal file
64
components/cart/CartSummary.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
'use client';
|
||||
|
||||
import { Button } from '@/components/ui/Button';
|
||||
import { Heading, Text } from '@/components/ui/Typography';
|
||||
import { useTranslation } from '@/lib/hooks/useTranslation';
|
||||
import Price from 'components/price';
|
||||
import { Cart } from 'lib/shopify/types';
|
||||
import { useState } from 'react';
|
||||
import { redirectToCheckout } from './actions';
|
||||
|
||||
interface CartSummaryProps {
|
||||
cart: Cart;
|
||||
}
|
||||
|
||||
export function CartSummary({ cart }: CartSummaryProps) {
|
||||
const { t } = useTranslation();
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
|
||||
const handleCheckout = async () => {
|
||||
setIsLoading(true);
|
||||
await redirectToCheckout();
|
||||
setIsLoading(false);
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="border rounded-md p-6 bg-white sticky top-20">
|
||||
<Heading level={4} className="mb-6">{t('cart.orderSummary')}</Heading>
|
||||
|
||||
<div className="space-y-4 mb-6">
|
||||
<div className="flex justify-between">
|
||||
<Text weight="semibold">{t('cart.subtotal')}</Text>
|
||||
<Price
|
||||
amount={cart.cost.subtotalAmount.amount}
|
||||
currencyCode={cart.cost.subtotalAmount.currencyCode}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-between">
|
||||
<Text weight="semibold">{t('cart.shipping')}</Text>
|
||||
<Text size="sm" color="muted" className="text-right">{t('cart.calculated')}</Text>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-between">
|
||||
<Text weight="semibold">{t('cart.total')}</Text>
|
||||
<Price
|
||||
amount={cart.cost.totalAmount.amount}
|
||||
currencyCode={cart.cost.totalAmount.currencyCode}
|
||||
className="text-xl font-bold"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Button
|
||||
onClick={handleCheckout}
|
||||
disabled={isLoading}
|
||||
variant="primary"
|
||||
fullWidth
|
||||
size="lg"
|
||||
>
|
||||
{isLoading ? "Loading..." : t('cart.continueToCheckout')}
|
||||
</Button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user