payble fix with discount

This commit is contained in:
hamid zarghami
2025-12-18 10:38:16 +03:30
parent 1c39e9c6b3
commit 510d1718f4
3 changed files with 71 additions and 23 deletions
+35 -3
View File
@@ -64,11 +64,30 @@ const MenuItem = ({ food }: MenuItemProps) => {
return desc.replace(/,/g, '،');
}, [food.description, food.desc]);
const finalPrice = useMemo(() => {
const basePrice = food.price || 0;
const discount = food.discount || 0;
if (discount > 0) {
return Math.max(0, basePrice - discount);
}
return basePrice;
}, [food.price, food.discount]);
const formattedPrice = useMemo(
() => (finalPrice ? finalPrice.toLocaleString('fa-IR') : '0'),
[finalPrice]
);
const formattedOriginalPrice = useMemo(
() => (food.price ? food.price.toLocaleString('fa-IR') : '0'),
[food.price]
);
const hasDiscount = useMemo(
() => (food.discount || 0) > 0,
[food.discount]
);
const handleAddToCart = () => {
addToCart(food.id);
};
@@ -104,9 +123,22 @@ const MenuItem = ({ food }: MenuItemProps) => {
</div>
</Link>
<div className="inline-flex mt-2 gap-2 justify-between w-full items-center">
<span className="w-full text-sm mt-1" dir="ltr">
{formattedPrice} T
</span>
<div className="w-full flex flex-col gap-1" dir="ltr">
{hasDiscount ? (
<>
<span className="text-xs text-disabled-text line-through">
{formattedOriginalPrice} T
</span>
<span className="text-sm font-medium text-primary dark:text-foreground">
{formattedPrice} T
</span>
</>
) : (
<span className="text-sm mt-1">
{formattedPrice} T
</span>
)}
</div>
<motion.div
whileTap={{ scale: 1.05 }}
className="bg-background active:drop-shadow-xs max-w-[115px] rounded-md w-full h-8 inline-flex p-1 justify-between items-center gap-2 relative overflow-hidden"