'use client' import { Language } from '@/lib/types' import GradientText from '../ui/GradientText' import FadeInView from '../ui/FadeInView' import { FileCheck, Code, Zap, Shield, GitPullRequest, ArrowLeftRight, } from 'lucide-react' interface USPSlideProps { lang: Language } export default function USPSlide({ lang }: USPSlideProps) { const de = lang === 'de' const subtitle = de ? 'Die erste Plattform, die Compliance-Dokumente und tatsächliche Code-Umsetzung verbindet' : 'The first platform that connects compliance documents with actual code implementation' const complianceItems = de ? ['DSGVO-Dokumente', 'Audit-Management', 'RFQ-Anforderungen', 'CE-Bewertungen'] : ['GDPR documents', 'Audit management', 'RFQ requirements', 'CE assessments'] const codeItems = de ? ['SAST / DAST / SBOM', 'Pentesting', 'Issue-Tracker', 'Auto-Fixes'] : ['SAST / DAST / SBOM', 'Pentesting', 'Issue tracker', 'Auto-fixes'] const capabilities = [ { icon: GitPullRequest, color: 'text-indigo-400', border: 'border-indigo-500/20', bg: 'bg-indigo-500/10', label: de ? 'RFQ-Prüfung' : 'RFQ Verification', desc: de ? 'Kunden-Anforderungsdokumente werden automatisiert gegen die aktuelle Source-Code-Umsetzung geprüft. Abweichungen werden erkannt, Änderungen vorgeschlagen und auf Wunsch direkt im Code umgesetzt — ohne manuelles Nacharbeiten.' : 'Customer requirement documents are automatically verified against current source code. Deviations are detected, changes proposed and implemented directly in code on request — no manual rework needed.', }, { icon: ArrowLeftRight, color: 'text-purple-400', border: 'border-purple-500/20', bg: 'bg-purple-500/10', label: de ? 'Bidirektional' : 'Bidirectional', desc: de ? 'Compliance-Anforderungen fliessen direkt in den Code. Umgekehrt aktualisieren Code-Änderungen automatisch die Compliance-Dokumentation. Beide Seiten sind immer synchron — kein Informationsverlust zwischen Audit und Entwicklung.' : 'Compliance requirements flow directly into code. Conversely, code changes automatically update compliance documentation. Both sides always stay in sync — no information loss between audit and development.', }, { icon: Zap, color: 'text-amber-400', border: 'border-amber-500/20', bg: 'bg-amber-500/10', label: de ? 'Prozess-Compliance' : 'Process Compliance', desc: de ? 'Vom Audit-Finding über das Ticket bis zur Code-Änderung läuft der gesamte Prozess automatisiert durch. Rollen, Fristen und Eskalation werden End-to-End verwaltet. Nachweise werden automatisch generiert und archiviert.' : 'From audit finding to ticket to code change, the entire process runs automatically. Roles, deadlines and escalation are managed end-to-end. Evidence is automatically generated and archived.', }, { icon: Shield, color: 'text-emerald-400', border: 'border-emerald-500/20', bg: 'bg-emerald-500/10', label: de ? 'Kontinuierlich' : 'Continuous', desc: de ? 'Klassische Compliance prüft einmal im Jahr und hofft auf das Beste. Unsere Plattform prüft bei jeder Code-Änderung. Findings werden sofort zu Tickets mit konkreten Implementierungsvorschlägen im Issue-Tracker der Wahl.' : 'Traditional compliance checks once a year and hopes for the best. Our platform checks on every code change. Findings immediately become tickets with concrete implementation proposals in the issue tracker of choice.', }, ] return (
{/* Title */}

USP

{subtitle}

{/* ===== CENTER: Large circle ===== */}
{/* Outer spinning dashed ring */}
{/* Inner ring */}
{/* Center hub: Infinity symbol */}
{/* Left half: Compliance */}
Compliance
    {complianceItems.map((item, idx) => (
  • {item}
  • ))}
{/* Right half: Code */}
Code & Security
    {codeItems.map((item, idx) => (
  • {item}
  • ))}
{/* 4 directional arrows */}
{/* ===== CARDS: 4 corners, spread out ===== */} {/* Top Left */}
{(() => { const Icon = capabilities[0].icon; const cap = capabilities[0]; return (
{cap.label}

{cap.desc}

)})()}
{/* Top Right */}
{(() => { const Icon = capabilities[1].icon; const cap = capabilities[1]; return (
{cap.label}

{cap.desc}

)})()}
{/* Bottom Left */}
{(() => { const Icon = capabilities[2].icon; const cap = capabilities[2]; return (
{cap.label}

{cap.desc}

)})()}
{/* Bottom Right */}
{(() => { const Icon = capabilities[3].icon; const cap = capabilities[3]; return (
{cap.label}

{cap.desc}

)})()}
{/* Dashed connection lines from circle to cards */}
) }