import { useState, useEffect } from "react"; import { Settings, DollarSign, TrendingUp, Users, Play } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Switch } from "@/components/ui/switch"; import { Badge } from "@/components/ui/badge"; interface AdNetworkConfig { id: string; name: string; description: string; status: 'active' | 'inactive' | 'pending'; eCPM: number; fillRate: number; priority: number; vastUrl: string; } const AD_NETWORKS: AdNetworkConfig[] = [ { id: 'publift', name: 'Publift', description: 'Agregator več oglaševalskih omrežij (Teads, Primis, Magnite)', status: 'active', eCPM: 2.85, fillRate: 92, priority: 1, vastUrl: 'https://publiftvast.example.com/vast' }, { id: 'vdo', name: 'Vdo.ai', description: 'Napredno AI ciljanje z visokim eCPM', status: 'active', eCPM: 3.20, fillRate: 87, priority: 2, vastUrl: 'https://vdo.ai/vast' }, { id: 'primis', name: 'Primis', description: 'Video discovery platforma z visoko angažiranostjo', status: 'pending', eCPM: 2.95, fillRate: 89, priority: 3, vastUrl: 'https://primis.tech/vast' }, { id: 'adplayer', name: 'AdPlayer.Pro', description: 'Outstream rešitve s sticky in rewarded oglasi', status: 'inactive', eCPM: 2.65, fillRate: 85, priority: 4, vastUrl: 'https://adplayer.pro/vast' }, { id: 'aniview', name: 'Aniview', description: 'Instream, outstream in CTV/OTT format', status: 'inactive', eCPM: 3.10, fillRate: 91, priority: 5, vastUrl: 'https://aniview.com/vast' } ]; interface AdSettingsProps { isOpen: boolean; onClose: () => void; } export default function AdSettings({ isOpen, onClose }: AdSettingsProps) { const [networks, setNetworks] = useState(AD_NETWORKS); const [globalAdEnabled, setGlobalAdEnabled] = useState(true); const [totalRevenue, setTotalRevenue] = useState(1247.83); const [totalImpressions, setTotalImpressions] = useState(45231); const [averageeCPM, setAverageeCPM] = useState(2.89); const toggleNetwork = (networkId: string) => { setNetworks(networks.map(network => network.id === networkId ? { ...network, status: network.status === 'active' ? 'inactive' : 'active' } : network )); }; const updatePriority = (networkId: string, newPriority: number) => { setNetworks(networks.map(network => network.id === networkId ? { ...network, priority: newPriority } : network )); }; const getStatusColor = (status: string) => { switch (status) { case 'active': return 'bg-green-500'; case 'pending': return 'bg-yellow-500'; case 'inactive': return 'bg-gray-500'; default: return 'bg-gray-500'; } }; const getStatusText = (status: string) => { switch (status) { case 'active': return 'Active'; case 'pending': return 'Pending'; case 'inactive': return 'Inactive'; default: return 'Unknown'; } }; if (!isOpen) return null; return (

Ad Settings

{/* Revenue Overview */}
Total Revenue
€{totalRevenue.toFixed(2)}
+12.5% this month
Total Impressions
{totalImpressions.toLocaleString()}
+8.2% this month
Average eCPM
€{averageeCPM.toFixed(2)}
+5.7% this month
{/* Global Ad Toggle */} Global Ad Settings Enable or disable all ads on the go4.video platform {/* Ad Networks Configuration */} Ad Networks Configure VAST networks in waterfall order for optimal monetization
{networks .sort((a, b) => a.priority - b.priority) .map((network) => (

{network.name}

{getStatusText(network.status)} Prioriteta {network.priority}

{network.description}

eCPM: €{network.eCPM.toFixed(2)} Fill Rate: {network.fillRate}%
toggleNetwork(network.id)} disabled={network.status === 'pending'} />
))}
{/* Integration Guide */} Napredna monetizacija Navodila za optimizacijo prihodkov z go4.video

Publift integracija

Multi-network aggregator for revenue increase up to 55%

Header bidding

Recommended for 100,000+ monthly views

VAST Waterfall Optimization

Automatic switching between networks for maximum CPMs

); }