CartSidebar.jsx 1.83 KB
import React from 'react'
import { Link } from 'react-router-dom'
import { useCart } from '../../context/CartContext'
import CartItem from './CartItem'
import './cart.css'

const CartSidebar = ({ isOpen, onClose }) => {
  const { cartItems, getCartTotal, getCartItemsCount } = useCart()

  if (!isOpen) return null

  return (
    <div className="cart-sidebar-overlay" onClick={onClose}>
      <div className="cart-sidebar" onClick={(e) => e.stopPropagation()}>
        <div className="cart-header">
          <h2>Shopping Cart ({getCartItemsCount()})</h2>
          <button onClick={onClose} className="close-button">×</button>
        </div>

        <div className="cart-content">
          {cartItems.length === 0 ? (
            <div className="empty-cart">
              <p>Your cart is empty</p>
              <Link to="/products" onClick={onClose} className="continue-shopping">
                Continue Shopping
              </Link>
            </div>
          ) : (
            <>
              <div className="cart-items">
                {cartItems.map(item => (
                  <CartItem key={item.product._id} item={item} />
                ))}
              </div>
              
              <div className="cart-footer">
                <div className="cart-total">
                  <strong>Total: ${getCartTotal().toFixed(2)}</strong>
                </div>
                
                <div className="cart-actions">
                  <Link to="/cart" onClick={onClose} className="view-cart-button">
                    View Cart
                  </Link>
                  <Link to="/checkout" onClick={onClose} className="checkout-button">
                    Checkout
                  </Link>
                </div>
              </div>
            </>
          )}
        </div>
      </div>
    </div>
  )
}

export default CartSidebar