"use client" import { Badge } from "@/components/ui/badge" import { useI18n } from "@/i18n/provider" import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card" import type { DashboardOverview } from "@/lib/api/dashboard" type TeamLoadPanelProps = { agentStats: DashboardOverview["agentStats"] } function getLoadTone(loadRate: number) { if (loadRate >= 85) { return "bg-red-500" } if (loadRate >= 60) { return "bg-amber-500" } return "bg-emerald-500" } export function TeamLoadPanel({ agentStats }: TeamLoadPanelProps) { const t = useI18n() return ( {t("dashboardHome.teamLoad")} {t("dashboardHome.teamLoadDescription", { online: agentStats.onlineAgents, busy: agentStats.busyAgents, offline: agentStats.offlineAgents, })} {agentStats.teamLoads.length === 0 ? (
{t("dashboardHome.noTeamData")}
) : ( agentStats.teamLoads.map((item) => (
{item.teamName}
{item.hasScheduleNow ? ( {t("dashboardHome.scheduled")} ) : ( {t("dashboardHome.notScheduled")} )}
{t("dashboardHome.teamStats", { total: item.totalAgents, online: item.onlineAgents, busy: item.busyAgents, offline: item.offlineAgents, })}
{item.loadRate.toFixed(1)}%
{t("dashboardHome.load", { processing: item.processingConversations, capacity: item.maxConcurrentCapacity || 0, })}
{t("dashboardHome.waiting")}
{item.waitingConversations}
{t("dashboardHome.processing")}
{item.processingConversations}
{t("dashboardHome.capacity")}
{item.maxConcurrentCapacity}
{t("dashboardHome.busyAgents")}
{item.busyAgents}
)) )} ) }