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}
))}
);
}