"use client"; import { useTranslation } from "react-i18next"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { LoadingButton } from "./loading-button"; import { RippleButton } from "./ui/ripple"; interface DeleteConfirmationDialogProps { isOpen: boolean; onClose: () => void; onConfirm: () => void | Promise; title: string; description: string; confirmButtonText?: string; isLoading?: boolean; profileIds?: string[]; profiles?: { id: string; name: string }[]; } export function DeleteConfirmationDialog({ isOpen, onClose, onConfirm, title, description, confirmButtonText, isLoading = false, profileIds, profiles = [], }: DeleteConfirmationDialogProps) { const { t } = useTranslation(); const handleConfirm = async () => { await onConfirm(); }; return ( {title} {description} {profileIds && profileIds.length > 0 && (

{t("deleteDialog.profilesToDelete")}

    {profileIds.map((id) => { const profile = profiles.find((p) => p.id === id); const displayName = profile ? profile.name : id; return (
  • • {displayName}
  • ); })}
)}
{t("common.buttons.cancel")} void handleConfirm()} isLoading={isLoading} > {confirmButtonText ?? t("common.buttons.delete")}
); }