import { useTranslation } from 'react-i18next' import { Edit, Trash2 } from 'lucide-react' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import type { User } from '@/types/auth' interface UserTableProps { users: User[] isLoading: boolean onEdit: (user: User) => void onDelete: (user: User) => void } export function UserTable({ users, isLoading, onEdit, onDelete }: UserTableProps) { const { t, i18n } = useTranslation(['user', 'common']) if (isLoading) { return (
{t('common:loading')}
) } if (users.length === 0) { return (
{t('user:noUsers')}
) } return ( <>
{users.map((user) => ( ))}
ID {t('user:username')} {t('user:email')} {t('common:status')} {t('user:role')} {t('common:actions')} {t('user:createdAt')} {t('common:actions')}
{user.id} {user.username} {user.email} {user.is_active ? t('user:active') : t('user:inactive')} {user.is_superuser ? t('user:superuser') : t('user:normalUser')}
{(user.is_superuser || user.can_use_nsfw) && ( {t('user:nsfwPermission')} )}
{new Date(user.created_at).toLocaleString(i18n.language)}
{users.map((user) => (
{user.username}
ID: {user.id}
{t('user:email')}: {user.email}
{t('common:status')}: {user.is_active ? t('user:active') : t('user:inactive')}
{t('user:role')}: {user.is_superuser ? t('user:superuser') : t('user:normalUser')}
{t('common:actions')}:
{(user.is_superuser || user.can_use_nsfw) && ( {t('user:nsfwPermission')} )} {!user.is_superuser && !user.can_use_nsfw && ( {t('user:noPermission')} )}
{t('user:createdAt')}: {new Date(user.created_at).toLocaleString(i18n.language)}
))}
) }