'use client' import * as React from 'react' import { useActionState } from 'react' import { AlertCircle, Trash2 } from 'lucide-react' import { Alert, AlertDescription } from '@/components/ui/alert' import { Button } from '@/components/ui/button' import { Absendeknopf } from '@/components/finanzen/eingaben' import type { Formularzustand } from '@/server/actions/finanzen' type Aktion = (zustand: Formularzustand, daten: FormData) => Promise /** * Löschknopf mit Rückfrage. * * Gelöscht wird im Papierkorb-Sinn: geloeschtAm wird gesetzt, der * Datensatz bleibt 30 Tage bestehen. Bei Saldoständen und Wertständen * ist es dagegen ein echtes Entfernen – deshalb steht bei denen ein * deutlicherer Text. */ export function Loeschknopf({ aktion, felder, beschriftung = 'Löschen', frage, variante = 'ghost', }: { aktion: Aktion felder: Record beschriftung?: string frage: string variante?: 'ghost' | 'destructive' | 'outline' }) { const [zustand, absenden] = useActionState(aktion, {}) const [gefragt, setGefragt] = React.useState(false) if (!gefragt) { return (
{zustand.fehler && ( )}
) } return (
{Object.entries(felder).map(([name, wert]) => ( ))}

{frage}

Ja, löschen
) }