"use client"; import { fetchData } from "@/lib/data-service"; import { useState } from "react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { Package, ShoppingCart, Home, Truck, Box, Settings, LogOut, Menu, } from "lucide-react"; import { NavItem } from "./nav-item"; interface SidebarItem { name: string; href: string; icon: React.ElementType; } interface SidebarSection { title: string; items: SidebarItem[]; } const sidebarConfig: SidebarSection[] = [ { title: "Overview", items: [ { name: "Dashboard", href: "/dashboard", icon: Home }, { name: "Orders", href: "/dashboard/orders", icon: Package }, ], }, { title: "Management", items: [ { name: "Products", href: "/dashboard/products", icon: Box }, { name: "Shipping", href: "/dashboard/shipping", icon: Truck }, { name: "Storefront", href: "/dashboard/storefront", icon: Settings }, ], }, ]; const Sidebar: React.FC = () => { const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const router = useRouter(); const handleLogout = async () => { try { const authToken = document.cookie.split("authToken=")[1]; const res = await fetchData(`${process.env.NEXT_PUBLIC_API_URL}/logout`, { method: "POST", headers: { Authorization: `Bearer ${authToken}` }, credentials: "include", }); if (!res.ok) throw new Error("Logout failed"); document.cookie = "authToken=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT;"; router.push("/login"); } catch (error) { console.error("Logout error:", error); } }; return ( <> {/* Sidebar Navigation */} {/* Mobile Menu Overlay */} {isMobileMenuOpen && (
setIsMobileMenuOpen(false)} /> )} ); }; export default Sidebar;