import { useState, useEffect } from "react"; import { Button } from "@/shared/common/ui/button"; import { Input } from "@/shared/common/ui/input"; import { Search } from "lucide-react"; import { Badge } from "@/shared/common/ui/badge"; interface User { id: string; name: string; email: string; role: string; department?: string; } interface ViewUsersProps { unitId: string; onClose: () => void; } export function ViewUsers({ unitId, onClose }: ViewUsersProps) { const [users, setUsers] = useState([]); const [isLoading, setIsLoading] = useState(true); const [searchQuery, setSearchQuery] = useState(""); useEffect(() => { const fetchUsers = async () => { setIsLoading(true); try { // In a real application, this would be an API call // For now, simulate API call with a timeout await new Promise((resolve) => setTimeout(resolve, 800)); // Mock data setUsers([ { id: "1", name: "Abebe Kebede", email: "abebe@example.com", role: "Admin", department: "Management", }, { id: "2", name: "Tigist Haile", email: "tigist@example.com", role: "Manager", department: "Finance", }, { id: "3", name: "Dawit Mekonnen", email: "dawit@example.com", role: "Member", department: "Operations", }, { id: "4", name: "Hanna Girma", email: "hanna@example.com", role: "Member", department: "HR", }, ]); } catch (error) { console.error("Failed to fetch users:", error); setUsers([]); } finally { setIsLoading(false); } }; fetchUsers(); }, [unitId]); const filteredUsers = users.filter((user) => { if (!searchQuery) return true; const query = searchQuery.toLowerCase(); return ( user.name.toLowerCase().includes(query) || user.email.toLowerCase().includes(query) || user.role.toLowerCase().includes(query) || (user.department && user.department.toLowerCase().includes(query)) ); }); const getRoleBadgeColor = (role: string) => { switch (role.toLowerCase()) { case "admin": return "bg-red-100 text-red-800 dark:bg-red-900/40 dark:text-red-300"; case "manager": return "bg-primary-100 text-primary-800 dark:bg-primary-900/40 dark:text-primary-300"; default: return "bg-primary-100 text-primary-800 dark:bg-primary-900/40 dark:text-primary-300"; } }; return (
setSearchQuery(e.target.value)} />
{isLoading ? (

Loading users...

) : filteredUsers.length > 0 ? ( {filteredUsers.map((user) => ( ))}
Name Email Role Department
{user.name} {user.email} {user.role} {user.department || "-"}
) : (
No users found
)}
); }