diff --git a/frontend/src/pages/TechniquesPage.tsx b/frontend/src/pages/TechniquesPage.tsx index 047fd9a..45557f3 100644 --- a/frontend/src/pages/TechniquesPage.tsx +++ b/frontend/src/pages/TechniquesPage.tsx @@ -1,6 +1,6 @@ import { useState, useMemo } from "react"; import { useQuery } from "@tanstack/react-query"; -import { Loader2, AlertCircle, Filter, X, Grid3X3, List } from "lucide-react"; +import { Loader2, AlertCircle, Filter, X, Grid3X3, List, AlertTriangle } from "lucide-react"; import { getTechniques, type TechniqueSummary } from "../api/techniques"; import AttackMatrix from "../components/AttackMatrix"; import type { TechniqueStatus } from "../types/models"; @@ -139,6 +139,72 @@ export default function TechniquesPage() { + {/* Legend */} +
+

Coverage legend

+
+ + {/* Validated */} +
+
+
+

Validated

+

Detected in ≥2 approved tests

+
+
+ + {/* Partial */} +
+
+
+

Partial

+

Some tests validated, coverage incomplete

+
+
+ + {/* In Progress */} +
+
+
+

In Progress

+

Tests active, awaiting validation

+
+
+ + {/* Not Covered */} +
+
+
+

Not Covered

+

Tested but not detected — confirmed gap

+
+
+ + {/* Not Evaluated */} +
+
+
+

Not Evaluated

+

No tests created yet — unknown risk

+
+
+ + {/* Review Required */} +
+
+
+ +
+
+
+

Review Required

+

Pending lead validation or re-evaluation

+
+
+ +
+
+ {/* Filters */}
@@ -255,28 +321,6 @@ export default function TechniquesPage() {
)} - {/* Legend */} -
- Legend: - {STATUS_OPTIONS.filter((s) => s.value !== "all").map((status) => ( -
-
- {status.label} -
- ))} -
); }