"use client"; import { useState } from "react"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Badge } from "@/components/ui/badge"; import { AdminUser } from "@/types/admin"; import { MoreHorizontal, Search, UserCog, Ban, CheckCircle } from "lucide-react"; interface UserManagementTableProps { users: AdminUser[]; onUpdateStatus: (userId: string, newStatus: "active" | "suspended") => void; onUpdateRole: (userId: string, newRole: "user" | "admin") => void; } export function UserManagementTable({ users, onUpdateStatus, onUpdateRole, }: UserManagementTableProps) { const [searchTerm, setSearchTerm] = useState(""); const filteredUsers = users.filter( (user) => user.name?.toLowerCase().includes(searchTerm.toLowerCase()) || user.email?.toLowerCase().includes(searchTerm.toLowerCase()) ); const getStatusColor = (status: string) => { switch (status) { case "active": return "bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-100"; case "suspended": return "bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-100"; case "inactive": return "bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-100"; default: return "bg-gray-100 text-gray-800"; } }; return (