import { Bell, VolumeX } from "lucide-react"; import { cn } from "@/lib/utils"; import { TooltipData } from "../types"; import { CHART_COLORS } from "./constants"; interface ChartTooltipProps { active?: boolean; payload?: any[]; label?: string; showColorIndicator?: boolean; colorIndicatorShape?: "circle" | "square"; } export function ChartTooltip({ active, payload, label, showColorIndicator = true, colorIndicatorShape = "square", }: ChartTooltipProps) { if (!active || !payload || payload.length === 0) { return null; } const data: TooltipData = payload[0].payload || payload[0]; const color = payload[0].color || data.color; return (
{showColorIndicator && color && (
)}

{label || data.name}

{typeof data.value === "number" ? data.value.toLocaleString() : data.value} {data.percentage !== undefined && ` (${data.percentage}%)`}

{data.newFindings !== undefined && data.newFindings > 0 && (
{data.newFindings} New Findings
)} {data.new !== undefined && data.new > 0 && (
{data.new} New
)} {data.muted !== undefined && data.muted > 0 && (
{data.muted} Muted
)} {data.change !== undefined && (

{data.change > 0 ? "+" : ""} {data.change}% {" "} Since Last Scan

)}
); } /** * Tooltip for charts with multiple data series (like LineChart) */ export function MultiSeriesChartTooltip({ active, payload, label, }: ChartTooltipProps) { if (!active || !payload || payload.length === 0) { return null; } return (

{label}

{payload.map((entry: any, index: number) => (
{entry.name}: {entry.value} {entry.payload[`${entry.dataKey}_change`] && ( ({entry.payload[`${entry.dataKey}_change`] > 0 ? "+" : ""} {entry.payload[`${entry.dataKey}_change`]}%) )}
))}
); }