// File: src/components/Navigation.jsx import React, { useState, useEffect } from "react"; import { Link, useNavigate, useLocation } from "react-router"; import { useAuth } from "../services/Services"; import { LockClosedIcon, HomeIcon, FolderIcon, UserIcon, ArrowRightOnRectangleIcon, Bars3Icon, XMarkIcon, ChevronDownIcon, } from "@heroicons/react/24/outline"; const Navigation = () => { const navigate = useNavigate(); const location = useLocation(); const { authManager } = useAuth(); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const [isProfileMenuOpen, setIsProfileMenuOpen] = useState(false); const [isScrolled, setIsScrolled] = useState(false); useEffect(() => { const handleScroll = () => { setIsScrolled(window.scrollY > 10); }; window.addEventListener("scroll", handleScroll); return () => window.removeEventListener("scroll", handleScroll); }, []); const handleLogout = () => { if (authManager?.logout) { authManager.logout(); } sessionStorage.clear(); localStorage.removeItem("mapleopentech_access_token"); localStorage.removeItem("mapleopentech_refresh_token"); localStorage.removeItem("mapleopentech_user_email"); navigate("/"); }; const isActive = (path) => { if (path === "/file-manager") { return location.pathname.startsWith("/file-manager"); } return location.pathname === path; }; const mainNavItems = [ { name: "Dashboard", path: "/dashboard", icon: HomeIcon, description: "Overview", }, { name: "My Files", path: "/file-manager", icon: FolderIcon, description: "Your files", }, ]; const userEmail = authManager?.getCurrentUserEmail?.() || "User"; const userInitial = userEmail.charAt(0).toUpperCase(); return ( <> {/* Mobile Menu */}
setIsMobileMenuOpen(false)} >

Menu

{/* Mobile User Info */}
{userInitial}

{userEmail.split("@")[0]}

{userEmail}

{/* Mobile Navigation Items */}
{mainNavItems.map((item) => ( setIsMobileMenuOpen(false)} className={`flex items-center space-x-3 px-4 py-3 rounded-lg text-base font-medium transition-all duration-200 ${ isActive(item.path) ? "bg-gradient-to-r from-red-700 to-red-800 text-white" : "text-gray-700 hover:bg-gray-100 hover:text-gray-900" }`} > {item.name} ))} setIsMobileMenuOpen(false)} className="flex items-center space-x-3 px-4 py-3 rounded-lg text-base font-medium text-gray-700 hover:bg-gray-100 hover:text-gray-900 transition-all duration-200" > Profile
); }; export default Navigation;