From 47fa30934201f5c3158de3e73798130b0d6a6f3f Mon Sep 17 00:00:00 2001 From: Vishesh 'ironeagle' Bangotra Date: Sat, 4 Apr 2026 13:56:20 +0530 Subject: [PATCH] header fixes --- react-openapi/components/AdminLayout.tsx | 254 ++++++++++++----------- 1 file changed, 129 insertions(+), 125 deletions(-) diff --git a/react-openapi/components/AdminLayout.tsx b/react-openapi/components/AdminLayout.tsx index 7b274d5..b22dedd 100644 --- a/react-openapi/components/AdminLayout.tsx +++ b/react-openapi/components/AdminLayout.tsx @@ -2,17 +2,12 @@ import * as React from 'react'; import { Box, Drawer, - AppBar, - Toolbar, List, - Typography, Divider, ListItem, ListItemButton, ListItemIcon, ListItemText, - CssBaseline, - Button, IconButton, Tooltip, useMediaQuery, @@ -20,7 +15,6 @@ import { } from '@mui/material'; import TableViewIcon from '@mui/icons-material/TableView'; import DashboardIcon from '@mui/icons-material/Dashboard'; -import LogoutIcon from '@mui/icons-material/Logout'; import MenuIcon from '@mui/icons-material/Menu'; import ChevronLeftIcon from '@mui/icons-material/ChevronLeft'; import ChevronRightIcon from '@mui/icons-material/ChevronRight'; @@ -41,105 +35,151 @@ interface AdminLayoutProps { export default function AdminLayout({ children, onSelectResource, - onLogout, - username, resources, }: AdminLayoutProps) { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down('md')); const location = useLocation(); const navigate = useNavigate(); - + const [isCollapsed, setIsCollapsed] = React.useState(false); const [mobileOpen, setMobileOpen] = React.useState(false); const activeResourceName = location.pathname.split('/admin')[1] || null; - // AUTO-TOGGLE LOGIC + // AUTO-TOGGLE LOGIC (unchanged) React.useEffect(() => { if (isMobile) { - setIsCollapsed(false); // Mobile drawer is never "mini" - setMobileOpen(false); // Close on navigation + setIsCollapsed(false); + setMobileOpen(false); } else { - if (location.pathname === '/admin' || location.pathname === '') { - setIsCollapsed(false); - } else { - setIsCollapsed(true); - } + if (location.pathname === '/admin' || location.pathname === '') { + setIsCollapsed(false); + } else { + setIsCollapsed(true); + } } }, [location.pathname, isMobile]); - const currentWidth = isMobile ? drawerWidth : (isCollapsed ? collapsedWidth : drawerWidth); + const currentWidth = isMobile + ? drawerWidth + : isCollapsed + ? collapsedWidth + : drawerWidth; const handleDrawerToggle = () => { - setMobileOpen(!mobileOpen); + setMobileOpen((prev) => !prev); }; const handleSidebarToggle = () => { - setIsCollapsed(!isCollapsed); + setIsCollapsed((prev) => !prev); }; const drawerContent = ( - + {!isMobile && ( <> - + - {isCollapsed ? : } + {isCollapsed ? : } )} - {isMobile && } - + + {/* Mobile spacing (replaces Toolbar) */} + {isMobile && ( + theme.spacing(7) }} /> + )} + - - navigate('/admin')} - sx={{ - minHeight: 48, - justifyContent: (isCollapsed && !isMobile) ? 'center' : 'initial', - px: 2.5, - }} + + navigate('/admin')} + sx={{ + minHeight: 48, + justifyContent: + isCollapsed && !isMobile ? 'center' : 'initial', + px: 2.5, + }} > - - - - {(!isCollapsed || isMobile) && } + + + + {(!isCollapsed || isMobile) && ( + + )} + + {resources.map((res) => ( - - + onSelectResource(res.name)} sx={{ - minHeight: 48, - justifyContent: (isCollapsed && !isMobile) ? 'center' : 'initial', - px: 2.5, + minHeight: 48, + justifyContent: + isCollapsed && !isMobile + ? 'center' + : 'initial', + px: 2.5, }} - > - + - + }} + > + - {(!isCollapsed || isMobile) && } - + {(!isCollapsed || isMobile) && ( + + )} + ))} @@ -149,51 +189,7 @@ export default function AdminLayout({ return ( - - theme.zIndex.drawer + 1, - backdropFilter: 'blur(8px)', - backgroundColor: 'rgba(255, 255, 255, 0.8)', - color: 'text.primary', - boxShadow: 'none', - borderBottom: '1px solid', - borderColor: 'divider', - }} - > - - {isMobile && ( - - - - )} - - Admin Panel - - - - - - - - - - - - + {/* NAV */} {drawerContent} @@ -214,46 +212,52 @@ export default function AdminLayout({ ) : ( theme.transitions.create('width', { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.enteringScreen, - }), - [`& .MuiDrawer-paper`]: { - width: currentWidth, - boxSizing: 'border-box', + [`& .MuiDrawer-paper`]: { + width: currentWidth, overflowX: 'hidden', - transition: (theme) => theme.transitions.create('width', { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.enteringScreen, - }), + transition: theme.transitions.create('width'), }, }} - open > {drawerContent} )} - theme.transitions.create(['margin', 'width'], { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.enteringScreen, - }), + {/* MAIN */} + - + {/* Control row (replaces AppBar) */} + {isMobile && ( + theme.spacing(7), + }} + > + + + + + )} + {children}