## Overview
diff --git a/app/(dashboard)/DashboardLayoutClient.tsx b/app/(dashboard)/DashboardLayoutClient.tsx
index 4ec44460..20f9cee4 100644
--- a/app/(dashboard)/DashboardLayoutClient.tsx
+++ b/app/(dashboard)/DashboardLayoutClient.tsx
@@ -1,9 +1,34 @@
"use client";
-import { ReactNode } from "react";
+import { ReactNode, useState } from "react";
import Link from "next/link";
-import { usePathname } from "next/navigation";
-import { Avatar, Box, Button, Divider, Stack, Typography } from "@mui/material";
+import { usePathname, useRouter } from "next/navigation";
+import {
+ Avatar,
+ Box,
+ Button,
+ Divider,
+ Drawer,
+ List,
+ ListItemButton,
+ ListItemIcon,
+ ListItemText,
+ Stack,
+ Typography,
+ useTheme,
+ useMediaQuery,
+ IconButton
+} from "@mui/material";
+import MenuIcon from "@mui/icons-material/Menu";
+import DashboardIcon from "@mui/icons-material/Dashboard";
+import DnsIcon from "@mui/icons-material/Dns";
+import SwapHorizIcon from "@mui/icons-material/SwapHoriz";
+import ReportProblemIcon from "@mui/icons-material/ReportProblem";
+import SecurityIcon from "@mui/icons-material/Security";
+import ShieldIcon from "@mui/icons-material/Shield";
+import SettingsIcon from "@mui/icons-material/Settings";
+import HistoryIcon from "@mui/icons-material/History";
+import LogoutIcon from "@mui/icons-material/Logout";
type User = {
id: string;
@@ -13,248 +38,182 @@ type User = {
};
const NAV_ITEMS = [
- { href: "/", label: "Overview" },
- { href: "/proxy-hosts", label: "Proxy Hosts" },
- { href: "/redirects", label: "Redirects" },
- { href: "/dead-hosts", label: "Dead Hosts" },
- { href: "/access-lists", label: "Access Lists" },
- { href: "/certificates", label: "Certificates" },
- { href: "/settings", label: "Settings" },
- { href: "/audit-log", label: "Audit Log" }
+ { href: "/", label: "Overview", icon: DashboardIcon },
+ { href: "/proxy-hosts", label: "Proxy Hosts", icon: DnsIcon },
+ { href: "/redirects", label: "Redirects", icon: SwapHorizIcon },
+ { href: "/dead-hosts", label: "Dead Hosts", icon: ReportProblemIcon },
+ { href: "/access-lists", label: "Access Lists", icon: SecurityIcon },
+ { href: "/certificates", label: "Certificates", icon: ShieldIcon },
+ { href: "/settings", label: "Settings", icon: SettingsIcon },
+ { href: "/audit-log", label: "Audit Log", icon: HistoryIcon }
] as const;
-// Stable background styles defined outside component to prevent regeneration
-const MAIN_BACKGROUND =
- "radial-gradient(circle at 12% -20%, rgba(99, 102, 241, 0.28), transparent 45%), radial-gradient(circle at 88% 8%, rgba(45, 212, 191, 0.24), transparent 46%), linear-gradient(160deg, rgba(2, 3, 9, 1) 0%, rgba(4, 10, 22, 1) 40%, rgba(2, 6, 18, 1) 100%)";
-
-const OVERLAY_BACKGROUND =
- "radial-gradient(circle at 18% -12%, rgba(56, 189, 248, 0.18), transparent 42%), radial-gradient(circle at 86% 0%, rgba(168, 85, 247, 0.15), transparent 45%)";
+const DRAWER_WIDTH = 260;
export default function DashboardLayoutClient({ user, children }: { user: User; children: ReactNode }) {
+ const [mobileOpen, setMobileOpen] = useState(false);
+ const theme = useTheme();
+ const isMobile = useMediaQuery(theme.breakpoints.down("md"));
const pathname = usePathname();
+ const router = useRouter();
- return (
-