"use client"; import { useState, ReactNode } from 'react'; import { usePathname } from 'next/navigation'; import { useSession } from 'next-auth/react'; import { Dialog, DialogBackdrop, DialogPanel, Menu, MenuButton, MenuItem, MenuItems, TransitionChild, } from '@headlessui/react'; import { Bars3Icon, BellIcon, CalendarIcon, ChartPieIcon, Cog6ToothIcon, DocumentDuplicateIcon, FolderIcon, HomeIcon, UsersIcon, XMarkIcon, CubeIcon, } from '@heroicons/react/24/outline'; import { ChevronDownIcon, MagnifyingGlassIcon } from '@heroicons/react/20/solid'; const navigation = [ { name: 'Dashboard', href: '/admin', icon: HomeIcon }, { name: 'Users', href: '/admin/users', icon: UsersIcon }, { name: 'Category Mapping', href: '/admin/category-mapping', icon: ChartPieIcon }, { name: 'Products', href: '/admin/products', icon: CubeIcon }, // { name: 'Settings', href: '/admin/settings', icon: Cog6ToothIcon }, // optional/future ]; const userNavigation = [ { name: 'Your profile', href: '/account/profile' }, { name: 'Sign out', href: '/api/auth/signout' }, ]; function classNames(...classes: string[]) { return classes.filter(Boolean).join(' '); } export default function AdminNavbar({ children }: { children: ReactNode }) { const [sidebarOpen, setSidebarOpen] = useState(false); const pathname = usePathname(); const { data: session } = useSession(); // Get user display name const getUserDisplayName = () => { if (!session?.user) return 'Admin User'; const user = session.user as any; if (user.first_name && user.last_name) { return `${user.first_name} ${user.last_name}`; } if (user.name) { return user.name; } if (user.email) { return user.email.split('@')[0]; // Use email prefix as fallback } return 'Admin User'; }; const getUserInitials = () => { if (!session?.user) return 'A'; const user = session.user as any; if (user.first_name && user.last_name) { return `${user.first_name[0]}${user.last_name[0]}`.toUpperCase(); } if (user.name) { return user.name.split(' ').map((n: string) => n[0]).join('').toUpperCase().slice(0, 2); } if (user.email) { return user.email[0].toUpperCase(); } return 'A'; }; return ( <>