'use client' import { useState } from 'react' import type { OrgRole, DefaultRole } from '../_types' import { ROLE_ICONS } from '../_types' interface RoleCardProps { role: OrgRole | DefaultRole onSave: (roleId: string, data: Partial) => Promise onSendTest: (roleId: string) => Promise<{ sent: boolean; email: string }> } export function RoleCard({ role, onSave, onSendTest }: RoleCardProps) { const isAssigned = 'id' in role const [editing, setEditing] = useState(false) const [name, setName] = useState((role as OrgRole).person_name || '') const [email, setEmail] = useState((role as OrgRole).person_email || '') const [dept, setDept] = useState((role as OrgRole).department || '') const [sending, setSending] = useState(false) const [testResult, setTestResult] = useState(null) const handleSave = async () => { if (!isAssigned) return await onSave((role as OrgRole).id, { person_name: name, person_email: email, department: dept }) setEditing(false) } const handleTest = async () => { if (!isAssigned) return setSending(true) setTestResult(null) try { const result = await onSendTest((role as OrgRole).id) setTestResult(result.sent ? `Gesendet an ${result.email}` : 'Fehler') } catch { setTestResult('Fehler beim Senden') } finally { setSending(false) } } const icon = ROLE_ICONS[role.role_key] || '\u{1F464}' return (
{icon}

{role.role_label}

{isAssigned && (role as OrgRole).person_name && !editing && (

{(role as OrgRole).person_name}

)}
{isAssigned && !editing && ( )}
{editing ? (
setName(e.target.value)} placeholder="Name" className="w-full px-3 py-1.5 text-sm border border-gray-200 rounded-lg focus:ring-1 focus:ring-purple-500 focus:border-purple-500" /> setEmail(e.target.value)} placeholder="E-Mail" type="email" className="w-full px-3 py-1.5 text-sm border border-gray-200 rounded-lg focus:ring-1 focus:ring-purple-500 focus:border-purple-500" /> setDept(e.target.value)} placeholder="Abteilung" className="w-full px-3 py-1.5 text-sm border border-gray-200 rounded-lg focus:ring-1 focus:ring-purple-500 focus:border-purple-500" />
) : ( <> {isAssigned && (role as OrgRole).person_email && (
{(role as OrgRole).person_email}
{(role as OrgRole).department &&
{(role as OrgRole).department}
}
)} {!isAssigned && (

Noch nicht zugewiesen

)} )} {isAssigned && (role as OrgRole).person_email && !editing && ( )} {testResult && (

{testResult}

)}
) }