import Divider from "@mui/material/Divider"; import Box from "@mui/material/Box"; import React from "react"; import List from "@mui/material/List"; import ListItemButton from "@mui/material/ListItemButton"; import ListItemText from "@mui/material/ListItemText"; import ListItemIcon from "@mui/material/ListItemIcon"; import WorkHistory from "@mui/icons-material/WorkHistory"; import Dashboard from "@mui/icons-material/Dashboard"; import SummarizeIcon from "@mui/icons-material/Summarize"; import PaymentsIcon from "@mui/icons-material/Payments"; import AccountTreeIcon from "@mui/icons-material/AccountTree"; import RequestQuote from "@mui/icons-material/RequestQuote"; import PeopleIcon from "@mui/icons-material/People"; import Task from "@mui/icons-material/Task"; import Assignment from "@mui/icons-material/Assignment"; import Settings from "@mui/icons-material/Settings"; import Analytics from "@mui/icons-material/Analytics"; import Payments from "@mui/icons-material/Payments"; import Staff from "@mui/icons-material/PeopleAlt"; import Company from '@mui/icons-material/Store'; import Department from '@mui/icons-material/Diversity3'; import Position from '@mui/icons-material/Paragliding'; import Salary from '@mui/icons-material/AttachMoney'; import Team from '@mui/icons-material/Paragliding'; import Holiday from '@mui/icons-material/CalendarMonth'; import { useTranslation } from "react-i18next"; import Typography from "@mui/material/Typography"; import { usePathname } from "next/navigation"; import Link from "next/link"; import { NAVIGATION_CONTENT_WIDTH } from "@/config/uiConfig"; import Logo from "../Logo"; import GroupIcon from '@mui/icons-material/Group'; import BusinessIcon from '@mui/icons-material/Business'; import ViewWeekIcon from '@mui/icons-material/ViewWeek'; import ManageAccountsIcon from '@mui/icons-material/ManageAccounts'; import EmojiEventsIcon from '@mui/icons-material/EmojiEvents'; interface NavigationItem { icon: React.ReactNode; label: string; path: string; children?: NavigationItem[]; } const navigationItems: NavigationItem[] = [ { icon: , label: "User Workspace", path: "/home" }, { icon: , label: "Dashboard", path: "", children: [ { icon: , label: "Financial Summary", path: "/dashboard/ProjectFinancialSummary", }, { icon: , label: "Company / Team Cash Flow", path: "/dashboard/CompanyTeamCashFlow", }, { icon: , label: "Project Cash Flow", path: "/dashboard/ProjectCashFlow", }, { icon: , label: "Project Status by Client", path: "/dashboard/ProjectStatusByClient", }, { icon: , label: "Project Status by Team", path: "/dashboard/ProjectStatusByTeam", }, { icon: , label: "Staff Utilization", path: "/dashboard/StaffUtilization", }, { icon: , label: "Project Resource Summary", path: "/dashboard/ProjectResourceSummary", } ], }, { icon: , label: "Staff Reimbursement", path: "/staffReimbursement", children: [ { icon: , label: "Claim Approval", path: "/staffReimbursement/ClaimApproval", }, { icon: , label: "Claim Summary", path: "/staffReimbursement/ClaimSummary", }, ], }, { icon: , label: "Project Management", path: "/projects" }, { icon: , label: "Task Template", path: "/tasks" }, { icon: , label: "Invoice", path: "/invoice" }, { icon: , label: "Analysis Report", path: "", children: [ {icon: , label:"Late Start Report", path: "/analytics/LateStartReport"}, {icon: , label:"Delay Report", path: "/analytics/DelayReport"}, {icon: , label:"Resource Overconsumption Report", path: "/analytics/ResourceOverconsumptionReport"}, {icon: , label:"Cost and Expense Report", path: "/analytics/CostandExpenseReport"}, {icon: , label:"Completion Report", path: "/analytics/ProjectCompletionReport"}, {icon: , label:"Completion Report with Outstanding Un-billed Hours Report", path: "/analytics/ProjectCompletionReportWO"}, {icon: , label:"Project Claims Report", path: "/analytics/ProjectClaimsReport"}, {icon: , label:"Project P&L Report", path: "/analytics/ProjectPLReport"}, {icon: , label:"Financial Status Report", path: "/analytics/FinancialStatusReport"}, {icon: , label:"EX02 - Project Cash Flow Report", path: "/analytics/EX02ProjectCashFlowReport"}, ], }, { icon: , label: "Setting", path: "", children: [ { icon: , label: "Client", path: "/settings/customer" }, { icon: , label: "Subsidiary", path: "/settings/subsidiary" }, { icon: , label: "Staff", path: "/settings/staff" }, { icon: , label: "Company", path: "/settings/company" }, { icon: , label: "Skill", path: "/settings/skill" }, { icon: , label: "Department", path: "/settings/department" }, { icon: , label: "Position", path: "/settings/position" }, { icon: , label: "Salary", path: "/settings/salary" }, { icon: , label: "Team", path: "/settings/team" }, { icon: , label: "User", path: "/settings/user" }, { icon: , label: "Holiday", path: "/settings/holiday" }, ], }, ]; const NavigationContent: React.FC = () => { const { t } = useTranslation("common"); const pathname = usePathname(); const [openItems, setOpenItems] = React.useState([]); const toggleItem = (label: string) => { setOpenItems((prevOpenItems) => prevOpenItems.includes(label) ? prevOpenItems.filter((item) => item !== label) : [...prevOpenItems, label], ); }; const renderNavigationItem = (item: NavigationItem) => { const isOpen = openItems.includes(item.label); return ( item.children && toggleItem(item.label)} > {item.icon} {item.children && isOpen && ( {item.children.map((child) => renderNavigationItem(child))} )} ); }; return ( {/* */} {navigationItems.map((item) => renderNavigationItem(item))} {/* {navigationItems.map(({ icon, label, path }, index) => { return ( {icon} ); })} */} ); }; export default NavigationContent;