import React from 'react'; import { Card } from '../ui/card'; import { Button } from '../ui/button'; import { StatCard } from '../dashboard/StatCard'; import { Play, SkipForward, Clock, Users, Map, ArrowLeft, Download, } from 'lucide-react'; import { useToast } from '../../context/ToastContext'; interface TrackAnalyticsViewProps { trackId: string; onBack: () => void; } export const TrackAnalyticsView: React.FC = ({ trackId: _trackId, onBack, }) => { const { addToast } = useToast(); // Mock Track Data const trackData = { title: 'Neon Nights', artist: 'Cyber_Producer', plays: 15420, skips: 320, avgListen: '2:45', // vs 3:45 total completion: 78, demographics: { '18-24': 45, '25-34': 30, '35+': 25 }, geo: [ { country: 'USA', percent: 40 }, { country: 'Japan', percent: 25 }, { country: 'Germany', percent: 15 }, { country: 'UK', percent: 10 }, ], }; return (

{trackData.title}

Analytics Report

{/* Key Metrics */}
} color="cyan" trend={12} sparklineData={[10, 15, 12, 20, 25, 30, 28, 35, 40]} /> } color="lime" trend={2.5} /> } color="red" trend={-0.5} // Negative is good for skip rate, logic in StatCard handles green/red based on +/-. might need tweak for inverse metrics /> } color="gold" />
{/* Plays Over Time Graph Placeholder */}

Plays Over Time (30 Days)

{Array.from({ length: 30 }).map((_, i) => { const h = Math.random() * 100; return (
{Math.floor(h * 10)} plays
); })}
{/* Demographics & Geo */}

Top Locations

{trackData.geo.map((g) => (
{g.country}
{g.percent}%
))}

Listeners Age

{Object.entries(trackData.demographics).map(([range, val]) => (
{range}
))}
{Object.entries(trackData.demographics).map(([range, val]) => ( {range}: {val}% ))}
); };