'use client'
import { useState } from 'react'
import { useVendorCompliance } from '@/lib/sdk/vendor-compliance'
import Link from 'next/link'
import { VendorCreateModal } from './_components/VendorCreateModal'
import { StatCard } from './_components/StatCard'
import { RiskBar } from './_components/RiskBar'
import { QuickActionCard } from './_components/QuickActionCard'
export default function VendorComplianceDashboard() {
const {
vendors,
processingActivities,
contracts,
findings,
vendorStats,
complianceStats,
riskOverview,
isLoading,
} = useVendorCompliance()
const [showVendorCreate, setShowVendorCreate] = useState(false)
if (isLoading) {
return (
)
}
return (
{/* Header */}
Vendor & Contract Compliance
Übersicht über Verarbeitungsverzeichnis, Vendor Register und Vertragsprüfung
{/* Quick Stats */}
c.reviewStatus === 'COMPLETED').length} geprüft`}
href="/sdk/vendor-compliance/contracts"
color="green"
/>
{/* Risk Overview */}
{/* Vendor Risk Distribution */}
Vendor Risiko-Verteilung
Durchschn. Inherent Risk
{Math.round(riskOverview.averageInherentRisk)}%
Durchschn. Residual Risk
{Math.round(riskOverview.averageResidualRisk)}%
{/* Compliance Score */}
Compliance Status
{Math.round(complianceStats.averageComplianceScore)}%
{complianceStats.resolvedFindings}
Behoben
{complianceStats.openFindings}
Offen
Control Pass Rate
{Math.round(complianceStats.controlPassRate)}%
{/* Quick Actions */}
}
/>
setShowVendorCreate(true)}
icon={
}
/>
}
/>
{/* Faellige Reviews */}
Fällige Reviews
{vendors
.filter((v) => v.nextReviewDate && new Date(v.nextReviewDate) <= new Date())
.slice(0, 5)
.map((vendor) => (
{vendor.name}
{vendor.serviceDescription}
Review fällig
))}
{vendors.filter((v) => v.nextReviewDate && new Date(v.nextReviewDate) <= new Date()).length === 0 && (
Keine fälligen Reviews
)}
{showVendorCreate && (
setShowVendorCreate(false)}
onSuccess={() => { setShowVendorCreate(false); window.location.reload() }}
/>
)}
)
}