"use client"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { useEffect, useState } from "react"; import { LayoutDashboard, Users, CalendarCheck, CreditCard, Settings, Brain, ChevronLeft, Activity, } from "lucide-react"; import { UserButton, useUser } from "@clerk/nextjs"; import { usePendingRecommendationsCount } from "@/hooks/use-api"; import { cn } from "@/lib/utils"; interface NavItem { icon: React.ElementType; label: string; href: string; badge?: number; } export function Sidebar() { const pathname = usePathname(); const { user } = useUser(); const { data: pendingCount = 0 } = usePendingRecommendationsCount(); const [mounted, setMounted] = useState(false); const [isCollapsed, setIsCollapsed] = useState(false); useEffect(() => { setMounted(true); const saved = localStorage.getItem("sidebar-collapsed"); if (saved) setIsCollapsed(JSON.parse(saved)); }, []); const handleToggle = () => { const newState = !isCollapsed; setIsCollapsed(newState); localStorage.setItem("sidebar-collapsed", JSON.stringify(newState)); }; const navItems: NavItem[] = [ { icon: LayoutDashboard, label: "Dashboard", href: "/" }, { icon: Users, label: "Users", href: "/users" }, { icon: Brain, label: "AI Recommendations", href: "/recommendations", badge: pendingCount > 0 ? pendingCount : undefined, }, { icon: CalendarCheck, label: "Attendance", href: "/attendance" }, { icon: CreditCard, label: "Payments", href: "/payments" }, { icon: Settings, label: "Settings", href: "/settings" }, ]; return ( ); }