import { useTranslation } from 'react-i18next'; import { useQuery } from '@tanstack/react-query'; import { referralNetworkApi } from '@/api/referralNetwork'; import { useReferralNetworkStore } from '@/store/referralNetwork'; import { AdminBackButton } from '@/components/admin/AdminBackButton'; import { NetworkGraph } from './components/NetworkGraph'; import { NetworkSearch } from './components/NetworkSearch'; import { NetworkFilters } from './components/NetworkFilters'; import { UserDetailPanel } from './components/UserDetailPanel'; import { CampaignDetailPanel } from './components/CampaignDetailPanel'; import { NetworkStats } from './components/NetworkStats'; import { NetworkLegend } from './components/NetworkLegend'; import { NetworkControls } from './components/NetworkControls'; export function ReferralNetwork() { const { t } = useTranslation(); const selectedNode = useReferralNetworkStore((s) => s.selectedNode); const { data: networkData, isLoading, isError, } = useQuery({ queryKey: ['referral-network-graph'], queryFn: referralNetworkApi.getNetworkGraph, staleTime: 120_000, }); const isPanelOpen = selectedNode !== null; return (
{/* Top bar */}

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

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

{networkData && }
{/* Main content area */}
{/* Loading state */} {isLoading && (

{t('admin.referralNetwork.loading')}

)} {/* Error state */} {isError && (

{t('admin.referralNetwork.error')}

)} {/* Empty state */} {networkData && networkData.users.length === 0 && networkData.campaigns.length === 0 && (

{t('admin.referralNetwork.empty')}

)} {/* Graph */} {networkData && (networkData.users.length > 0 || networkData.campaigns.length > 0) && ( <> {/* Bottom-left: stats overlay */}
{/* Bottom-right: legend */}
{/* Bottom-center: controls */}
)} {/* Right side panel */}
{selectedNode?.type === 'user' && ( )} {selectedNode?.type === 'campaign' && ( )}
); }