From a5995e1438bde8afb14289b57325fe91123c52a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Mart=C3=ADn?= Date: Tue, 27 Oct 2026 12:02:24 +0100 Subject: [PATCH] feat(ui): add NATO D32 compliance icon (#13174) --- ui/changelog.d/nato-d32-compliance-icon.added.md | 1 + .../icons/compliance/IconCompliance.test.ts | 12 ++++++++++++ ui/components/icons/compliance/IconCompliance.tsx | 4 ++++ ui/components/icons/compliance/nato.svg | 13 +++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 ui/changelog.d/nato-d32-compliance-icon.added.md create mode 100644 ui/components/icons/compliance/nato.svg diff --git a/ui/changelog.d/nato-d32-compliance-icon.added.md b/ui/changelog.d/nato-d32-compliance-icon.added.md new file mode 100644 index 0000000000..9838e54ff5 --- /dev/null +++ b/ui/changelog.d/nato-d32-compliance-icon.added.md @@ -0,0 +1 @@ +Icon for the NATO D32 compliance framework on the compliance cards diff --git a/ui/components/icons/compliance/IconCompliance.test.ts b/ui/components/icons/compliance/IconCompliance.test.ts index 9630886477..b54ac7d2d8 100644 --- a/ui/components/icons/compliance/IconCompliance.test.ts +++ b/ui/components/icons/compliance/IconCompliance.test.ts @@ -94,6 +94,18 @@ describe("getComplianceIcon", () => { expect(getComplianceIcon("nist_800_53_revision_5_aws")).toBe(nistLogo); }); + it("resolves NATO D32 by its id, its framework and its title", () => { + const natoLogo = getComplianceIcon("nato_cloud_directive_rev1"); + expect(natoLogo).toBeDefined(); + expect(getComplianceIcon("NATO-Cloud-Directive")).toBe(natoLogo); + expect( + getComplianceIcon( + "NATO D32 (AC/322-D(2021)0032-REV1) - NATO Restricted baseline", + ), + ).toBe(natoLogo); + expect(getComplianceIcon("nato_cloud_directive_rev1_aws")).toBe(natoLogo); + }); + it("resolves PCI/HIPAA/GDPR/SOC2/ENS/FedRAMP/MITRE/RBI/KISA/SecNumCloud by their framework keyword", () => { // Spot-check the rest of the framework keywords against AWS-suffixed ids. // Each must resolve to a distinct logo from `aws` so the watchlist diff --git a/ui/components/icons/compliance/IconCompliance.tsx b/ui/components/icons/compliance/IconCompliance.tsx index ce446b9119..a0f0b749fc 100644 --- a/ui/components/icons/compliance/IconCompliance.tsx +++ b/ui/components/icons/compliance/IconCompliance.tsx @@ -18,6 +18,7 @@ import HIPAALogo from "./hipaa.svg"; import ISOLogo from "./iso-27001.svg"; import KISALogo from "./kisa.svg"; import MITRELogo from "./mitre-attack.svg"; +import NATOLogo from "./nato.svg"; import NIS2Logo from "./nis2.svg"; import NISTLogo from "./nist.svg"; import OktaLogo from "./okta.svg"; @@ -87,6 +88,9 @@ const COMPLIANCE_LOGOS = [ // The compliance_id is `dora_2022_2554`; the `dora` keyword still matches // it via `includes`, with no provider suffix. ["dora", DORALogo], + // Matches the id `nato_cloud_directive_rev1` and the framework + // `NATO-Cloud-Directive` that the cards pass. + ["nato", NATOLogo], ["secnumcloud", ANSSILogo], ["okta", OktaLogo], ["aws", AWSLogo], diff --git a/ui/components/icons/compliance/nato.svg b/ui/components/icons/compliance/nato.svg new file mode 100644 index 0000000000..a23fc00618 --- /dev/null +++ b/ui/components/icons/compliance/nato.svg @@ -0,0 +1,13 @@ + + + + + + + + + + NATO + D32 CLOUD DIRECTIVE + +