import { useState, useEffect, useContext } from 'react' import { useNavigate } from 'react-router-dom' import { Plus, Search, TrendingUp, DollarSign, Eye, MousePointer, Target, BarChart3 } from 'lucide-react' import { format } from 'date-fns' import { AppContext } from '../App' import { useAuth } from '../contexts/AuthContext' import { useLanguage } from '../i18n/LanguageContext' import { api, PLATFORMS } from '../utils/api' import { PlatformIcons } from '../components/PlatformIcon' import StatusBadge from '../components/StatusBadge' import BrandBadge from '../components/BrandBadge' import Modal from '../components/Modal' import BudgetBar from '../components/BudgetBar' import InteractiveTimeline from '../components/InteractiveTimeline' const EMPTY_CAMPAIGN = { name: '', description: '', brand_id: '', status: 'planning', start_date: '', end_date: '', budget: '', goals: '', platforms: [], budget_spent: '', revenue: '', impressions: '', clicks: '', conversions: '', cost_per_click: '', notes: '', } function ROIBadge({ revenue, spent }) { if (!spent || spent <= 0) return null const roi = ((revenue - spent) / spent * 100).toFixed(0) const color = roi >= 0 ? 'text-emerald-600 bg-emerald-50' : 'text-red-600 bg-red-50' return ( ROI {roi}% ) } function MetricCard({ icon: Icon, label, value, color = 'text-text-primary' }) { return (
{campaign.description}
)}