'use client' import { useState, useEffect } from 'react' import Image from 'next/image' import { Link } from '@/i18n/routing' import { useLocale } from 'next-intl' import { Star, Heart } from 'lucide-react' export interface Gallery { id: string url: string } export interface Category { slug: string nameTr: string nameEn: string nameRu: string } export interface Neighborhood { slug: string nameTr: string nameEn: string nameRu: string } export interface Listing { id: string slug: string categoryId: string neighborhoodId: string nameTr: string nameEn: string nameRu: string descriptionTr: string descriptionEn: string descriptionRu: string address: string priceRange: number rating?: number | null isLocalApproved: boolean images: Gallery[] category?: Category neighborhood?: Neighborhood } export default function ListingCard({ listing }: { listing: Listing }) { const locale = useLocale() const [isSaved, setIsSaved] = useState(false) useEffect(() => { try { const stored = localStorage.getItem('savedListingIds') if (stored) { const ids = JSON.parse(stored) as string[] setIsSaved(ids.includes(listing.id)) } } catch (e) { console.error('Error reading localStorage:', e) } }, [listing.id]) const toggleSave = (e: React.MouseEvent) => { e.preventDefault() e.stopPropagation() try { const stored = localStorage.getItem('savedListingIds') let ids: string[] = stored ? JSON.parse(stored) : [] if (ids.includes(listing.id)) { ids = ids.filter(id => id !== listing.id) setIsSaved(false) } else { ids.push(listing.id) setIsSaved(true) } localStorage.setItem('savedListingIds', JSON.stringify(ids)) window.dispatchEvent(new Event('favorites-updated')) } catch (err) { console.error('Error writing localStorage:', err) } } const name = locale === 'ru' ? listing.nameRu : locale === 'en' ? listing.nameEn : listing.nameTr const categoryName = listing.category ? locale === 'ru' ? listing.category.nameRu : locale === 'en' ? listing.category.nameEn : listing.category.nameTr : '' const neighborhoodName = listing.neighborhood ? locale === 'ru' ? listing.neighborhood.nameRu : locale === 'en' ? listing.neighborhood.nameEn : listing.neighborhood.nameTr : '' const priceSymbols = '₺'.repeat(listing.priceRange) const categorySlug = listing.category?.slug || 'isletme' const mainImageUrl = listing.images && listing.images.length > 0 ? listing.images[0].url : 'https://images.unsplash.com/photo-1555396273-367ea4eb4db5?w=800&auto=format&fit=crop&q=80' const saveAriaLabel = isSaved ? locale === 'ru' ? 'Удалить из избранного' : locale === 'en' ? 'Remove from saved' : 'Favorilerden çıkar' : locale === 'ru' ? 'Добавить в избранное' : locale === 'en' ? 'Save listing' : 'Favorilere ekle' return (