"use client"; import { PolarAngleAxis, PolarGrid, Radar, RadarChart as RechartsRadar, } from "recharts"; import { ChartConfig, ChartContainer, ChartTooltip, } from "@/components/ui/chart/Chart"; import { AlertPill } from "./shared/alert-pill"; import { CHART_COLORS } from "./shared/constants"; import { RadarDataPoint } from "./types"; interface RadarChartProps { data: RadarDataPoint[]; height?: number; dataKey?: string; onSelectPoint?: (point: RadarDataPoint | null) => void; selectedPoint?: RadarDataPoint | null; } const chartConfig = { value: { label: "Findings", color: "var(--chart-radar-primary)", }, } satisfies ChartConfig; const CustomTooltip = ({ active, payload }: any) => { if (active && payload && payload.length) { const data = payload[0]; return (

{data.payload.category}

{data.payload.change !== undefined && (

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

)}
); } return null; }; const CustomDot = (props: any) => { const { cx, cy, payload, selectedPoint, onSelectPoint } = props; const currentCategory = payload.category || payload.name; const isSelected = selectedPoint?.category === currentCategory; const handleClick = (e: React.MouseEvent) => { e.stopPropagation(); if (onSelectPoint) { if (isSelected) { onSelectPoint(null); } else { const point = { category: currentCategory, value: payload.value, change: payload.change, }; onSelectPoint(point); } } }; return ( ); }; export function RadarChart({ data, height = 400, dataKey = "value", onSelectPoint, selectedPoint, }: RadarChartProps) { return ( } /> { const { key, ...rest } = dotProps; return ( ); } : { r: 6, fill: "var(--chart-radar-primary)", fillOpacity: 1, } } /> ); }