"use client"; import { Archive } from "lucide-react"; import { useActionState, useRef } from "react"; import { useFormularAktion } from "@/components/hosts/useFormularAktion"; import { Auswahlliste, Button, Feld, Formularfehler, Karte, Textbereich } from "@/components/ui"; import type { FormularZustand } from "@/server/actions/formular"; import { personAnlegenAktion, personArchivierenAktion, personBearbeitenAktion, } from "@/server/actions/personen"; export type PersonFormularVorgabe = { id?: string; name: string; email: string; organisation: string; notiz: string; benutzerId: string; }; export const LEERE_PERSON: PersonFormularVorgabe = { name: "", email: "", organisation: "", notiz: "", benutzerId: "", }; /** Formular fuer neue und bestehende Personen (#013). Regeln prueft der Server. */ export function PersonFormular({ vorgabe, konten, abbrechenZiel, }: { vorgabe: PersonFormularVorgabe; konten: { id: string; name: string; email: string | null }[]; abbrechenZiel: string; }) { const bearbeiten = Boolean(vorgabe.id); const { zustand, absenden, laeuft } = useFormularAktion( bearbeiten ? personBearbeitenAktion : personAnlegenAktion, ); const f = zustand.feldfehler ?? {}; return (
{vorgabe.id && }
{konten.map((k) => ( ))} {f["benutzerId"] &&

{f["benutzerId"]}

}
); } /** Archivieren mit Rueckfrage, nativer `` wie bei Hosts (#008). */ export function PersonArchivieren({ personId, name }: { personId: string; name: string }) { const dialog = useRef(null); const [zustand, aktion, laeuft] = useActionState(personArchivierenAktion, {}); return ( <>

{name} archivieren?

Die Person verschwindet aus Listen und Auswahlfeldern, die Verknüpfung zum Konto entfällt. Ihre Schlüssel bleiben zugeordnet und unverändert – widerrufen ist ein eigener Schritt.

); }