'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)}
)}
)
}