import { useMemo, useState } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faSidebarFlip, faSidebar } from '@fortawesome/pro-duotone-svg-icons'; import { AiChatPanel } from '@/components/call-desk/ai-chat-panel'; import { DashboardKpi } from '@/components/dashboard/kpi-cards'; import { AgentTable } from '@/components/dashboard/agent-table'; import { MissedQueue } from '@/components/dashboard/missed-queue'; import { useData } from '@/providers/data-provider'; import { cx } from '@/utils/cx'; type DateRange = 'today' | 'week' | 'month'; type DashboardTab = 'agents' | 'missed' | 'campaigns'; const getDateRangeStart = (range: DateRange): Date => { const now = new Date(); switch (range) { case 'today': { const s = new Date(now); s.setHours(0, 0, 0, 0); return s; } case 'week': { const s = new Date(now); s.setDate(s.getDate() - 7); return s; } case 'month': { const s = new Date(now); s.setDate(s.getDate() - 30); return s; } } }; export const TeamDashboardPage = () => { const { calls, leads, campaigns, loading } = useData(); const [dateRange, setDateRange] = useState('week'); const [tab, setTab] = useState('agents'); const [aiOpen, setAiOpen] = useState(true); const filteredCalls = useMemo(() => { const rangeStart = getDateRangeStart(dateRange); return calls.filter((call) => { if (!call.startedAt) return false; return new Date(call.startedAt) >= rangeStart; }); }, [calls, dateRange]); const dateRangeLabel = dateRange === 'today' ? 'Today' : dateRange === 'week' ? 'This Week' : 'This Month'; const tabs = [ { id: 'agents' as const, label: 'Agent Performance' }, { id: 'missed' as const, label: `Missed Queue (${filteredCalls.filter(c => c.callStatus === 'MISSED').length})` }, { id: 'campaigns' as const, label: `Campaigns (${campaigns.length})` }, ]; return (
{/* Header */}

Team Dashboard

{dateRangeLabel}
{(['today', 'week', 'month'] as const).map((range) => ( ))}
{/* Main content */}
{/* KPI cards — always visible */}
{/* Tabs */}
{tabs.map((t) => ( ))}
{/* Tab content */}
{loading && (

Loading...

)} {!loading && tab === 'agents' && ( )} {!loading && tab === 'missed' && ( )} {!loading && tab === 'campaigns' && (
{campaigns.length === 0 ? (

No campaigns

) : ( campaigns.map((c) => (
{c.campaignName}
{c.campaignStatus} {c.platform} {c.leadCount} leads {c.convertedCount} converted
{c.budget && ( ₹{Math.round(c.budget.amountMicros / 1_000_000).toLocaleString()} )}
)) )}
)}
{/* AI panel — collapsible */}
{aiOpen && (
)}
); };