diff --git a/admin-compliance/app/sdk/iace/[projectId]/cra/_components/CRACyberView.tsx b/admin-compliance/app/sdk/iace/[projectId]/cra/_components/CRACyberView.tsx index 745bfc2c..c1a37523 100644 --- a/admin-compliance/app/sdk/iace/[projectId]/cra/_components/CRACyberView.tsx +++ b/admin-compliance/app/sdk/iace/[projectId]/cra/_components/CRACyberView.tsx @@ -1,6 +1,7 @@ 'use client' -import { CRADemo } from '../_hooks/useCRADemo' +import { Fragment, useState } from 'react' +import { CRADemo, CRAFinding } from '../_hooks/useCRADemo' const RISK_BADGE: Record = { CRITICAL: 'bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300', @@ -17,6 +18,82 @@ function RiskBadge({ level }: { level: string }) { ) } +function FindingsTable({ findings }: { findings: CRAFinding[] }) { + const [open, setOpen] = useState>({}) + const toggle = (id: string) => setOpen((o) => ({ ...o, [id]: !o[id] })) + return ( +
+ + + + + + + + + + + + {findings.map((f) => ( + + + + + + + + + {open[f.id] && ( + + + + )} + + ))} + +
Cyber-BefundCRA-AnforderungRisikoMaßnahmenBest Practice
+
{f.title}
+
{f.id} · {f.cwe} · {f.location}
+
+ {f.primary_requirement} {f.requirement_title} + {f.requirement_ids.length > 1 && ( + +{f.requirement_ids.length - 1} + )} +
{f.annex_anchor}
+
+ {f.measures.length ? f.measures.join(', ') : } + + +
+

Best-Practice-Tiefe (Golden-Set-Crosswalk)

+
+ NIST 800-53: + {f.nist_refs.map((n) => ( + {n} + ))} + OWASP: + {f.owasp_refs.map((o) => ( + {o.code} · {o.label} + ))} + {f.iso27001_ref.length > 0 && ( + <> + ISO 27001: + {f.iso27001_ref.map((iso) => ( + {iso} + ))} + + )} +
+
+
+ ) +} + export function CRACyberView({ data }: { data: CRADemo }) { return (
@@ -86,54 +163,7 @@ export function CRACyberView({ data }: { data: CRADemo }) {

Befunde → CRA-Anforderung

-
- - - - - - - - - - - - {data.findings.map((f) => ( - - - - - - - - ))} - -
Cyber-BefundCRA-AnforderungBest Practice (NIST / OWASP)RisikoMaßnahmen
-
{f.title}
-
{f.id} · {f.cwe} · {f.location}
-
- {f.primary_requirement} {f.requirement_title} - {f.requirement_ids.length > 1 && ( - +{f.requirement_ids.length - 1} - )} -
{f.annex_anchor}
-
-
- {f.nist_refs.map((n) => ( - - {n} - - ))} - {f.owasp_refs.map((o) => ( - - {o.code} - - ))} -
-
- {f.measures.length ? f.measures.join(', ') : } -
-
+
{/* Recommended measures — full curated text + norm references */}