"use client";
import { useState, useEffect } from "react";
import { motion, AnimatePresence } from "framer-motion";
import {
  Megaphone, Plus, Search, Filter, Play, Pause, Trash2,
  ExternalLink, BarChart2, Check, AlertCircle, Loader2, Sparkles,
  ArrowRight, Database
} from "lucide-react";
import Link from "next/link";
import { createClient } from "@/lib/supabase/client";
import { formatCurrency, formatNumber } from "@/lib/utils";
import { usePlatform, PLATFORMS, type PlatformType } from "@/lib/context/PlatformContext";

interface Campaign {
  id: string;
  name: string;
  platform: PlatformType;
  type: string;
  status: "active" | "paused" | "ended" | "draft";
  budget_amount: number;
  budget_type: "daily" | "monthly";
  currency: string;
  ai_generated: boolean;
  clicks: number;
  impressions: number;
  conversions: number;
  cost: number;
  created_at: string;
}

const mockCampaigns: Campaign[] = [
  // Google Ads
  {
    id: "g1",
    name: "حملة البحث - منتجات العناية بالبشرة الرياض",
    platform: "google",
    type: "search",
    status: "active",
    budget_amount: 50,
    budget_type: "daily",
    currency: "USD",
    ai_generated: true,
    clicks: 1240,
    impressions: 15400,
    conversions: 84,
    cost: 620,
    created_at: new Date(Date.now() - 7 * 24 * 3600 * 1000).toISOString(),
  },
  {
    id: "g2",
    name: "أداء أقصى PMax - متجر العطور الرمضاني",
    platform: "google",
    type: "pmax",
    status: "active",
    budget_amount: 120,
    budget_type: "daily",
    currency: "USD",
    ai_generated: true,
    clicks: 4820,
    impressions: 68900,
    conversions: 142,
    cost: 1450,
    created_at: new Date(Date.now() - 15 * 24 * 3600 * 1000).toISOString(),
  },
  {
    id: "g3",
    name: "إعلان فيديو يوتيوب - تطبيق اللياقة البدنية",
    platform: "google",
    type: "video",
    status: "paused",
    budget_amount: 30,
    budget_type: "daily",
    currency: "USD",
    ai_generated: false,
    clicks: 850,
    impressions: 42000,
    conversions: 12,
    cost: 210,
    created_at: new Date(Date.now() - 3 * 24 * 3600 * 1000).toISOString(),
  },
  // Meta Ads
  {
    id: "m1",
    name: "حملة التحويلات - فساتين سهرة الخليج (فيس بوك)",
    platform: "meta",
    type: "conversion",
    status: "active",
    budget_amount: 80,
    budget_type: "daily",
    currency: "USD",
    ai_generated: true,
    clicks: 3480,
    impressions: 48900,
    conversions: 110,
    cost: 840,
    created_at: new Date(Date.now() - 5 * 24 * 3600 * 1000).toISOString(),
  },
  {
    id: "m2",
    name: "فيديو ريلز تفاعلي - إعلان الأحذية الرياضية (إنستغرام)",
    platform: "meta",
    type: "engagement",
    status: "active",
    budget_amount: 40,
    budget_type: "daily",
    currency: "USD",
    ai_generated: true,
    clicks: 1980,
    impressions: 29500,
    conversions: 48,
    cost: 410,
    created_at: new Date(Date.now() - 10 * 24 * 3600 * 1000).toISOString(),
  },
  // TikTok Ads
  {
    id: "t1",
    name: "سيناريو الكوميديا AI - عطور المباخر الملكية",
    platform: "tiktok",
    type: "spark",
    status: "active",
    budget_amount: 100,
    budget_type: "daily",
    currency: "USD",
    ai_generated: true,
    clicks: 6840,
    impressions: 98400,
    conversions: 154,
    cost: 890,
    created_at: new Date(Date.now() - 4 * 24 * 3600 * 1000).toISOString(),
  },
  {
    id: "t2",
    name: "حملة زيارات الموقع - تخفيضات الأحذية الذكية",
    platform: "tiktok",
    type: "traffic",
    status: "paused",
    budget_amount: 50,
    budget_type: "daily",
    currency: "USD",
    ai_generated: false,
    clicks: 1200,
    impressions: 18400,
    conversions: 22,
    cost: 150,
    created_at: new Date(Date.now() - 8 * 24 * 3600 * 1000).toISOString(),
  },
  // Microsoft Ads
  {
    id: "ms1",
    name: "Bing البحث الذكي - عقارات دبي الفاخرة",
    platform: "microsoft",
    type: "search",
    status: "active",
    budget_amount: 60,
    budget_type: "daily",
    currency: "USD",
    ai_generated: true,
    clicks: 580,
    impressions: 4800,
    conversions: 18,
    cost: 210,
    created_at: new Date(Date.now() - 12 * 24 * 3600 * 1000).toISOString(),
  },
  // LinkedIn Ads
  {
    id: "l1",
    name: "B2B جذب المدراء - استشارات تسويق الشركات",
    platform: "linkedin",
    type: "lead_gen",
    status: "active",
    budget_amount: 150,
    budget_type: "daily",
    currency: "USD",
    ai_generated: true,
    clicks: 420,
    impressions: 8900,
    conversions: 35,
    cost: 540,
    created_at: new Date(Date.now() - 9 * 24 * 3600 * 1000).toISOString(),
  },
  // X Ads
  {
    id: "x1",
    name: "تغريدة ترويجية - مؤتمر الذكاء الاصطناعي بالرياض",
    platform: "x",
    type: "promoted_post",
    status: "active",
    budget_amount: 30,
    budget_type: "daily",
    currency: "USD",
    ai_generated: true,
    clicks: 940,
    impressions: 18900,
    conversions: 14,
    cost: 120,
    created_at: new Date(Date.now() - 2 * 24 * 3600 * 1000).toISOString(),
  },
  // Snapchat Ads
  {
    id: "s1",
    name: "سحب شاشة Snapchat - تطبيق التوصيل الفوري",
    platform: "snapchat",
    type: "swipe_up",
    status: "active",
    budget_amount: 70,
    budget_type: "daily",
    currency: "USD",
    ai_generated: true,
    clicks: 2840,
    impressions: 41200,
    conversions: 62,
    cost: 390,
    created_at: new Date(Date.now() - 6 * 24 * 3600 * 1000).toISOString(),
  },
];

