import { Card } from '../ui/card'; import { EmptyState } from '../states'; import { ArrowRight } from 'lucide-react'; export interface TopCampaign { id: string; name: string; engagementRate: number; status?: 'active' | 'paused' | 'completed'; } export interface TopCampaignsProps { campaigns: TopCampaign[]; title?: string; maxItems?: number; onViewAll?: () => void; } export function TopCampaigns({ campaigns, title = 'Top Performing Campaigns', maxItems = 5, onViewAll, }: TopCampaignsProps) { const displayCampaigns = campaigns.slice(0, maxItems); if (campaigns.length === 0) { return (

{title}

); } return (

{title}

{onViewAll && campaigns.length > maxItems && ( )}
{displayCampaigns.map((campaign, index) => { const getProgressColor = (rate: number) => { if (rate >= 75) return 'bg-success-500'; if (rate >= 50) return 'bg-primary'; if (rate >= 25) return 'bg-warning-500'; return 'bg-gray-400'; }; const progressColor = getProgressColor(campaign.engagementRate); return (
{index + 1}

{campaign.name}

{campaign.status && ( {campaign.status} )}
{campaign.engagementRate}%
); })}
{campaigns.length > 0 && (
Average Engagement {Math.round( campaigns.reduce((sum, c) => sum + c.engagementRate, 0) / campaigns.length )}%
)} ); }