import { NavLink } from "react-router-dom"; import { LayoutDashboard, Clock, FolderKanban, Coins, CheckSquare, Calculator, Wallet, Users, Settings, FolderCog, Inbox, UserCircle, ClipboardList, Database, CalendarDays, type LucideIcon, } from "lucide-react"; import { useQuery } from "@tanstack/react-query"; import { getNav, getApprovals } from "@/lib/api"; import { useAuth } from "@/context/Auth"; import { SpinLogo } from "./SpinLogo"; import { WorkStatusMenu } from "./WorkStatusMenu"; import { classNames } from "@/lib/format"; import type { NavItem } from "@/types"; export const ICONS: Record = { LayoutDashboard, Clock, FolderKanban, Coins, CheckSquare, Calculator, Wallet, Users, Settings, FolderCog, Inbox, UserCircle, ClipboardList, Database, CalendarDays, }; export function Sidebar({ collapsed = false, className }: { collapsed?: boolean; className?: string }) { const { isAdmin } = useAuth(); const navQ = useQuery({ queryKey: ["nav"], queryFn: getNav, staleTime: 5 * 60_000 }); const apprQ = useQuery({ queryKey: ["approvals-count"], queryFn: getApprovals, enabled: isAdmin, staleTime: 60_000 }); const approvalCount = (apprQ.data?.leave.length ?? 0) + (apprQ.data?.overtime.length ?? 0); const items = navQ.data ?? []; const sections = Array.from(new Set(items.map((i) => i.section))); return ( ); }