'use client'; import { useDSGVO } from '@breakpilot/compliance-sdk-react'; import Link from 'next/link'; import { Shield, Users, FileCheck, FileText, Lock, Trash2, ClipboardCheck, AlertCircle, ArrowRight, ArrowLeft, } from 'lucide-react'; export default function DSGVOPage() { const { consents, dsrRequests, vvtActivities, toms, isLoading } = useDSGVO(); const modules = [ { id: 'consent', title: 'Einwilligungen', description: 'Consent-Tracking Multi-Channel', icon: ClipboardCheck, href: '/dsgvo/consent', articles: 'Art. 6, 7', count: consents?.length ?? 0, color: 'bg-blue-500', }, { id: 'dsr', title: 'Betroffenenrechte (DSR)', description: 'Auskunft, Loeschung, Berichtigung', icon: Users, href: '/dsgvo/dsr', articles: 'Art. 15-21', count: dsrRequests?.length ?? 0, color: 'bg-green-500', }, { id: 'vvt', title: 'Verarbeitungsverzeichnis', description: 'Dokumentation aller Verarbeitungstaetigkeiten', icon: FileText, href: '/dsgvo/vvt', articles: 'Art. 30', count: vvtActivities?.length ?? 0, color: 'bg-purple-500', }, { id: 'dsfa', title: 'Datenschutz-Folgenabschaetzung', description: 'Risk Assessment fuer Verarbeitungen', icon: AlertCircle, href: '/dsgvo/dsfa', articles: 'Art. 35, 36', count: 0, color: 'bg-yellow-500', }, { id: 'tom', title: 'TOM', description: 'Technische & Organisatorische Massnahmen', icon: Lock, href: '/dsgvo/tom', articles: 'Art. 32', count: toms?.length ?? 0, color: 'bg-red-500', }, { id: 'retention', title: 'Loeschfristen', description: 'Retention Policies & Automations', icon: Trash2, href: '/dsgvo/retention', articles: 'Art. 5, 17', count: 0, color: 'bg-orange-500', }, ]; return (
{/* Header */}

DSGVO Modul

Datenschutz-Grundverordnung Compliance

{/* Progress Overview */}

DSGVO Compliance Status

{consents?.length ?? 0}
Active Consents
{dsrRequests?.filter((r) => r.status === 'PENDING').length ?? 0}
Pending DSRs
{vvtActivities?.length ?? 0}
Processing Activities
{toms?.filter((t) => t.implementationStatus === 'IMPLEMENTED').length ?? 0}
Implemented TOMs
{/* Module Grid */}
{modules.map((module) => { const Icon = module.icon; return (
{module.articles}

{module.title}

{module.description}

{module.count} {' '} Eintraege
); })}
); }