import React, { useState, useEffect } from 'react'; import { Link, useNavigate, useLocation } from 'react-router-dom'; import { Menu, X, ChevronDown, UserCircle, Search, MessageCircle } from 'lucide-react'; import { useAuth } from '../../contexts/AuthContext'; import { useI18n } from '../../contexts/I18nContext'; import { api } from '../../services/api'; import Button from './Button'; const Navbar: React.FC = () => { const { user, logout, isRole } = useAuth(); const { lang, setLang, t } = useI18n(); const navigate = useNavigate(); const location = useLocation(); const [isMenuOpen, setIsMenuOpen] = useState(false); const [isProfileOpen, setIsProfileOpen] = useState(false); const [searchQuery, setSearchQuery] = useState(''); const [unreadCount, setUnreadCount] = useState(0); // Poll unread message count for agency users useEffect(() => { if (!user || user.role !== 'agency') return; const fetchUnread = () => { api.messages.unreadCount() .then((data: any) => setUnreadCount(data.count ?? data.unread_count ?? 0)) .catch(() => {}); }; fetchUnread(); const interval = setInterval(fetchUnread, 60000); // refresh every minute return () => clearInterval(interval); }, [user]); const handleSearch = (e: React.FormEvent) => { e.preventDefault(); if (searchQuery.trim()) { navigate(`/listings?search=${encodeURIComponent(searchQuery.trim())}`); setSearchQuery(''); setIsMenuOpen(false); } }; const handleLogout = () => { logout(); navigate('/login'); }; const isActive = (path: string) => location.pathname === path; const navLinkClasses = 'px-3 py-2 text-primary-700 hover:text-accent-600 font-medium transition-colors'; const navLinkActiveClasses = 'text-accent-700 border-b-2 border-accent-600'; const LangToggle = () => ( ); return ( ); }; export default Navbar;