const campaignTypesMap: Record<string, { label: string; icon: string; color: string }> = {
  search: { label: "إعلان بحث", icon: "🔍", color: "text-blue-400 bg-blue-500/10 border-blue-500/20" },
  pmax: { label: "الأداء الأقصى", icon: "⚡", color: "text-purple-400 bg-purple-500/10 border-purple-500/20" },
  video: { label: "فيديو يوتيوب", icon: "🎬", color: "text-red-400 bg-red-500/10 border-red-500/20" },
  shopping: { label: "إعلان تسوق", icon: "🛍️", color: "text-amber-400 bg-amber-500/10 border-amber-500/20" },
  conversion: { label: "حملة تحويلات", icon: "🎯", color: "text-emerald-400 bg-emerald-500/10 border-emerald-500/20" },
  engagement: { label: "حملة تفاعل", icon: "❤️", color: "text-pink-400 bg-pink-500/10 border-pink-500/20" },
  spark: { label: "Spark Ads فيديو", icon: "🎵", color: "text-pink-400 bg-pink-500/10 border-pink-500/20" },
  traffic: { label: "زيارات الموقع", icon: "🌐", color: "text-sky-400 bg-sky-500/10 border-sky-500/20" },
  lead_gen: { label: "عملاء محتملين B2B", icon: "👔", color: "text-cyan-400 bg-cyan-500/10 border-cyan-500/20" },
  promoted_post: { label: "تغريدة ترويجية", icon: "🐦", color: "text-gray-300 bg-gray-800/30 border-gray-700" },
  swipe_up: { label: "سحب شاشة قصة", icon: "👻", color: "text-yellow-400 bg-yellow-500/10 border-yellow-500/20" },
};

