'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
جاري التحميل...