// 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;