import { useState } from "react"; import { Link, Outlet, redirect } from "react-router"; import { auth } from "~/lib/auth.server"; import type { Route } from "./+types/admin"; import { isUserAdmin } from "~/models/user"; import { Button } from "~/components/ui/button"; import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, } from "~/components/ui/sheet"; import { LayoutDashboard, Trophy, Calendar, FolderKanban, RefreshCw, Award, Activity, Users, Menu, Shield, CalendarRange, } from "lucide-react"; export function meta(): Route.MetaDescriptors { return [{ title: "Admin - Brackt" }]; } export async function loader(args: Route.LoaderArgs) { const session = await auth.api.getSession({ headers: args.request.headers }); const userId = session?.user.id ?? null; if (!userId) { throw redirect("/"); } const isAdmin = await isUserAdmin(userId); if (!isAdmin) { throw redirect("/"); } return { isAdmin }; } function AdminNavLinks({ onNavigate }: { onNavigate?: () => void }) { return ( <>
); } export default function AdminLayout() { const [mobileMenuOpen, setMobileMenuOpen] = useState(false); return (
{/* Mobile top bar */}
Admin Panel

Admin Panel

{/* Desktop sidebar */} {/* Main Content */}
); }