'use client' import { useState, useEffect } from 'react' import { ExternalLink, ShoppingCart, Loader2, AlertCircle } from 'lucide-react' import { Button } from '@/components/ui/button' import { getTopPartsForManual, type PartForPage } from '@/lib/parts-lookup' interface PartsPanelProps { manualFilename: string className?: string } export function PartsPanel({ manualFilename, className = '' }: PartsPanelProps) { const [parts, setParts] = useState([]) const [isLoading, setIsLoading] = useState(true) const [error, setError] = useState(null) const [isSearching, setIsSearching] = useState(false) useEffect(() => { async function loadParts() { setIsLoading(true) setIsSearching(false) setError(null) try { const topParts = await getTopPartsForManual(manualFilename, 5) setParts(topParts) } catch (err) { console.error('Error loading parts:', err) setError('Could not load parts') } finally { setIsLoading(false) } } if (manualFilename) { loadParts() } }, [manualFilename]) if (isLoading) { return (
Parts
Loading parts...
) } if (error || parts.length === 0) { return (
Parts
No parts available
) } return (
Parts ({parts.length})
{parts.map((part, index) => (
{/* Part Header */}
{part.partNumber}
{part.description && (
{part.description}
)}
{/* eBay Listings */} {part.ebayListings.length > 0 && ( )} {/* View All Listings Button */} {part.ebayListings.length > 2 && (
)}
))} {/* View All Parts Button */} {parts.length > 3 && (
)}
) }