'use client' import React, { useState } from 'react' import { DSFA_RISK_LEVEL_LABELS, calculateRiskLevel, } from '@/lib/sdk/dsfa/types' import type { DSFARiskCategory } from '@/lib/sdk/dsfa/types' import type { SDMGoal } from '@/lib/sdk/dsfa/types' import { RISK_CATALOG, RISK_CATEGORY_LABELS, } from '@/lib/sdk/dsfa/risk-catalog' import type { CatalogRisk } from '@/lib/sdk/dsfa/risk-catalog' import { SDM_GOAL_LABELS } from '@/lib/sdk/dsfa/mitigation-library' export function AddRiskModal({ likelihood, impact, onClose, onAdd, }: { likelihood: 'low' | 'medium' | 'high' impact: 'low' | 'medium' | 'high' onClose: () => void onAdd: (data: { category: string; description: string }) => void }) { const [mode, setMode] = useState<'catalog' | 'manual'>('catalog') const [category, setCategory] = useState('confidentiality') const [description, setDescription] = useState('') const [catalogFilter, setCatalogFilter] = useState('all') const [sdmFilter, setSdmFilter] = useState('all') const { level } = calculateRiskLevel(likelihood, impact) const filteredCatalog = RISK_CATALOG.filter(r => { if (catalogFilter !== 'all' && r.category !== catalogFilter) return false if (sdmFilter !== 'all' && r.sdmGoal !== sdmFilter) return false return true }) function selectCatalogRisk(risk: CatalogRisk) { setCategory(risk.category) setDescription(`${risk.title}\n\n${risk.description}`) setMode('manual') } return (

Risiko hinzufuegen

Eintrittswahrscheinlichkeit: {likelihood === 'low' ? 'Niedrig' : likelihood === 'medium' ? 'Mittel' : 'Hoch'} {' | '} Auswirkung: {impact === 'low' ? 'Niedrig' : impact === 'medium' ? 'Mittel' : 'Hoch'} {' | '} Risikostufe: {DSFA_RISK_LEVEL_LABELS[level]}
{/* Tab Toggle */}
{mode === 'catalog' ? (
{/* Filters */}
{/* Catalog List */}
{filteredCatalog.map(risk => ( ))}
{filteredCatalog.length === 0 && (

Keine Risiken fuer die gewaehlten Filter.

)}
) : (