From 18b641b2d663e543c72a19632ede5060251a7746 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Mon, 16 Feb 2026 15:55:41 +0100 Subject: [PATCH] readded the cake menu on mobile --- frontend/src/App.tsx | 150 +++++++++++++++++++++++++++++++++---------- 1 file changed, 116 insertions(+), 34 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 2557f2e..4d36c45 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -12,13 +12,22 @@ import { Avatar, Menu, MenuItem, + Drawer, Divider, + List, + ListItem, + ListItemButton, + ListItemText, + Collapse, TextField, InputAdornment, Autocomplete } from '@mui/material'; +import MenuIcon from '@mui/icons-material/Menu'; import SearchIcon from '@mui/icons-material/Search'; import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; +import ExpandLess from '@mui/icons-material/ExpandLess'; +import ExpandMore from '@mui/icons-material/ExpandMore'; import { getTheme, type CatppuccinTheme } from './theme'; import CategoryList from './pages/CategoryList'; import CategoryFlavors from './pages/categories/CategoryFlavors'; @@ -69,7 +78,7 @@ const GlobalSearch = () => { }; return ( - + { const [categories, setCategories] = useState<{name: string, slug: string}[]>([]); const [user, setUser] = useState<{username: string, avatar: string | null} | null>(null); const [loadingUser, setLoadingUser] = useState(true); + const [drawerOpen, setDrawerOpen] = useState(false); + const [catOpen, setCatOpen] = useState(false); useEffect(() => { const fetchData = async () => { @@ -179,6 +190,75 @@ const App: React.FC = () => { window.location.href = '/'; }; + const drawer = ( + + + + {user && !user.avatar && user.username.charAt(0).toUpperCase()} + + + setDrawerOpen(false)} style={{ color: 'inherit', textDecoration: 'none' }}>Holy Flavors + + + + + + setDrawerOpen(false)}> + + + + + setCatOpen(!catOpen)}> + + {catOpen ? : } + + + + {categories.map(cat => ( + setDrawerOpen(false)} + sx={{ pl: 4 }} + > + + + ))} + + + + + + {user ? ( + <> + + setDrawerOpen(false)}> + + + + + setDrawerOpen(false)}> + + + + + + + + + + ) : ( + + setDrawerOpen(false)}> + + + + )} + + + ); + return ( @@ -193,29 +273,22 @@ const App: React.FC = () => { }}> {/* Brand Logo - Responsive */} - + Holy Flavors Holy - {/* Categories Dropdown - Works on both mobile and desktop */} - + {/* Categories Dropdown - Desktop Only */} + { - {/* Global Search */} + {/* Global Search - All Devices */} - {/* User Menu - Aligned Right */} + {/* Right Side Icons */} + {/* User Menu - Desktop Only */} {!loadingUser && ( user ? ( - <> - setAnchorEl(e.currentTarget)} sx={{ ml: { xs: 0, sm: 1 } }}> - + + setAnchorEl(e.currentTarget)} sx={{ ml: 1 }}> + {!user.avatar && user.username.charAt(0).toUpperCase()} @@ -267,27 +333,43 @@ const App: React.FC = () => { elevation={3} sx={{ mt: 1 }} > - - Logged in as {user.username} - - setAnchorEl(null)}>Dashboard setAnchorEl(null)}>Settings Logout - + ) : ( - + + + ) )} + + {/* Hamburger Menu - Mobile Only */} + + setDrawerOpen(true)} + sx={{ ml: 1 }} + > + + + + setDrawerOpen(false)} + > + {drawer} + + } />