import { useState } from 'react'; import { useNavigate } from 'react-router'; import { useQuery } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { withdrawalApi, AdminWithdrawalItem } from '../api/withdrawals'; import { AdminBackButton } from '../components/admin'; import { ChevronRightIcon } from '@/components/icons'; import { useCurrency } from '../hooks/useCurrency'; import { formatDate, getWithdrawalStatusBadge, getRiskColor } from '../utils/withdrawalUtils'; // Status filter tabs type StatusFilter = 'all' | 'pending' | 'approved' | 'rejected' | 'completed' | 'cancelled'; const STATUS_FILTERS: StatusFilter[] = [ 'all', 'pending', 'approved', 'rejected', 'completed', 'cancelled', ]; export default function AdminWithdrawals() { const { t } = useTranslation(); const navigate = useNavigate(); const { formatWithCurrency } = useCurrency(); const [statusFilter, setStatusFilter] = useState('all'); // Query const { data, isLoading } = useQuery({ queryKey: ['admin-withdrawals', statusFilter], queryFn: () => withdrawalApi.getAll({ status: statusFilter === 'all' ? undefined : statusFilter, }), }); const items = data?.items || []; const pendingCount = data?.pending_count ?? 0; const pendingTotal = data?.pending_total_kopeks ?? 0; return (
{/* Header */}

{t('admin.withdrawals.title')}

{t('admin.withdrawals.subtitle')}

{/* Overview Stats */} {data && (
{pendingCount}
{t('admin.withdrawals.overview.pendingCount')}
{formatWithCurrency(pendingTotal / 100, 0)}
{t('admin.withdrawals.overview.pendingAmount')}
)} {/* Status Filter Tabs */}
{STATUS_FILTERS.map((filter) => ( ))}
{/* Withdrawal Cards List */} {isLoading ? (
) : items.length === 0 ? (

{t('admin.withdrawals.noData')}

) : (
{items.map((item: AdminWithdrawalItem) => { const badge = getWithdrawalStatusBadge(item.status); const riskColor = getRiskColor(item.risk_score); return ( ); })}
)}
); }