import { Card } from '@/ui/Card'; import StatusBadge from '@/components/ui/StatusBadge'; import { Input } from '@/ui/Input'; import { Select } from '@/ui/Select'; import { Table, TableHead, TableBody, TableRow, TableHeader, TableCell } from '@/ui/Table'; import { Button } from '@/ui/Button'; import { Text } from '@/ui/Text'; import { Search, Filter, RefreshCw, Users, Shield, Trash2, AlertTriangle } from 'lucide-react'; import { AdminUsersViewData } from '@/lib/view-data/AdminUsersViewData'; /** * AdminUsersTemplate * * Pure template for admin users page. * Accepts ViewData only, no business logic. */ export function AdminUsersTemplate(props: { adminUsersViewData: AdminUsersViewData; onRefresh: () => void; onSearch: (search: string) => void; onFilterRole: (role: string) => void; onFilterStatus: (status: string) => void; onClearFilters: () => void; onUpdateStatus: (userId: string, status: string) => void; onDeleteUser: (userId: string) => void; search: string; roleFilter: string; statusFilter: string; loading: boolean; error: string | null; deletingUser: string | null; }) { const { adminUsersViewData: viewData, onRefresh, onSearch, onFilterRole, onFilterStatus, onClearFilters, onUpdateStatus, onDeleteUser, search, roleFilter, statusFilter, loading, error, deletingUser } = props; const toStatusBadgeProps = ( status: string, ): { status: 'success' | 'warning' | 'error' | 'neutral'; label: string } => { switch (status) { case 'active': return { status: 'success', label: 'Active' }; case 'suspended': return { status: 'warning', label: 'Suspended' }; case 'deleted': return { status: 'error', label: 'Deleted' }; default: return { status: 'neutral', label: status }; } }; const getRoleBadgeClass = (role: string) => { switch (role) { case 'owner': return 'bg-purple-500/20 text-purple-300 border border-purple-500/30'; case 'admin': return 'bg-blue-500/20 text-blue-300 border border-blue-500/30'; default: return 'bg-gray-500/20 text-gray-300 border border-gray-500/30'; } }; const getRoleBadgeLabel = (role: string) => { switch (role) { case 'owner': return 'Owner'; case 'admin': return 'Admin'; case 'user': return 'User'; default: return role; } }; return (