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
} from "lucide-react";
import { SessionData } from "~/sessions.server"; // Import SessionData type
interface PengelolaHeaderProps {
onMenuClick: () => void;
sidebarCollapsed: boolean;
isMobile: boolean;
user: SessionData; // Add user prop
}
export function PengelolaHeader({
onMenuClick,
sidebarCollapsed,
isMobile,
user // Add user prop
}: PengelolaHeaderProps) {
const [showLogoutDialog, setShowLogoutDialog] = useState(false);
const navigation = useNavigation();
const isLoggingOut = navigation.formAction === "/action/logout";
// Get user initials for avatar fallback
const getUserInitials = (name: string) => {
return name
.split(" ")
.map((n) => n[0])
.join("")
.toUpperCase()
.slice(0, 2);
};
return (
<>
{/* Mobile header */}
{/* Hamburger menu button */}
{/* Mobile logo */}
LOGO
{/* Mobile more menu */}
{/* Desktop header actions */}
{/* Theme toggle */}
{/* Notifications */}
Notifications
3 new
New user registered
2 minutes ago
System update available
1 hour ago
New message received
3 hours ago
{/* User menu */}
{user.phone || "User"}
{user.email || "user@example.com"}
Profile
Settings
setShowLogoutDialog(true)}
>
Sign out
{/* Logout Confirmation Dialog */}
Konfirmasi Logout
Apakah Anda yakin ingin keluar dari akun? Anda perlu login kembali
untuk mengakses dashboard.
Batal
>
);
}