import { useState } from 'react'; import { useNavigate } from 'react-router'; import { useQuery } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { partnerApi, type AdminPartnerItem, type AdminPartnerApplicationItem, } from '../api/partners'; import { AdminBackButton } from '../components/admin'; import { useCurrency } from '../hooks/useCurrency'; import { BanknotesIcon, ChevronRightIcon, InboxIcon, PartnerIcon, SettingsIcon, UserPlusIcon, } from '@/components/icons'; import { StatCard } from '@/components/stats'; export default function AdminPartners() { const { t } = useTranslation(); const navigate = useNavigate(); const { formatWithCurrency } = useCurrency(); const [activeTab, setActiveTab] = useState<'partners' | 'applications'>('partners'); // Queries const { data: stats } = useQuery({ queryKey: ['admin-partner-stats'], queryFn: () => partnerApi.getStats(), }); const { data: partnersData, isLoading: partnersLoading } = useQuery({ queryKey: ['admin-partners'], queryFn: () => partnerApi.getPartners(), }); const { data: applicationsData, isLoading: applicationsLoading } = useQuery({ queryKey: ['admin-partner-applications'], queryFn: () => partnerApi.getApplications({ status: 'pending' }), }); const partners = partnersData?.items || []; const applications = applicationsData?.items || []; return (
{/* Header */}

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

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

{/* Stats Overview */} {stats && (
} tone="neutral" /> } tone="accent" /> } tone="neutral" /> } tone="success" />
)} {/* Tabs */}
{/* Partners Tab */} {activeTab === 'partners' && ( <> {partnersLoading ? (
) : partners.length === 0 ? (

{t('admin.partners.noPartners')}

) : (
{partners.map((partner: AdminPartnerItem) => ( ))}
)} )} {/* Applications Tab */} {activeTab === 'applications' && ( <> {applicationsLoading ? (
) : applications.length === 0 ? (

{t('admin.partners.noApplications')}

) : (
{applications.map((app: AdminPartnerApplicationItem) => (

{app.first_name || app.username || `#${app.user_id}`}

{app.username && ( @{app.username} )}
{app.company_name && (
{app.company_name}
)}
{/* Application details */}
{app.website_url && (
{t('admin.partners.applicationFields.website')}: {app.website_url}
)} {app.telegram_channel && (
{t('admin.partners.applicationFields.channel')}: {app.telegram_channel}
)} {app.description && (
{t('admin.partners.applicationFields.description')}: {app.description}
)} {app.expected_monthly_referrals != null && (
{t('admin.partners.applicationFields.expectedReferrals')}:{' '} {app.expected_monthly_referrals}
)} {app.desired_commission_percent != null && (
{t('admin.partners.applicationFields.desiredCommission')}:{' '} {app.desired_commission_percent}%
)}
{/* Actions */}
))}
)} )}
); }