'use client' import type { Risk } from './types' import { RISK_COLORS, RISK_BG_COLORS, calculateRiskLevel } from './types' interface RiskMatrixProps { risks: Risk[] onEditRisk: (risk: Risk) => void } export default function RiskMatrix({ risks, onEditRisk }: RiskMatrixProps) { const matrix: Record> = {} for (let l = 1; l <= 5; l++) { matrix[l] = {} for (let i = 1; i <= 5; i++) { matrix[l][i] = [] } } risks.forEach((risk) => { if (matrix[risk.likelihood] && matrix[risk.likelihood][risk.impact]) { matrix[risk.likelihood][risk.impact].push(risk) } }) return (

Risk Matrix (Likelihood x Impact)

{/* Column headers (Impact) */}
{[1, 2, 3, 4, 5].map((i) => (
Impact {i}
))}
{/* Matrix rows */} {[5, 4, 3, 2, 1].map((likelihood) => (
L{likelihood}
{[1, 2, 3, 4, 5].map((impact) => { const level = calculateRiskLevel(likelihood, impact) const cellRisks = matrix[likelihood][impact] return (
{cellRisks.length > 0 && (
{cellRisks.map((r) => ( ))}
)}
) })}
))}
{/* Legend */}
Low (1-5)
Medium (6-11)
High (12-19)
Critical (20-25)
) }