'use client' import { useActionState, useState, useTransition } from 'react' import { de } from '@/lib/i18n/de' import { StatusTags } from '@/components/StatusTags' import { reclassifyPersonnelAction, updatePersonnelAction, type ActionResult, } from '../actions' type File = { id: string displayName: string rank: string | null department: string | null statusTags: string[] note: string | null classification: number userId: string | null } /** * Kopfdaten einer Personalakte: lesen und ändern in derselben Ansicht. * * Die Klassifizierung steht bewusst getrennt. Sie ändert, wer die Akte * überhaupt sieht, und eine Herabstufung braucht eine Begründung — das gehört * nicht in dasselbe Formular wie eine Korrektur der Dienstnummer. */ export function PersonnelHead({ file, canEdit, levels, statusTags, }: { file: File canEdit: boolean levels: { level: number; name: string }[] statusTags: { key: string; name: string; colorToken: string }[] }) { const [editing, setEditing] = useState(false) const [state, action, pending] = useActionState( updatePersonnelAction, null, ) if (!editing) { return (
{de.personnel.status} {file.statusTags.length > 0 ? ( ) : ( {de.personnel.statusNone} )}
{file.note ? (

{file.note}

) : null} {canEdit ? (
) : null}
) } return (
setEditing(false)} className="max-w-(--container-measure) space-y-4" >
{de.personnel.status}
{statusTags.map((tag) => ( ))}

{de.personnel.statusHint}