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 */}
))}
)}
>
)}
);
}