import clsx from "clsx";
import {IconType} from "react-icons";
import {MdSpaceDashboard} from "react-icons/md";
import {
BsFileEarmarkText,
BsClockHistory,
BsPencil,
BsGraphUp,
BsChevronBarRight,
BsChevronBarLeft,
BsShieldFill,
BsCloudFill,
BsCurrencyDollar,
BsClipboardData,
BsFileLock,
BsPeople,
} from "react-icons/bs";
import {CiDumbbell} from "react-icons/ci";
import {RiLogoutBoxFill} from "react-icons/ri";
import {SlPencil} from "react-icons/sl";
import {FaAward} from "react-icons/fa";
import Link from "next/link";
import {useRouter} from "next/router";
import axios from "axios";
import FocusLayer from "@/components/FocusLayer";
import {preventNavigation} from "@/utils/navigation.disabled";
import {useEffect, useState} from "react";
import usePreferencesStore from "@/stores/preferencesStore";
import {User} from "@/interfaces/user";
import useTicketsListener from "@/hooks/useTicketsListener";
import {checkAccess, getTypesOfUser} from "@/utils/permissions";
import usePermissions from "@/hooks/usePermissions";
interface Props {
path: string;
navDisabled?: boolean;
focusMode?: boolean;
onFocusLayerMouseEnter?: () => void;
className?: string;
user: User;
}
interface NavProps {
Icon: IconType;
label: string;
path: string;
keyPath: string;
disabled?: boolean;
isMinimized?: boolean;
badge?: number;
}
const Nav = ({Icon, label, path, keyPath, disabled = false, isMinimized = false, badge}: NavProps) => {
return (
{!isMinimized && {label}}
{!!badge && badge > 0 && (
{checkAccess(user, ["student", "teacher", "developer"], permissions, "viewExams") && (
)}
{checkAccess(user, ["student", "teacher", "developer"], permissions, "viewExercises") && (
)}
{checkAccess(user, getTypesOfUser(["agent"]), permissions, "viewStats") && (
)}
{checkAccess(user, ["developer", "admin", "teacher", "student"], permissions) && (
)}
{checkAccess(user, getTypesOfUser(["agent"]), permissions, "viewRecords") && (
)}
{checkAccess(user, getTypesOfUser(["agent"]), permissions, "viewRecords") && (
)}
{checkAccess(user, ["admin", "developer", "agent", "corporate", "mastercorporate"], permissions, "viewPaymentRecords") && (
)}
{checkAccess(user, ["admin", "developer", "corporate", "teacher", "mastercorporate"]) && (
)}
{checkAccess(user, ["admin", "developer", "agent"], permissions, "viewTickets") && (
)}
{checkAccess(user, ["developer", "admin", "corporate", "mastercorporate"]) && (
)}
{checkAccess(user, ["developer", "admin", "corporate", "mastercorporate", "agent"]) && (
)}
{checkAccess(user, getTypesOfUser(["agent"]), permissions, "viewStats") && (
)}
{checkAccess(user, getTypesOfUser(["agent"]), permissions, "viewRecords") && (
)}
{checkAccess(user, getTypesOfUser(["agent"]), permissions, "viewRecords") && (
)}
{checkAccess(user, getTypesOfUser(["student"])) && (
)}
{checkAccess(user, getTypesOfUser(["student"])) && (
)}
{checkAccess(user, ["developer"]) && (
<>
>
)}
{isMinimized ? : }
{!isMinimized && Minimize}
{} : logout}
className={clsx(
"hover:text-mti-rose flex cursor-pointer items-center gap-4 rounded-full p-4 text-black transition duration-300 ease-in-out",
isMinimized ? "w-fit" : "w-full min-w-[250px] px-8",
)}>
{!isMinimized && Log Out}
{focusMode && }
);
}