import { useState } from 'react'; import { useParams } from 'react-router-dom'; import { Heart, MapPin, Eye, Star, MessageSquare, Share2, Flag } from 'lucide-react'; import { Card } from '../components/ui/Card'; import { GradientButton } from '../components/ui/GradientButton'; import { Button } from '../components/ui/Button'; import { Badge } from '../components/ui/Badge'; import { Avatar } from '../components/ui/Avatar'; import { Modal } from '../components/ui/Modal'; import { Input } from '../components/ui/Input'; import { mockListings } from '../utils/mockData'; import { formatCurrency, formatDate } from '../utils/format'; export function ProductDetailPage() { const { id } = useParams(); const listing = mockListings.find(l => l.id === id) || mockListings[0]!; const [isFav, setIsFav] = useState(listing.isFavorited ?? false); const [showOffer, setShowOffer] = useState(false); const [showEdit, setShowEdit] = useState(false); const [offerAmount, setOfferAmount] = useState(''); const [offerMessage, setOfferMessage] = useState(''); const conditionVariant = listing.condition === 'NEW' ? 'success' : listing.condition === 'LIKE_NEW' ? 'info' : 'default'; const categoryEmoji = listing.category === 'FURNITURE' ? '\uD83E\uDE91' : listing.category === 'ELECTRONICS' ? '\uD83C\uDFA7' : listing.category === 'CLOTHING' ? '\uD83D\uDC55' : listing.category === 'HOME_GARDEN' ? '\u2615' : '\uD83D\uDCE6'; return (
{/* Images */}
{categoryEmoji}
{[0, 1, 2, 3].map(i => (
{categoryEmoji}
))}
{/* Details */}

{listing.title}

{listing.condition.replace('_', ' ')} {listing.viewCount} views

{formatCurrency(listing.price)} {listing.obo && or best offer}

{/* Actions */}
setShowOffer(true)}> Make Offer
{/* Seller Info */}

{listing.seller.fullName}

{listing.seller.rating} Joined {formatDate(listing.seller.createdAt)}
{/* Description */}

Item Description

{listing.description}

{/* Location */}

Location

{listing.location}

{/* Make Offer Modal */} setShowOffer(false)} title="Make Offer" size="sm">

Enter your offer amount and message to the seller

setOfferAmount(e.target.value)} />