'use client'; import { usePathname } from 'next/navigation'; import { useTranslation } from 'react-i18next'; import Link from "next/link"; import Image from "next/image"; import { NavLink, MobileNavLink } from "./components/NavLinks"; import { Globe, LogIn, UserPlus, UserCircle, LogOut, Calendar, Building, PlusCircle, Heart, MessageCircle, Settings, Edit, Phone, Mail, MapPin, Camera, Shield, Bell, Home, ChevronDown, Menu, X, TrendingUp, CalendarDays, Clock, Users, DollarSign } from 'lucide-react'; import { useState, useEffect, useRef } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import './i18n/config'; export default function ClientLayout({ children }) { const { t, i18n } = useTranslation(); const pathname = usePathname(); const [currentLanguage, setCurrentLanguage] = useState('en'); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const [showUserMenu, setShowUserMenu] = useState(false); const [user, setUser] = useState(null); const [isMounted, setIsMounted] = useState(false); const currentYear = new Date().getFullYear(); const menuRef = useRef(null); useEffect(() => { setIsMounted(true); const savedLanguage = localStorage.getItem('language') || 'en'; setCurrentLanguage(savedLanguage); i18n.changeLanguage(savedLanguage); const storedUser = localStorage.getItem('user'); if (storedUser) { const userData = JSON.parse(storedUser); console.log('User data loaded:', userData); setUser(userData); } if (savedLanguage === 'ar') { document.documentElement.dir = 'rtl'; document.documentElement.lang = 'ar'; } else { document.documentElement.dir = 'ltr'; document.documentElement.lang = 'en'; } }, [i18n]); useEffect(() => { const handleClickOutside = (event) => { if (menuRef.current && !menuRef.current.contains(event.target)) { setShowUserMenu(false); } }; document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); const changeLanguage = (lng) => { i18n.changeLanguage(lng); setCurrentLanguage(lng); localStorage.setItem('language', lng); if (lng === 'ar') { document.documentElement.dir = 'rtl'; document.documentElement.lang = 'ar'; } else { document.documentElement.dir = 'ltr'; document.documentElement.lang = 'en'; } }; const toggleMobileMenu = () => { setIsMobileMenuOpen(!isMobileMenuOpen); }; const closeMobileMenu = () => { setIsMobileMenuOpen(false); }; const logout = () => { localStorage.removeItem('user'); setUser(null); setShowUserMenu(false); window.location.href = '/'; }; const isAuthPage = ['/login', '/register', '/forgot-password', '/auth/choose-role'].includes(pathname); const isProfilePage = pathname === '/profile'; const isOwner = user?.role === 'owner'; const isAdmin = user?.role === 'admin'; console.log('User role:', user?.role); console.log('Is Admin:', isAdmin); const getUserInitial = () => { if (user?.name) { return user.name.charAt(0).toUpperCase(); } return ; }; if (!isMounted) { return (

جاري التحميل...

); } return ( <> {!isAuthPage && ( )}
{children}
{!isAuthPage && !isProfilePage && ( )} ); }