import React from 'react'; import { ThumbsUp, ThumbsDown, ArrowRight, Sparkles, Bookmark, Check } from 'lucide-react'; import { BookCover } from './BookCover'; import type { RecommendationResult } from './types'; interface BookCardProps { result: RecommendationResult; isRead?: boolean; onToggleRead?: (title: string) => void; onClick: () => void; onFeedback: (id: string, type: 'positive' | 'negative') => void; } export function BookCard({ result, isRead, onToggleRead, onClick, onFeedback }: BookCardProps) { const { book, similarity_score } = result; const percentage = Math.round(similarity_score * 100); const handleToggleRead = (e: React.MouseEvent) => { e.stopPropagation(); if (onToggleRead) { onToggleRead(book.title); } }; return (
{/* Read Status Toggle (Absolute Top Right) */} {onToggleRead && ( )} {/* Cover Image Section */}
{/* Match Badge (Mobile Overlay) */}
{percentage}% Match
{/* Content Section */}

{book.title}

{/* Desktop Match Badge */} {percentage}%

by {book.authors?.join(', ') || 'Unknown Author'}

{book.description || 'No description available.'}

{/* Mobile: Simple 'Read more' */} {/* Feedback Actions (Desktop Hover / Mobile Always Visible but subtle) */}
e.stopPropagation()} >
{/* Genre Tags */}
{book.genres?.slice(0, 3).map(genre => ( {genre} ))}
); }