"use client" import React, { useMemo } from 'react'; import { TrendingUp, TrendingDown } from "lucide-react"; import { Bar, BarChart, CartesianGrid, LabelList, XAxis, YAxis } from "recharts"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/Components/ui/card"; import { ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent, } from "@/Components/ui/chart"; import { SecuritySummaryReportResultType } from "@/types/security-summary"; export default function SecurityScoresOverviewBarChart({ reportData }: { reportData: SecuritySummaryReportResultType }) { const chartData = useMemo(() => [ { metric: 'Services Exposure', score: reportData.servizi_esposti_score }, { metric: 'Data Leak', score: reportData.dataleak_score }, { metric: 'Email Leak', score: reportData.rapporto_leak_email_score }, { metric: 'Spoofing', score: reportData.spoofing_score }, { metric: 'Open Port', score: reportData.open_ports_score }, { metric: 'Blacklist', score: reportData.blacklist_score }, { metric: 'Certificate', score: reportData.certificate_score } ], [reportData]); const chartConfig = { score: { label: "Score", color: "hsl(var(--chart-1))", }, label: { color: "hsl(var(--background))", }, } satisfies ChartConfig; const averageScore = useMemo(() => { const sum = chartData.reduce((acc, curr) => acc + curr.score, 0); return Math.round(sum / chartData.length); }, [chartData]); const isHighRisk = averageScore > 75; return ( Security Scores Overview Security metrics analysis `${value}%`} /> } /> `${value}%`} />
{isHighRisk ? ( <> High risk level detected ) : ( <> Moderate risk level )}
Average security score: {averageScore}%
); }