'use client'; import Link from 'next/link'; import { useEffect, useRef, useState } from 'react'; import { logoutAdmin } from '@/app/admin/login/actions'; const ADMIN_LINKS = [ { href: '/admin/orders', label: 'Orders' }, { href: '/admin/accounts', label: 'Accounts' }, { href: '/admin/products/new', label: 'Add product' }, { href: '/admin/products', label: 'All products' }, { href: '/admin/categories/new', label: 'Add category' }, { href: '/admin/categories', label: 'All categories' }, { href: '/admin/proofs/new', label: 'Upload new design' }, { href: '/admin/proofs', label: 'All proofs' }, { href: '/admin/inbox', label: 'Inbox' }, { href: '/admin/custom-requests', label: 'Photo requests' }, { href: '/admin/promotions', label: 'Promotions' }, { href: '/admin/gallery', label: 'Gallery' }, { href: '/admin/gallery/categories', label: 'Gallery categories' }, { href: '/admin/collections/new', label: 'Add collection' }, { href: '/admin/collections', label: 'All collections' }, { href: '/admin/customers', label: 'Email customers' }, { href: '/admin/maintenance', label: 'Maintenance' }, { href: '/admin/login-logs', label: 'Login activity' }, ]; export default function AdminMenu() { const [open, setOpen] = useState(false); const ref = useRef(null); useEffect(() => { const onClickOutside = (e: MouseEvent) => { if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false); }; document.addEventListener('mousedown', onClickOutside); return () => document.removeEventListener('mousedown', onClickOutside); }, []); return (
{open && (
{ADMIN_LINKS.map((link) => ( setOpen(false)} className="block px-4 py-3 text-sm hover:bg-surface" > {link.label} ))}
)}
); }