"use client"; import { useState, useEffect } from "react"; import Link from "next/link"; import { usePathname, useRouter } from "next/navigation"; import { Bookmark, ChevronLeft, ChevronRight, HelpCircle, LayoutDashboard, FileText, Users, Tags, Heart, Bell, Settings, BarChart2, Landmark, LogOut, X, } from "lucide-react"; import { useQueryClient } from "@tanstack/react-query"; import { cn } from "@/lib/utils"; import { ThemeToggle } from "./ThemeToggle"; import { useAuthStore } from "@/stores/authStore"; const NAV = [ { href: "/", label: "Dashboard", icon: LayoutDashboard, adminOnly: false, requiresAuth: false }, { href: "/bills", label: "Bills", icon: FileText, adminOnly: false, requiresAuth: false }, { href: "/members", label: "Members", icon: Users, adminOnly: false, requiresAuth: false }, { href: "/topics", label: "Topics", icon: Tags, adminOnly: false, requiresAuth: false }, { href: "/following", label: "Following", icon: Heart, adminOnly: false, requiresAuth: true }, { href: "/alignment", label: "Alignment", icon: BarChart2, adminOnly: false, requiresAuth: true }, { href: "/collections", label: "Collections", icon: Bookmark, adminOnly: false, requiresAuth: true }, { href: "/notifications", label: "Notifications", icon: Bell, adminOnly: false, requiresAuth: true }, { href: "/how-it-works", label: "How it works", icon: HelpCircle, adminOnly: false, requiresAuth: false }, { href: "/settings", label: "Admin", icon: Settings, adminOnly: true, requiresAuth: false }, ]; export function Sidebar({ onClose }: { onClose?: () => void }) { const pathname = usePathname(); const router = useRouter(); const qc = useQueryClient(); const user = useAuthStore((s) => s.user); const token = useAuthStore((s) => s.token); const logout = useAuthStore((s) => s.logout); const [collapsed, setCollapsed] = useState(false); // Mobile drawer always shows full sidebar const isMobile = !!onClose; const isCollapsed = collapsed && !isMobile; useEffect(() => { const saved = localStorage.getItem("sidebar-collapsed"); if (saved === "true") setCollapsed(true); }, []); function toggleCollapsed() { setCollapsed((v) => { localStorage.setItem("sidebar-collapsed", String(!v)); return !v; }); } function handleLogout() { logout(); qc.clear(); router.replace("/login"); } return ( ); }