'use client' import type { ToolStatus, Finding, ScanType, TabId } from '../types' import { TOOL_DESCRIPTIONS, TOOL_TO_SCAN_TYPE } from '../types' import { getSeverityBadge, getStatusBadge } from '../useSecurityDashboard' interface OverviewTabProps { tools: ToolStatus[] findings: Finding[] scanning: string | null onRunScan: (scanType: ScanType) => void onSwitchTab: (tab: TabId) => void } export function OverviewTab({ tools, findings, scanning, onRunScan, onSwitchTab }: OverviewTabProps) { return (
{/* Tools Grid */}

DevSecOps Tools

{tools.map(tool => { const info = TOOL_DESCRIPTIONS[tool.name.toLowerCase()] || { icon: '🔧', desc: 'Security Tool' } const scanType = TOOL_TO_SCAN_TYPE[tool.name.toLowerCase()] || 'all' return (
{info.icon} {tool.name}
{tool.installed ? 'Installiert' : 'Nicht installiert'}

{info.desc}

{tool.version || '-'} Letzter Scan: {tool.last_run || 'Nie'}
) })}
{/* Recent Findings */}

Aktuelle Findings

{findings.length === 0 ? (
🎉 Keine Findings gefunden. Das ist gut!
) : (
{findings.slice(0, 10).map((finding, idx) => ( ))}
Severity Tool Finding Datei Gefunden
{finding.severity} {finding.tool} {finding.title} {finding.file || '-'} {finding.found_at ? new Date(finding.found_at).toLocaleString('de-DE', { day: '2-digit', month: '2-digit', hour: '2-digit', minute: '2-digit', }) : '-'}
{findings.length > 10 && ( )}
)}
) }