Files
react-shop/src/components/Card.jsx
T
Dan Dobos 013f01bc90 feat: add Tilt component for enhanced product display and integrate with Home component
fix: correct spelling of 'Stock' in Card component
fix: update package.json and package-lock.json to include vanilla-tilt dependency
2025-10-21 09:29:07 +02:00

50 lines
1.3 KiB
React

import { useEffect } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { addToCart, getTotals } from '../features/cartSlice';
import Capitalize from './Capitalize';
const Card = ({ product }) => {
const dispatch = useDispatch();
const cart = useSelector((state) => state.cart);
useEffect(() => {
dispatch(getTotals());
}, [cart, dispatch]);
const handleAddToCart = (product) => {
dispatch(addToCart(product));
};
return (
<>
<h3 className='title'>{Capitalize(product?.title ?? "")}</h3>
<div className='image-container'>
<img src={product.images[0]} alt={Capitalize(product?.title ?? "")} />
</div>
<div className='category'>
<span>{Capitalize(product?.category ?? "")}</span>
<span>{Capitalize(product?.brand ?? "")}</span>
</div>
<p className='description'>{Capitalize(product?.description ?? "")}</p>
<div>
<p className='discount'>
<span>Discount: </span>
<span>{product.discountPercentage}%</span>
</p>
<p className='price'>
<span>Price:</span>
<span>{product.price}</span>
</p>
<p className='stock'>
<span>Stock:</span>
<span>{product.stock}</span>
</p>
</div>
<button onClick={() => handleAddToCart(product)}>Add to cart</button>
</>
);
};
export default Card;