import { useTranslation } from 'react-i18next'; import { useQuery } from '@tanstack/react-query'; import { CloseIcon } from '@/components/icons'; import { referralNetworkApi } from '@/api/referralNetwork'; import { useReferralNetworkStore } from '@/store/referralNetwork'; import { formatKopeksToRubles } from '../utils'; interface CampaignDetailPanelProps { campaignId: number; className?: string; } export function CampaignDetailPanel({ campaignId, className }: CampaignDetailPanelProps) { const { t } = useTranslation(); const setSelectedNode = useReferralNetworkStore((s) => s.setSelectedNode); const { data: campaign, isLoading, isError, } = useQuery({ queryKey: ['referral-network-campaign', campaignId], queryFn: () => referralNetworkApi.getCampaignDetail(campaignId), staleTime: 60_000, }); function handleClose() { setSelectedNode(null); } return (
{/* Header */}

{campaign?.name ?? '...'}

{/* Content */}
{isLoading && (
)} {isError && (
{t('admin.referralNetwork.error')}
)} {campaign && (
{/* Info */}
{t('admin.referralNetwork.campaign.startParam')} {campaign.start_parameter}
{campaign.is_active ? t('admin.referralNetwork.campaign.active') : t('admin.referralNetwork.campaign.inactive')}
{/* Stats */}
{t('admin.referralNetwork.campaign.directUsers')} {campaign.direct_users}
{t('admin.referralNetwork.campaign.totalNetwork')} {campaign.total_network_users}
{t('admin.referralNetwork.campaign.totalRevenue')} {formatKopeksToRubles(campaign.total_revenue_kopeks)} ₽
{t('admin.referralNetwork.campaign.conversionRate')} {campaign.conversion_rate.toFixed(1)}%
{t('admin.referralNetwork.campaign.avgCheck')} {formatKopeksToRubles(campaign.avg_check_kopeks)} ₽
{/* Top referrers */} {campaign.top_referrers.length > 0 && (

{t('admin.referralNetwork.campaign.topReferrers')}

{campaign.top_referrers.map((referrer, index) => (
{index + 1} {referrer.username ? `@${referrer.username}` : `#${referrer.user_id}`}
{referrer.referral_count}
))}
)}
)}
); }