import React, { useState } from 'react' import { AppBar, Box, Toolbar, Typography, Drawer, List, ListItem, ListItemIcon, ListItemText, ListItemButton, IconButton, Divider, Chip, } from '@mui/material' import { Menu as MenuIcon, Dashboard as DashboardIcon, Dns as ServerIcon, Description as TemplateIcon, Cloud as ProviderIcon, TrendingUp as ScalingIcon, Favorite as HealthIcon, Settings as SettingsIcon, People as UsersIcon, Folder as StorageIcon, TableChart as DatabaseIcon, Functions as FunctionsIcon, Bolt as RealtimeIcon, Article as LogsIcon, } from '@mui/icons-material' import { useNavigate, useLocation } from 'react-router-dom' const drawerWidth = 240 const menuItems = [ { text: 'Dashboard', icon: , path: '/' }, { text: 'Users', icon: , path: '/auth' }, { text: 'Storage', icon: , path: '/storage' }, { text: 'Database', icon: , path: '/database' }, { text: 'Functions', icon: , path: '/functions' }, { text: 'Realtime', icon: , path: '/realtime' }, { text: 'Logs', icon: , path: '/logs' }, { text: 'Servers', icon: , path: '/servers' }, { text: 'Templates', icon: , path: '/templates' }, { text: 'Providers', icon: , path: '/providers' }, { text: 'Scaling', icon: , path: '/scaling' }, { text: 'Cluster Health', icon: , path: '/cluster' }, { text: 'Settings', icon: , path: '/settings' }, ] interface LayoutProps { children: React.ReactNode } export default function Layout({ children }: LayoutProps) { const [mobileOpen, setMobileOpen] = useState(false) const navigate = useNavigate() const location = useLocation() const handleDrawerToggle = () => { setMobileOpen(!mobileOpen) } const drawer = (
MadBase {menuItems.map((item) => ( navigate(item.path)} > {item.icon} ))} v0.1.0
) return ( {menuItems.find((item) => item.path === location.pathname)?.text || 'MadBase Control Plane'} {drawer} {drawer} {children} ) }