import React, { useState } from 'react'; import { motion } from 'framer-motion'; import { Search, Filter, MoreVertical, Edit, Trash2, Mail, Phone, MapPin } from 'lucide-react'; import { usersAPI } from '../services/api'; import toast from 'react-hot-toast'; const UserTable = ({ users, onEdit, onDelete, onRefresh }) => { const [searchTerm, setSearchTerm] = useState(''); const [filterRole, setFilterRole] = useState('all'); const filteredUsers = users?.filter(user => { const matchesSearch = user.name.toLowerCase().includes(searchTerm.toLowerCase()) || user.email.toLowerCase().includes(searchTerm.toLowerCase()); const matchesRole = filterRole === 'all' || user.role === filterRole; return matchesSearch && matchesRole; }); const getRoleColor = (role) => { switch (role) { case 'admin': return 'bg-purple-100 text-purple-800 dark:bg-purple-900/20 dark:text-purple-400'; case 'manager': return 'bg-blue-100 text-blue-800 dark:bg-blue-900/20 dark:text-blue-400'; case 'employee': return 'bg-green-100 text-green-800 dark:bg-green-900/20 dark:text-green-400'; default: return 'bg-gray-100 text-gray-800 dark:bg-gray-900/20 dark:text-gray-400'; } }; return (
setSearchTerm(e.target.value)} className="w-full pl-10 pr-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700" />
{filteredUsers?.map((user, index) => ( ))}
User Role Contact Status Joined Actions
{user.name.charAt(0).toUpperCase()}
{user.name}
ID: {user._id.slice(-6)}
{user.role}
{user.email}
{user.phone && (
{user.phone}
)}
{user.active ? 'Active' : 'Inactive'} {new Date(user.createdAt).toLocaleDateString()}
{filteredUsers?.length === 0 && (

No users found

)}
); }; export default UserTable;