export default function CampaignsPage() {
  const { currentPlatform, setPlatform, config } = usePlatform();
  const [campaigns, setCampaigns] = useState<Campaign[]>([]);
  const [loading, setLoading] = useState(true);
  const [seeding, setSeeding] = useState(false);
  const [searchTerm, setSearchTerm] = useState("");
  const [statusFilter, setStatusFilter] = useState<string>("all");
  const [typeFilter, setTypeFilter] = useState<string>("all");
  const [actionLoading, setActionLoading] = useState<string | null>(null);
  const [user, setUser] = useState<any>(null);

  const supabase = createClient();

  // 1. Load active user
  useEffect(() => {
    const handleFallback = () => {
      const devUser = localStorage.getItem("local_developer_user");
      if (devUser) {
        setUser(JSON.parse(devUser));
      } else {
        const defaultUser = { id: "00000000-0000-0000-0000-000000000000", email: "dev@techprocode.com", user_metadata: { full_name: "المطور" } };
        localStorage.setItem("local_developer_user", JSON.stringify(defaultUser));
        setUser(defaultUser);
      }
    };

    supabase.auth.getUser()
      .then(({ data: { user } }) => {
        if (user) {
          setUser(user);
        } else {
          handleFallback();
        }
      })
      .catch((err) => {
        console.warn("Supabase connection failed on campaigns page, using offline developer mode:", err);
        handleFallback();
      });
  }, []);

  // 2. Fetch campaigns
  useEffect(() => {
    if (user) fetchCampaigns();
  }, [user]);

  // 3. Realtime Postgres listeners for absolute instantaneous updates
  useEffect(() => {
    if (!user) return;

    const channel = supabase
      .channel("realtime-campaigns-changes")
      .on(
        "postgres_changes",
        { event: "*", schema: "public", table: "campaigns", filter: `user_id=eq.${user.id}` },
        (payload) => {
          console.log("Realtime Postgres update received:", payload);
          fetchCampaigns();
        }
      )
      .subscribe();

    return () => {
      supabase.removeChannel(channel);
    };
  }, [user]);

  async function fetchCampaigns() {
    if (!user) {
      setLoading(false);
      return;
    }
    setLoading(true);
    try {
      const isPlaceholder = !process.env.NEXT_PUBLIC_SUPABASE_URL || 
                            process.env.NEXT_PUBLIC_SUPABASE_URL.includes("placeholder") || 
                            process.env.NEXT_PUBLIC_SUPABASE_URL === "your_supabase_project_url";

      if (isPlaceholder) {
        const local = localStorage.getItem("local_campaigns");
        if (local) {
          setCampaigns(JSON.parse(local));
          setLoading(false);
          return;
        }
        setCampaigns([]);
        setLoading(false);
        return;
      }

      const { data, error } = await supabase
        .from("campaigns")
        .select("*")
        .order("created_at", { ascending: false });

      if (error) throw error;

      if (data && data.length > 0) {
        const mapped: Campaign[] = data.map((c) => ({
          id: c.id,
          name: c.name,
          platform: (c.platform || "google") as PlatformType,
          type: c.type || "search",
          status: c.status || "active",
          budget_amount: Number(c.budget_amount) || 0,
          budget_type: c.budget_type || "daily",
          currency: c.currency || "USD",
          ai_generated: c.ai_generated || false,
          clicks: Number(c.clicks) || 0,
          impressions: Number(c.impressions) || 0,
          conversions: Number(c.conversions) || 0,
          cost: Number(c.cost) || 0,
          created_at: c.created_at,
        }));
        setCampaigns(mapped);
      } else {
        setCampaigns([]);
      }
    } catch (err) {
      console.error("Error fetching campaigns, using local fallback:", err);
      const local = localStorage.getItem("local_campaigns");
      if (local) {
        setCampaigns(JSON.parse(local));
      } else {
        setCampaigns([]);
      }
    } finally {
      setLoading(false);
    }
  }

  // Seeding system to generate REAL rows in PostgreSQL
  async function handleSeedDatabase() {
    if (!user) return;
    setSeeding(true);
    try {
      const isPlaceholder = !process.env.NEXT_PUBLIC_SUPABASE_URL || 
                            process.env.NEXT_PUBLIC_SUPABASE_URL.includes("placeholder") || 
                            process.env.NEXT_PUBLIC_SUPABASE_URL === "your_supabase_project_url";
      
      if (isPlaceholder) {
        const simulated = mockCampaigns.map((c) => ({
          ...c,
          id: c.id || Math.random().toString(),
          clicks: Math.floor(200 + Math.random() * 300),
          impressions: Math.floor(2000 + Math.random() * 5000),
          conversions: Math.floor(10 + Math.random() * 30),
          cost: Math.floor(100 + Math.random() * 400),
        }));
        localStorage.setItem("local_campaigns", JSON.stringify(simulated));
        setCampaigns(simulated);
        setSeeding(false);
        return;
      }

      const adAccountName = "الحساب التجاري الرئيسي";
      // Ensure an ad account exists first
      let adAccountId;
      const { data: accounts } = await supabase.from("ad_accounts").select("id").limit(1);
      if (accounts && accounts.length > 0) {
        adAccountId = accounts[0].id;
      } else {
        const { data: newAcc, error: accErr } = await supabase
          .from("ad_accounts")
          .insert({
            user_id: user.id,
            name: adAccountName,
          })
          .select("id")
          .single();
        
        if (accErr || !newAcc) throw accErr || new Error("Failed to create ad account");
        adAccountId = newAcc.id;
      }

      // Map mock campaigns to DB columns
      const toInsert = mockCampaigns.map((c) => ({
        user_id: user.id,
        ad_account_id: adAccountId,
        name: c.name,
        platform: c.platform,
        type: c.type,
        status: c.status,
        budget_amount: c.budget_amount,
        budget_type: c.budget_type,
        currency: c.currency,
        ai_generated: c.ai_generated,
        clicks: Math.floor(200 + Math.random() * 300),
        impressions: Math.floor(2000 + Math.random() * 5000),
        conversions: Math.floor(10 + Math.random() * 30),
        cost: Math.floor(100 + Math.random() * 400),
      }));

      const { error } = await supabase.from("campaigns").insert(toInsert);
      if (error) throw error;
      
      await fetchCampaigns();
    } catch (err) {
      console.error("Error seeding campaigns database, falling back to local storage:", err);
      const simulated = mockCampaigns.map((c) => ({
        ...c,
        id: c.id || Math.random().toString(),
        clicks: Math.floor(200 + Math.random() * 300),
        impressions: Math.floor(2000 + Math.random() * 5000),
        conversions: Math.floor(10 + Math.random() * 30),
        cost: Math.floor(100 + Math.random() * 400),
      }));
      localStorage.setItem("local_campaigns", JSON.stringify(simulated));
      setCampaigns(simulated);
    } finally {
      setSeeding(false);
    }
  }

  async function toggleStatus(campaignId: string, currentStatus: string) {
    setActionLoading(campaignId);
    const newStatus = currentStatus === "active" ? "paused" : "active";

    // Update locally instantly
    setCampaigns((prev) => {
      const updated = prev.map((c) => (c.id === campaignId ? { ...c, status: newStatus as any } : c));
      localStorage.setItem("local_campaigns", JSON.stringify(updated));
      return updated;
    });

    try {
      const isPlaceholder = !process.env.NEXT_PUBLIC_SUPABASE_URL || 
                            process.env.NEXT_PUBLIC_SUPABASE_URL.includes("placeholder") || 
                            process.env.NEXT_PUBLIC_SUPABASE_URL === "your_supabase_project_url";
      if (!isPlaceholder) {
        await supabase
          .from("campaigns")
          .update({ status: newStatus })
          .eq("id", campaignId);
      }
    } catch (err) {
      console.error("Error updating status in DB, kept local storage change:", err);
    } finally {
      setActionLoading(null);
    }
  }

  async function deleteCampaign(campaignId: string) {
    if (!confirm("هل أنت متأكد من حذف هذه الحملة نهائياً؟")) return;
    setActionLoading(campaignId);

    // Update locally instantly
    setCampaigns((prev) => {
      const updated = prev.filter((c) => c.id !== campaignId);
      localStorage.setItem("local_campaigns", JSON.stringify(updated));
      return updated;
    });

    try {
      const isPlaceholder = !process.env.NEXT_PUBLIC_SUPABASE_URL || 
                            process.env.NEXT_PUBLIC_SUPABASE_URL.includes("placeholder") || 
                            process.env.NEXT_PUBLIC_SUPABASE_URL === "your_supabase_project_url";
      if (!isPlaceholder) {
        await supabase.from("campaigns").delete().eq("id", campaignId);
      }
    } catch (err) {
      console.error("Error deleting campaign in DB, kept local storage change:", err);
    } finally {
      setActionLoading(null);
    }
  }

  // Filter campaigns based on current platform and state selection
  const filteredCampaigns = campaigns.filter((c) => {
    const matchesPlatform = currentPlatform === "all" || c.platform === currentPlatform;
    const matchesSearch = c.name.toLowerCase().includes(searchTerm.toLowerCase());
    const matchesStatus = statusFilter === "all" || c.status === statusFilter;
    const matchesType = typeFilter === "all" || c.type === typeFilter;
    return matchesPlatform && matchesSearch && matchesStatus && matchesType;
  });

  return (
    <div className="p-6 space-y-6 text-right" dir="rtl">
      
      {/* Header */}
      <div className="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
        <div className="flex items-center gap-3">
          {currentPlatform !== "all" && (
            <button
              onClick={() => setPlatform("all")}
              className="w-8 h-8 rounded-xl border border-gray-850 bg-[#161b27] flex items-center justify-center text-gray-400 hover:text-white transition-colors"
              title="الرجوع للوحة الموحدة"
            >
              <ArrowRight className="w-4 h-4" />
            </button>
          )}
          <div>
            <h1 className="text-2xl font-bold text-white flex items-center gap-2">
              <Megaphone className="w-6 h-6 text-emerald-400" />
              <span>إدارة الحملات - {config.name}</span>
            </h1>
            <p className="text-[#8a8380] text-sm mt-0.5">
              {currentPlatform === "all" 
                ? "تتبع وإدارة حملاتك الإعلانية المحسّنة بالذكاء الاصطناعي عبر كافة شبكات الإعلانات"
                : `إدارة وتعديل وإطلاق حملات ${config.name} الموجهة بدقة بالذكاء الاصطناعي`
              }
            </p>
          </div>
        </div>
        
        <div className="flex items-center gap-2">
          {campaigns.length === 0 && user && (
            <button
              onClick={handleSeedDatabase}
              disabled={seeding}
              className="flex items-center justify-center gap-2 bg-[#161b27] hover:bg-gray-850 border border-gray-800 hover:border-gray-700 text-white font-semibold px-4 py-3 rounded-xl text-xs transition-colors"
            >
              {seeding ? (
                <>
                  <Loader2 className="w-4 h-4 animate-spin" />
                  <span>جاري كتابة السجلات...</span>
                </>
              ) : (
                <>
                  <Database className="w-4 h-4 text-emerald-400" />
                  <span>تهيئة وحفظ حملات حقيقية بقاعدة البيانات</span>
                </>
              )}
            </button>
          )}

          <Link
            href="/dashboard/ai-generator"
            className="flex items-center justify-center gap-2 bg-gradient-to-l from-purple-600 to-indigo-600 hover:from-purple-500 hover:to-indigo-500 text-white font-semibold px-5 py-3 rounded-xl text-sm transition-all shadow-lg shadow-purple-500/20"
          >
            <Sparkles className="w-4 h-4" />
            <span>إنشاء حملة {currentPlatform === "all" ? "" : config.name} بالـ AI</span>
          </Link>
        </div>
      </div>

      {/* Filters Bar */}
      <div className="bg-[#101010] border border-gray-800/80 rounded-xl p-4 flex flex-col md:flex-row gap-4 items-center justify-between">
        {/* Search */}
        <div className="relative w-full md:w-80">
          <Search className="absolute right-3.5 top-3 w-4 h-4 text-gray-500" />
          <input
            type="text"
            placeholder="البحث عن حملة إعلانية..."
            value={searchTerm}
            onChange={(e) => setSearchTerm(e.target.value)}
            className="w-full bg-[#161b27] border border-gray-700/80 focus:border-emerald-500 text-white rounded-xl py-2.5 pr-10 pl-4 text-sm outline-none transition-colors"
          />
        </div>

        {/* Filters */}
        <div className="flex flex-wrap items-center gap-3 w-full md:w-auto">
          <div className="flex items-center gap-2 bg-[#161b27] border border-gray-700/80 rounded-xl px-3 py-2 text-xs text-gray-300">
            <Filter className="w-3.5 h-3.5 text-gray-500" />
            <span>الحالة:</span>
            <select
              value={statusFilter}
              onChange={(e) => setStatusFilter(e.target.value)}
              className="bg-transparent text-white focus:outline-none cursor-pointer"
            >
              <option value="all" className="bg-[#161b27]">الكل</option>
              <option value="active" className="bg-[#161b27]">نشط</option>
              <option value="paused" className="bg-[#161b27]">موقف مؤقت</option>
              <option value="draft" className="bg-[#161b27]">مسودة</option>
              <option value="ended" className="bg-[#161b27]">منتهية</option>
            </select>
          </div>

          <div className="flex items-center gap-2 bg-[#161b27] border border-gray-700/80 rounded-xl px-3 py-2 text-xs text-gray-300">
            <Megaphone className="w-3.5 h-3.5 text-gray-500" />
            <span>النوع:</span>
            <select
              value={typeFilter}
              onChange={(e) => setTypeFilter(e.target.value)}
              className="bg-transparent text-white focus:outline-none cursor-pointer"
            >
              <option value="all" className="bg-[#161b27]">الكل</option>
              {Object.entries(campaignTypesMap)
                .filter(([key, info]) => {
                  if (currentPlatform === "google") return ["search", "pmax", "video", "shopping"].includes(key);
                  if (currentPlatform === "meta") return ["conversion", "engagement", "traffic"].includes(key);
                  if (currentPlatform === "tiktok") return ["spark", "traffic", "engagement"].includes(key);
                  if (currentPlatform === "microsoft") return ["search", "shopping"].includes(key);
                  if (currentPlatform === "linkedin") return ["lead_gen", "traffic"].includes(key);
                  if (currentPlatform === "x") return ["promoted_post", "traffic"].includes(key);
                  if (currentPlatform === "snapchat") return ["swipe_up", "traffic"].includes(key);
                  return true;
                })
                .map(([key, value]) => (
                  <option key={key} value={key} className="bg-[#161b27]">
                    {value.label}
                  </option>
                ))}
            </select>
          </div>
        </div>
      </div>

      {/* Campaigns Table */}
      {loading && campaigns.length === 0 ? (
        <div className="flex flex-col items-center justify-center py-20 bg-[#101010] border border-gray-800 rounded-xl">
          <Loader2 className="w-8 h-8 text-emerald-400 animate-spin mb-3" />
          <p className="text-[#8a8380] text-sm">جارٍ قراءة البيانات الحية من PostgreSQL...</p>
        </div>
      ) : campaigns.length === 0 ? (
        <div className="flex flex-col items-center justify-center py-20 bg-[#101010] border border-gray-800 rounded-xl text-center px-4">
          <Database className="w-12 h-12 text-gray-600 mb-4" />
          <p className="text-white font-semibold">قاعدة البيانات خالية من السجلات</p>
          <p className="text-[#8a8380] text-xs max-w-sm mt-1 mb-5">
            لا توجد أي حملات حقيقية في قاعدة البيانات الخاصة بك لـ {config.name}. انقر على الزر بالأعلى لكتابة وتهيئة البيانات الحية في قاعدة بياناتك فوراً!
          </p>
          {user && (
            <button
              onClick={handleSeedDatabase}
              disabled={seeding}
              className="flex items-center gap-2 bg-emerald-500 hover:bg-emerald-400 text-white font-bold px-5 py-2.5 rounded-xl text-xs transition-all"
            >
              <Plus className="w-4 h-4" />
              <span>تهيئة السجلات الحقيقية في PostgreSQL</span>
            </button>
          )}
        </div>
      ) : (
        <div className="bg-[#101010] border border-gray-800 rounded-xl overflow-hidden">
          {/* Desktop Table View */}
          <div className="hidden lg:block overflow-x-auto">
            <table className="w-full text-right border-collapse">
              <thead>
                <tr className="border-b border-gray-800 text-[11px] font-semibold text-gray-500 uppercase tracking-wider bg-[#161b27]/30">
                  <th className="py-4 px-5">اسم الحملة والمنصة</th>
                  <th className="py-4 px-4">النوع</th>
                  <th className="py-4 px-4">الحالة</th>
                  <th className="py-4 px-4">الميزانية</th>
                  <th className="py-4 px-4">الظهور</th>
                  <th className="py-4 px-4">النقرات</th>
                  <th className="py-4 px-4">التحويلات</th>
                  <th className="py-4 px-4">الإنفاق</th>
                  <th className="py-4 px-5 text-left">التحكم</th>
                </tr>
              </thead>
              <tbody className="divide-y divide-gray-880/65 text-xs text-[#b8b3b0]">
                {filteredCampaigns.map((campaign) => {
                  const typeInfo = campaignTypesMap[campaign.type] || { label: campaign.type, icon: "📢", color: "text-gray-400 border-gray-850" };
                  const platformConfig = PLATFORMS[campaign.platform];
                  return (
                     <tr key={campaign.id} className="hover:bg-[#161b27]/20 transition-colors">
                      <td className="py-4 px-5 font-medium text-white max-w-[240px] truncate">
                        <div className="flex items-center gap-3">
                          <span className="text-lg bg-[#161b27] border border-gray-850 w-7 h-7 rounded-lg flex items-center justify-center flex-shrink-0" title={platformConfig?.name}>
                            {platformConfig?.logo || "🌐"}
                          </span>
                          <div className="flex flex-col truncate">
                            <span className="font-semibold text-white truncate">{campaign.name}</span>
                            {currentPlatform === "all" && (
                              <span className="text-[9px] text-gray-500 mt-0.5">{platformConfig?.name}</span>
                            )}
                          </div>
                          {campaign.ai_generated && (
                            <span className="flex-shrink-0 text-[8px] font-bold bg-purple-500/10 text-purple-400 border border-purple-500/20 px-1.5 py-0.5 rounded-md flex items-center gap-0.5">
                              <Sparkles className="w-2.5 h-2.5" />
                              AI
                            </span>
                          )}
                        </div>
                      </td>
                      <td className="py-4 px-4">
                        <span className={`inline-flex items-center gap-1 px-2.5 py-1 rounded-full text-[10px] font-medium border ${typeInfo.color}`}>
                          <span>{typeInfo.icon}</span>
                          <span>{typeInfo.label}</span>
                        </span>
                      </td>
                      <td className="py-4 px-4">
                        <span className={`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-bold ${
                          campaign.status === "active" ? "text-emerald-400 bg-emerald-500/5" :
                          campaign.status === "paused" ? "text-yellow-400 bg-yellow-500/5" :
                          campaign.status === "ended" ? "text-gray-400 bg-gray-500/5" : "text-blue-400 bg-blue-500/5"
                        }`}>
                          <span className={`w-1.5 h-1.5 rounded-full ${
                            campaign.status === "active" ? "bg-emerald-400 animate-pulse" :
                            campaign.status === "paused" ? "bg-yellow-400" :
                            campaign.status === "ended" ? "bg-gray-400" : "bg-blue-400"
                          }`} />
                          {campaign.status === "active" ? "نشط" :
                           campaign.status === "paused" ? "موقف مؤقت" :
                           campaign.status === "ended" ? "منتهية" : "مسودة"}
                        </span>
                      </td>
                      <td className="py-4 px-4">
                        <div className="font-semibold text-white">
                          {formatCurrency(campaign.budget_amount)}
                        </div>
                        <div className="text-[10px] text-gray-600">
                          {campaign.budget_type === "daily" ? "يومياً" : "شهرياً"}
                        </div>
                      </td>
                      <td className="py-4 px-4 font-medium">{formatNumber(campaign.impressions)}</td>
                      <td className="py-4 px-4 font-medium">{formatNumber(campaign.clicks)}</td>
                      <td className="py-4 px-4 font-medium">{formatNumber(campaign.conversions)}</td>
                      <td className="py-4 px-4 font-semibold text-white">{formatCurrency(campaign.cost)}</td>
                      <td className="py-4 px-5 text-left">
                        <div className="flex items-center justify-end gap-1.5">
                          <button
                            onClick={() => toggleStatus(campaign.id, campaign.status)}
                            disabled={actionLoading === campaign.id || campaign.status === "ended" || campaign.status === "draft"}
                            className={`p-1.5 rounded-lg border transition-all ${
                              campaign.status === "active"
                                ? "border-yellow-500/20 bg-yellow-500/10 text-yellow-400 hover:bg-yellow-500/20"
                                : "border-emerald-500/20 bg-emerald-500/10 text-emerald-400 hover:bg-emerald-500/20"
                            } disabled:opacity-40 disabled:cursor-not-allowed`}
                            title={campaign.status === "active" ? "إيقاف مؤقت" : "تشغيل الحملة"}
                          >
                            {actionLoading === campaign.id ? (
                              <Loader2 className="w-3.5 h-3.5 animate-spin" />
                            ) : campaign.status === "active" ? (
                              <Pause className="w-3.5 h-3.5" />
                            ) : (
                              <Play className="w-3.5 h-3.5" />
                            )}
                          </button>
                          <Link
                            href={`/dashboard/analytics?platform=${campaign.platform}&campaign=${campaign.id}`}
                            className="p-1.5 rounded-lg border border-gray-700 bg-gray-800/30 text-gray-400 hover:text-white hover:bg-gray-800 transition-all"
                            title="عرض التحليلات التفصيلية"
                          >
                            <BarChart2 className="w-3.5 h-3.5" />
                          </Link>
                          <button
                            onClick={() => deleteCampaign(campaign.id)}
                            disabled={actionLoading === campaign.id}
                            className="p-1.5 rounded-lg border border-red-500/20 bg-red-500/10 text-red-400 hover:bg-red-500/20 hover:text-red-300 transition-all"
                            title="حذف الحملة"
                          >
                            <Trash2 className="w-3.5 h-3.5" />
                          </button>
                        </div>
                      </td>
                    </tr>
                  );
                })}
              </tbody>
            </table>
          </div>

          {/* Mobile Card List */}
          <div className="lg:hidden divide-y divide-gray-850">
            {filteredCampaigns.map((campaign) => {
              const typeInfo = campaignTypesMap[campaign.type] || { label: campaign.type, icon: "📢", color: "bg-gray-850" };
              const platformConfig = PLATFORMS[campaign.platform];
              return (
                <div key={campaign.id} className="p-4 space-y-4 hover:bg-[#161b27]/10 transition-colors">
                  <div className="flex items-start justify-between">
                    <div className="space-y-1.5 flex items-start gap-2.5">
                      <span className="text-xl bg-[#161b27] border border-gray-850 w-7 h-7 rounded-lg flex items-center justify-center flex-shrink-0" title={platformConfig?.name}>
                        {platformConfig?.logo || "🌐"}
                      </span>
                      <div>
                        <div className="flex items-center gap-1.5 flex-wrap">
                          <h4 className="text-sm font-semibold text-white">{campaign.name}</h4>
                          {campaign.ai_generated && (
                            <span className="text-[8px] font-bold bg-purple-500/10 text-purple-400 border border-purple-500/20 px-1.5 py-0.5 rounded-md flex items-center gap-0.5">
                              <Sparkles className="w-2.5 h-2.5" />
                              AI
                            </span>
                          )}
                        </div>
                        <div className="flex items-center gap-2 mt-1">
                          <span className={`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[9px] font-medium border ${typeInfo.color}`}>
                            <span>{typeInfo.icon}</span>
                            <span>{typeInfo.label}</span>
                          </span>
                          <span className="text-[10px] text-gray-500">
                            {new Date(campaign.created_at).toLocaleDateString("ar-SA")}
                          </span>
                        </div>
                      </div>
                    </div>
                    <span className={`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[9px] font-bold ${
                      campaign.status === "active" ? "text-emerald-400 bg-emerald-500/5" : "text-yellow-400 bg-yellow-500/5"
                    }`}>
                      {campaign.status === "active" ? "نشط" : "موقف"}
                    </span>
                  </div>

                  {/* Grid of stats */}
                  <div className="grid grid-cols-4 gap-2 bg-[#161b27]/30 p-2.5 rounded-lg border border-gray-800/50 text-center">
                    <div>
                      <p className="text-[9px] text-gray-500">النقرات</p>
                      <p className="text-xs font-bold text-white mt-0.5">{formatNumber(campaign.clicks)}</p>
                    </div>
                    <div>
                      <p className="text-[9px] text-gray-500">الظهور</p>
                      <p className="text-xs font-bold text-white mt-0.5">{formatNumber(campaign.impressions)}</p>
                    </div>
                    <div>
                      <p className="text-[9px] text-gray-500">التحويلات</p>
                      <p className="text-xs font-bold text-white mt-0.5">{formatNumber(campaign.conversions)}</p>
                    </div>
                    <div>
                      <p className="text-[9px] text-gray-500">الميزانية</p>
                      <p className="text-xs font-bold text-white mt-0.5">{formatCurrency(campaign.budget_amount)}</p>
                    </div>
                  </div>

                  <div className="flex items-center justify-between">
                    <span className="text-xs text-gray-500">
                      إجمالي الإنفاق: <span className="text-white font-semibold">{formatCurrency(campaign.cost)}</span>
                    </span>
                    <div className="flex items-center gap-1.5">
                      <button
                        onClick={() => toggleStatus(campaign.id, campaign.status)}
                        disabled={actionLoading === campaign.id || campaign.status === "ended" || campaign.status === "draft"}
                        className={`p-2 rounded-lg border transition-all ${
                          campaign.status === "active"
                            ? "border-yellow-500/20 bg-yellow-500/10 text-yellow-400"
                            : "border-emerald-500/20 bg-emerald-500/10 text-emerald-400"
                        }`}
                      >
                        {actionLoading === campaign.id ? (
                          <Loader2 className="w-3.5 h-3.5 animate-spin" />
                        ) : campaign.status === "active" ? (
                          <Pause className="w-3.5 h-3.5" />
                        ) : (
                          <Play className="w-3.5 h-3.5" />
                        )}
                      </button>
                      <Link
                        href={`/dashboard/analytics?platform=${campaign.platform}&campaign=${campaign.id}`}
                        className="p-2 rounded-lg border border-gray-700 bg-gray-800/30 text-gray-400"
                      >
                        <BarChart2 className="w-3.5 h-3.5" />
                      </Link>
                      <button
                        onClick={() => deleteCampaign(campaign.id)}
                        disabled={actionLoading === campaign.id}
                        className="p-2 rounded-lg border border-red-500/20 bg-red-500/10 text-red-400"
                      >
                        <Trash2 className="w-3.5 h-3.5" />
                      </button>
                    </div>
                  </div>
                </div>
              );
            })}
          </div>
        </div>
      )}
    </div>
  );
}
