'use client' import { useState, useEffect } from 'react' import { Link, usePathname, useRouter } from '@/i18n/routing' import { useTranslations, useLocale } from 'next-intl' import { Menu, X, Globe, PlusCircle, Heart } from 'lucide-react' import { Category } from '@prisma/client' export default function Navbar({ categories = [] }: { categories?: Category[] }) { const t = useTranslations('nav') const activeLocale = useLocale() const pathname = usePathname() const router = useRouter() const [mobileMenuOpen, setMobileMenuOpen] = useState(false) const [langMenuOpen, setLangMenuOpen] = useState(false) const [favoritesCount, setFavoritesCount] = useState(0) useEffect(() => { const updateCount = () => { try { const stored = localStorage.getItem('savedListingIds') if (stored) { const ids = JSON.parse(stored) as string[] setFavoritesCount(ids.length) } else { setFavoritesCount(0) } } catch (e) { console.error('Error reading localStorage:', e) } } updateCount() window.addEventListener('favorites-updated', updateCount) window.addEventListener('storage', updateCount) return () => { window.removeEventListener('favorites-updated', updateCount) window.removeEventListener('storage', updateCount) } }, []) const languages = [ { code: 'tr', label: 'Türkçe' }, { code: 'en', label: 'English' }, { code: 'ru', label: 'Русский' } ] const getLocalizedName = (obj: any) => { if (!obj) return '' return activeLocale === 'ru' ? obj.nameRu : activeLocale === 'en' ? obj.nameEn : obj.nameTr } const categoryItems = categories.map(cat => ({ name: getLocalizedName(cat), href: `/${cat.slug}` })) const navItems = [ ...categoryItems, { name: t('events'), href: '/events' }, { name: t('blog'), href: '/blog' }, ] const handleLanguageChange = (localeCode: string) => { setLangMenuOpen(false) router.replace(pathname, { locale: localeCode }) } return (
{/* Logo & Wordmark */}
ML

marmaris local

local knowledge

{/* Desktop Navigation */} {/* Action Items */}
{/* Saved items trigger */} {favoritesCount > 0 && ( {favoritesCount} )} {/* Language Selector */}
{langMenuOpen && ( <>
setLangMenuOpen(false)} />
{languages.map((lang) => ( ))}
)}
{/* Add Business Button */} {t('addBusiness')}
{/* Mobile menu button */}
{/* Mobile Saved trigger */} {favoritesCount > 0 && ( {favoritesCount} )} {/* Lang menu for mobile */}
{langMenuOpen && ( <>
setLangMenuOpen(false)} />
{languages.map((lang) => ( ))}
)}
{/* Mobile Menu */} {mobileMenuOpen && (
setMobileMenuOpen(false)} className="w-full flex items-center justify-center gap-2 bg-turquoise hover:bg-turquoise/90 text-paper font-medium py-3 rounded-lg text-sm transition" > {t('addBusiness')}
)}
) }