import React, { useState, useEffect } from 'react'; import { initializeApp } from 'firebase/app'; import { getAuth, signInAnonymously, signInWithCustomToken, onAuthStateChanged } from 'firebase/auth'; import { getFirestore, collection, doc, onSnapshot, setDoc, deleteDoc } from 'firebase/firestore'; import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, LineChart, Line, AreaChart, Area, Cell, PieChart, Pie, Legend } from 'recharts'; import { LayoutDashboard, Globe, TrendingUp, DollarSign, ShoppingCart, Activity, RefreshCw, Plus, Trash2, ExternalLink, Filter, ChevronDown, Search, ArrowUpRight, Zap, Target, MousePointer2, Clock, X, Trophy, BarChart3, ListOrdered, Settings2, Monitor } from 'lucide-react'; // Firebase Config const firebaseConfig = JSON.parse(__firebase_config); const app = initializeApp(firebaseConfig); const auth = getAuth(app); const db = getFirestore(app); const appId = typeof __app_id !== 'undefined' ? __app_id : 'socialstardom-enterprise'; export default function App() { const [user, setUser] = useState(null); const [sites, setSites] = useState([]); const [siteData, setSiteData] = useState({}); const [activeSiteId, setActiveSiteId] = useState('all'); const [loading, setLoading] = useState(false); const [view, setView] = useState('overview'); // 'overview' | 'leaderboard' | 'network' const [isModalOpen, setIsModalOpen] = useState(false); const [newSite, setNewSite] = useState({ name: '', url: '', apiKey: '' }); // 1. Strict Authentication Flow useEffect(() => { const initAuth = async () => { try { if (typeof __initial_auth_token !== 'undefined' && __initial_auth_token) { await signInWithCustomToken(auth, __initial_auth_token); } else { await signInAnonymously(auth); } } catch (err) { console.error("Authentication failed:", err); } }; initAuth(); const unsubscribe = onAuthStateChanged(auth, (u) => { setUser(u); }); return () => unsubscribe(); }, []); // 2. Secured Firestore Listener useEffect(() => { if (!user) return; const sitesCollection = collection(db, 'artifacts', appId, 'public', 'data', 'sites'); const unsubscribe = onSnapshot(sitesCollection, (snapshot) => { setSites(snapshot.docs.map(d => ({ id: d.id, ...d.data() }))); }, (error) => { console.error("Firestore snapshot error:", error); } ); return () => unsubscribe(); }, [user]); const refreshData = async () => { if (!user || sites.length === 0) return; setLoading(true); const results = { ...siteData }; for (const site of sites) { try { const res = await fetch(`${site.url}?key=${site.apiKey}`); if (!res.ok) throw new Error("Fetch failed"); results[site.id] = await res.json(); } catch (e) { results[site.id] = { error: true, site_name: site.name }; } } setSiteData(results); setLoading(false); }; useEffect(() => { if (sites.length > 0) refreshData(); }, [sites]); const totals = Object.values(siteData).reduce((acc, curr) => { if (curr.stats) { acc.rev += parseFloat(curr.stats.total_revenue || 0); acc.paytm += parseFloat(curr.stats.paytm_revenue || 0); acc.orders += parseInt(curr.stats.total_orders || 0); acc.traffic += parseInt(curr.journey?.funnel?.users || 0); } return acc; }, { rev: 0, paytm: 0, orders: 0, traffic: 0 }); // Leaderboard Calculation const leaderboardData = sites.map(site => { const data = siteData[site.id]; return { id: site.id, name: site.name, revenue: parseFloat(data?.stats?.total_revenue || 0), orders: parseInt(data?.stats?.total_orders || 0), conversion: parseFloat(data?.analytics?.conversion?.replace('%', '') || 0), status: data?.error ? 'Offline' : (data ? 'Online' : 'Pending') }; }).sort((a, b) => b.revenue - a.revenue); if (!user) return (
Establishing Secure Connection...
); const currentData = activeSiteId === 'all' ? null : siteData[activeSiteId]; return (
{/* Vertical Sidebar */} {/* Main Area */}
{/* Top Header Bar */}

{view === 'overview' ? 'Performance Overview' : view === 'leaderboard' ? 'Site Rankings' : 'Manage Network'}

{sites.map(s => ( ))}
{view === 'overview' && (
{/* KPI Grid */}
} color="bg-indigo-600" trend="+14.2%" /> } color="bg-emerald-600" trend="+8.5%" /> } color="bg-rose-600" trend="+12.1%" /> } color="bg-amber-600" trend="+22.0%" />
{/* Main Analytics Row */}

Revenue Dynamics

Real-time Financial Flow

Live Stream

Attribution Analysis

{['#4f46e5', '#10b981', '#f59e0b', '#ef4444'].map((c, i) => )}
{(currentData?.attribution || [{source: 'Organic', orders: 40}, {source: 'Google Ads', orders: 30}, {source: 'Social', orders: 20}, {source: 'Direct', orders: 10}]).map((attr, idx) => (
{attr.source}
{attr.orders} Leads
))}

Acquisition Funnel

Top Converting Keywords

{['buy smm inr paytm', 'cheap followers india', 'youtube views india', 'instagram panel inr'].map((k, i) => (
{k}
))}
)} {view === 'leaderboard' && (

Site Leaderboard

Real-time performance ranking across your network.

{leaderboardData.map((item, index) => (
{/* Rank Badge */}
#{index + 1}

{item.name} {index === 0 && }

{item.status} {item.orders} Orders

Conversion

{item.conversion}%

Total Revenue

₹{item.revenue.toLocaleString('en-IN')}

))}
)} {view === 'network' && (
{sites.map(site => (

{site.name}

{site.url}

{siteData[site.id]?.error ? 'Service Interrupted' : 'Secure Connection'}
))}
)}
{/* Modern Modal Integration */} {isModalOpen && (

Expand Network

Configure New Integration

{ e.preventDefault(); if (!user) return; const id = crypto.randomUUID(); await setDoc(doc(db, 'artifacts', appId, 'public', 'data', 'sites', id), { ...newSite, id, createdAt: new Date().toISOString() }); setNewSite({ name: '', url: '', apiKey: '' }); setIsModalOpen(false); }} className="space-y-6"> setNewSite({...newSite, name: v})} /> setNewSite({...newSite, url: v})} /> setNewSite({...newSite, apiKey: v})} />
)}
); } function SidebarItem({ active, icon, label, onClick }) { return ( ); } function KPICard({ title, value, icon, color, trend }) { return (
{icon}
{trend}

{title}

{value}

{icon}
); } function FunnelStep({ label, value, percent, active }) { return (
{label} {value}
{percent}
); } function InputField({ label, placeholder, type = "text", value, onChange }) { return (
onChange(e.target.value)} />
); } const handleDeleteSite = async (id) => { const sitesCollection = collection(db, 'artifacts', appId, 'public', 'data', 'sites'); await deleteDoc(doc(sitesCollection, id)); };