import { useState } from 'react' import { useNavigate } from 'react-router-dom' import { Heart, ExternalLink, Music, ThumbsDown, Repeat, Share2, Check } from 'lucide-react' import type { RecommendationItem } from '../lib/api' import { shareRecommendation } from '../lib/api' interface Props { recommendation: RecommendationItem onToggleSave: (id: string) => void onDislike?: (id: string) => void saving?: boolean disliking?: boolean } export default function RecommendationCard({ recommendation, onToggleSave, onDislike, saving, disliking }: Props) { const navigate = useNavigate() const [sharing, setSharing] = useState(false) const [shared, setShared] = useState(false) const handleMoreLikeThis = () => { const q = `find songs similar to ${recommendation.artist} - ${recommendation.title}` navigate(`/discover?q=${encodeURIComponent(q)}`) } const handleShare = async () => { if (sharing) return setSharing(true) try { const { share_url } = await shareRecommendation(recommendation.id) await navigator.clipboard.writeText(share_url) setShared(true) setTimeout(() => setShared(false), 2000) } catch { // Fallback: if clipboard fails, silently ignore } finally { setSharing(false) } } return (
) }