'use client' import { useState } from 'react' import { AlertTriangle, ChevronDown, ChevronUp, Eye, Globe, GraduationCap, Pencil, Shield, Truck, Users, } from 'lucide-react' import type { TenantOverview } from '../_types' import { formatDate, formatDateTime, getRiskBadgeClasses, getStatusBadge } from './helpers' import { ComplianceRing } from './ComplianceRing' export function TenantCard({ tenant, onEdit, onViewDetails, onSwitchTenant, }: { tenant: TenantOverview onEdit: (t: TenantOverview) => void onViewDetails: (t: TenantOverview) => void onSwitchTenant: (t: TenantOverview) => void }) { const [expanded, setExpanded] = useState(false) const statusInfo = getStatusBadge(tenant.status) return (
{/* Card Header */}

{tenant.name}

{statusInfo.icon} {statusInfo.label}

{tenant.slug}

{/* Risk Level */}
{tenant.risk_level} {tenant.namespace_count} Namespace{tenant.namespace_count !== 1 ? 's' : ''} {formatDate(tenant.created_at)}
{/* Quick Metrics */}
{tenant.open_incidents} Vorfaelle
{tenant.open_reports} Meldungen
{tenant.pending_dsrs} DSRs
{tenant.training_completion_rate}% Training
{/* Vendor Risk Info */} {tenant.vendor_risk_high > 0 && (
{tenant.vendor_risk_high} Dienstleister mit hohem Risiko
)} {/* Actions */}
{/* Expanded Section */} {expanded && (
Max. Benutzer

{tenant.max_users.toLocaleString('de-DE')}

LLM Kontingent / Monat

{tenant.llm_quota_monthly.toLocaleString('de-DE')}

Compliance Score

{tenant.compliance_score} / 100

Aktualisiert

{formatDateTime(tenant.updated_at)}

)}
) }