'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!
) : (
| Severity |
Tool |
Finding |
Datei |
Gefunden |
{findings.slice(0, 10).map((finding, idx) => (
|
{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 && (
)}
)}
)
}