diff --git a/src/components/MenuDrawer.jsx b/src/components/MenuDrawer.jsx index fe342f5..06d63ad 100644 --- a/src/components/MenuDrawer.jsx +++ b/src/components/MenuDrawer.jsx @@ -9,13 +9,17 @@ import { useMediaQuery, InputBase, Tooltip, - Divider + Divider, + ListItemButton, + Collapse } from '@mui/material'; import { useTheme } from '@mui/material/styles'; import { useEffect, useMemo, useState } from 'react'; import { useAuth } from '../context/AuthContext'; import ExitToAppIcon from '@mui/icons-material/ExitToApp'; +import ExpandLess from '@mui/icons-material/ExpandLess'; +import ExpandMore from '@mui/icons-material/ExpandMore'; // ---- Menu options (unchanged) ---- const menuOptions = { @@ -50,6 +54,15 @@ export default function MenuDrawer({ zone = 'public', open, onClose, onSelect }) // Collapsed state is only meaningful on desktop (permanent drawer) const [collapsed, setCollapsed] = useState(false); + const catalogChildren = [ + 'Furniture', + 'Lighting', + 'Textiles', + 'Decorative Accessories', + 'Kitchen & Dining', + 'Outdoor Living', + ]; + const [openCatalog, setOpenCatalog] = useState(false); // Interpret parent "open" prop: // - Mobile (temporary): open controls visibility @@ -141,6 +154,95 @@ export default function MenuDrawer({ zone = 'public', open, onClose, onSelect }) alignItems: 'stretch' }}> {items.map(({ text, icon }, index) => { + const isCatalog = text === 'Catalog'; + + // Special case: Catalog with submenu + if (isCatalog) { + return ( + + + { + if (collapsed) { + // Expand drawer first so submenu is visible + setCollapsed(false); + setOpenCatalog(true); + } else { + setOpenCatalog((v) => !v); + } + }} + sx={{ + px: collapsed ? 0 : 2, + minHeight: collapsed ? 48 : 44, + cursor: 'pointer', + justifyContent: collapsed ? 'center' : 'flex-start', + width: '100%', + }} + > + + {icon} + + + {!collapsed && ( + <> + + {openCatalog ? : } + + )} + + + + {/* Submenu list */} + {!collapsed && ( + + + {catalogChildren.map((child) => ( + { + if (isMobile) onClose?.(); + onSelect?.(child); + }} + > + + + ))} + + + )} + + ); + } + // Default items return (