diff --git a/src/components/AdminMenu.tsx b/src/components/AdminMenu.tsx index d042689..f5aaa33 100644 --- a/src/components/AdminMenu.tsx +++ b/src/components/AdminMenu.tsx @@ -4,10 +4,25 @@ import Link from 'next/link'; import { useEffect, useRef, useState } from 'react'; import { logoutAdmin } from '@/app/admin/login/actions'; -const ADMIN_LINKS = [ +interface MenuItem { + href?: string; + label: string; + submenu?: MenuItem[]; +} + +const ADMIN_LINKS: MenuItem[] = [ { href: '/admin/orders', label: 'Orders' }, - { href: '/admin/accounts', label: 'Accounts' }, - { href: '/admin/accounts/reconciliation', label: 'Bank reconciliation' }, + { + label: '💰 Financial', + submenu: [ + { href: '/admin/accounts', label: 'Accounts' }, + { href: '/admin/accounts/reports', label: 'Reports & Analysis' }, + { href: '/admin/accounts/reconciliation', label: 'Bank Reconciliation' }, + { href: '/admin/financial-audit', label: 'Audit Trail' }, + { href: '/admin/login-logs', label: 'Admin login activity' }, + { href: '/admin/customer-login-logs', label: 'Customer login activity' }, + ], + }, { href: '/admin/products/new', label: 'Add product' }, { href: '/admin/products', label: 'All products' }, { href: '/admin/categories/new', label: 'Add category' }, @@ -23,13 +38,11 @@ const ADMIN_LINKS = [ { href: '/admin/collections', label: 'All collections' }, { href: '/admin/customers', label: 'Email customers' }, { href: '/admin/maintenance', label: 'Maintenance' }, - { href: '/admin/login-logs', label: 'Admin login activity' }, - { href: '/admin/customer-login-logs', label: 'Customer login activity' }, - { href: '/admin/financial-audit', label: 'Financial audit trail' }, ]; export default function AdminMenu() { const [open, setOpen] = useState(false); + const [expandedSubmenu, setExpandedSubmenu] = useState(null); const ref = useRef(null); useEffect(() => { @@ -40,6 +53,10 @@ export default function AdminMenu() { return () => document.removeEventListener('mousedown', onClickOutside); }, []); + const handleSubmenuToggle = (label: string) => { + setExpandedSubmenu(expandedSubmenu === label ? null : label); + }; + return (
+ {expandedSubmenu === item.label && ( +
+ {item.submenu.map((subitem) => ( + setOpen(false)} + className="block px-6 py-2 text-xs text-muted hover:text-ink hover:bg-surface" + > + {subitem.label} + + ))} +
+ )} + + ) : ( + setOpen(false)} + className="block px-4 py-3 text-sm hover:bg-surface" + > + {item.label} + + )} +
))}
-