'use client'; import { motion } from 'framer-motion'; import { useRouter } from 'next/navigation'; import { FaPlay, FaShoppingCart, FaInfoCircle } from 'react-icons/fa'; import { Album } from '@/lib/types'; import { useCart } from '@/lib/CartContext'; import { formatPrice } from '@/lib/utils'; interface AlbumCardProps { album: Album; isPurchased: boolean; onPlay: (album: Album) => void; onPurchase: (album: Album) => void; } export default function AlbumCard({ album, isPurchased, onPlay, onPurchase }: AlbumCardProps) { const router = useRouter(); const { addToCart, isInCart } = useCart(); const handleAddToCart = (e: React.MouseEvent) => { e.stopPropagation(); if (!isInCart(album.id) && !isPurchased) { addToCart(album); } }; const handleViewDetails = (e?: React.MouseEvent) => { if (e) { e.stopPropagation(); } router.push(`/album/${album.id}`); }; const handleCardClick = () => { router.push(`/album/${album.id}`); }; return ( {/* Album Cover */}
{album.coverImage ? ( {album.title} ) : (
{album.title}
)} {/* Overlay on hover */}
{!isPurchased && ( )}
{/* Purchased Badge */} {isPurchased && (
Owned
)}
{/* Album Info */}

{album.title}

{album.year} • {album.genre}

{album.description}

{album.songs.length} tracks {!isPurchased && ( {formatPrice(album.price)} )}
); }