// =========================== // ScansList.tsx // ©AngelaMos | 2025 // =========================== import { Link } from 'react-router-dom'; import { GiMagnifyingGlass } from 'react-icons/gi'; import { useGetScans } from '@/hooks/useScan'; import { formatDate } from '@/lib/utils'; import './ScansList.css'; export const ScansList = (): React.ReactElement => { const { data: scans, isLoading, error } = useGetScans(); if (isLoading) { return (

Loading scans...

); } if (error !== null && error !== undefined) { return (

Failed to load scans. Please try again.

); } if ( scans === null || scans === undefined || !Array.isArray(scans) || scans.length === 0 ) { return (

No Scans Yet

Get started by running your first security scan above

); } return (
Target URL
Date
Tests
Vulnerabilities
Actions
{scans.map((scan) => { const vulnerableCount = scan.test_results.filter( (r) => r.status === 'vulnerable', ).length; const scanDate = formatDate(scan.scan_date); return (
{scan.target_url}
{scanDate}
{scan.test_results.length}
0 ? 'scans-list__vuln-badge--danger' : 'scans-list__vuln-badge--safe' }`} > {vulnerableCount}
View Results
); })}
); };