"use client"; import React, { useState } from 'react'; import Link from 'next/link'; import { CheckCircle, MapPin, Star, Phone, Share2, Facebook, Linkedin, Instagram, Twitter, Heart } from 'lucide-react'; import { useUser } from './UserProvider'; import { Business } from '../types'; import { toast } from 'react-hot-toast'; const BusinessCard: React.FC<{ business: Business }> = ({ business }) => { const { user } = useUser(); const [isShareOpen, setIsShareOpen] = useState(false); const [isFavorited, setIsFavorited] = useState(false); const [isToggling, setIsToggling] = useState(false); const toggleFavorite = async (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); if (!user) { toast.error("Connectez-vous pour ajouter des favoris"); return; } setIsToggling(true); try { const res = await fetch('/api/favorites', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-user-id': user.id }, body: JSON.stringify({ businessId: business.id }) }); const data = await res.json(); if (!data.error) { setIsFavorited(data.favorited); toast.success(data.favorited ? 'Ajouté aux favoris' : 'Retiré des favoris'); } } catch (error) { toast.error('Erreur réseau'); } finally { setIsToggling(false); } }; const toggleShare = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); setIsShareOpen(!isShareOpen); }; const handleShare = (platform: string) => { const url = encodeURIComponent(`${window.location.origin}/annuaire/${business.id}`); const text = encodeURIComponent(`Découvrez ${business.name} sur Afrohub`); let shareLink = ''; switch(platform) { case 'facebook': shareLink = `https://www.facebook.com/sharer/sharer.php?u=${url}`; break; case 'twitter': shareLink = `https://twitter.com/intent/tweet?url=${url}&text=${text}`; break; case 'linkedin': shareLink = `https://www.linkedin.com/sharing/share-offsite/?url=${url}`; break; case 'instagram': // Instagram web share is limited, alerting user toast("Pour partager sur Instagram, copiez le lien ou faites une capture d'écran.", { icon: '📸' }); setIsShareOpen(false); return; } if (shareLink) { window.open(shareLink, '_blank', 'width=600,height=400'); } setIsShareOpen(false); }; return (
{/* Header with Image and Actions */}
Couverture
{/* Action Buttons */}
{business.contactPhone && ( e.stopPropagation()} className="p-2 bg-white/20 backdrop-blur-md border border-white/20 rounded-full text-white hover:bg-white hover:text-brand-600 transition-all shadow-sm" title="Appeler" > )}
{isShareOpen && (
setIsShareOpen(false)}>
Partager
)}
{/* Logo */}
{business.name}
{/* Body */}
{business.name} {business.verified && }

{business.category}

{business.location}

{business.description}

{business.rating} ({business.viewCount} vues)
Voir la fiche
); }; export default BusinessCard;