import { useState } from "react"; import { Form, useNavigation } from "@remix-run/react"; import { Avatar, AvatarFallback, AvatarImage } from "~/components/ui/avatar"; import { Button } from "~/components/ui/button"; import { Input } from "~/components/ui/input"; import { Badge } from "~/components/ui/badge"; import { ModeToggle } from "~/components/ui/dark-mode-toggle"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from "~/components/ui/dropdown-menu"; import { Sheet, SheetContent, SheetTrigger } from "~/components/ui/sheet"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "~/components/ui/alert-dialog"; import { Menu, Search, Bell, Sun, Moon, User, Settings, LogOut, ChevronDown, MoreHorizontal, PanelLeftClose, PanelLeft, Loader2, Shield } from "lucide-react"; import { SessionData } from "~/sessions.server"; interface AdminHeaderProps { onMenuClick: () => void; sidebarCollapsed: boolean; isMobile: boolean; user: SessionData; } export function AdminHeader({ onMenuClick, sidebarCollapsed, isMobile, user }: AdminHeaderProps) { const [showLogoutDialog, setShowLogoutDialog] = useState(false); const navigation = useNavigation(); const isLoggingOut = navigation.formAction === "/action/logout"; const getUserInitials = (email: string) => { if (email) { return email.substring(0, 2).toUpperCase(); } return "AD"; }; return ( <>
{/* Mobile header */}
{/* Hamburger menu button */} {/* Mobile logo */}
Admin Panel
{/* Mobile more menu */}
{/* Mobile Logout */}
{/* Desktop header actions */}
{/* Theme toggle */} {/* Notifications */}

Admin Notifications 5 new

New user verification required

2 minutes ago

New pengelola registration

15 minutes ago

System backup completed

1 hour ago

{/* User menu */}
Administrator
{user.email || "admin@example.com"}
Admin Profile System Settings setShowLogoutDialog(true)} > Sign out
{/* Logout Confirmation Dialog */} Konfirmasi Logout Admin Apakah Anda yakin ingin keluar dari admin panel? Anda perlu login kembali untuk mengakses sistem administrasi. Batal
{isLoggingOut ? ( <> Logging out... ) : ( "Ya, Logout" )}
); }