import { useState, useEffect, useCallback, useRef } from 'react'; import { useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { useCurrency } from '../hooks/useCurrency'; import { useToast } from '../components/Toast'; import { adminUsersApi, type UserListItem, type UsersStatsResponse } from '../api/adminUsers'; import { AdminBackButton } from '../components/admin'; // ============ Icons ============ const SearchIcon = () => ( ); const ChevronLeftIcon = () => ( ); const ChevronRightIcon = () => ( ); const RefreshIcon = ({ className = 'w-5 h-5' }: { className?: string }) => ( ); const TelegramIcon = () => ( ); const DotsVerticalIcon = () => ( ); const TrashIcon = () => ( ); const ArrowPathIcon = () => ( ); const NoSymbolIcon = () => ( ); const ExclamationTriangleIcon = () => ( ); // ============ Confirmation Modal ============ interface ConfirmationModalProps { isOpen: boolean; onClose: () => void; onConfirm: () => void; title: string; message: string; confirmText: string; confirmButtonClass?: string; isLoading?: boolean; } function ConfirmationModal({ isOpen, onClose, onConfirm, title, message, confirmText, confirmButtonClass = 'bg-rose-500 hover:bg-rose-600', isLoading = false, }: ConfirmationModalProps) { const { t } = useTranslation(); if (!isOpen) return null; return (
{message}
{t('admin.users.subtitle')}