Files
LogiFlow/client/src/components/ConfirmationModal.tsx
T
2025-08-11 14:38:44 +00:00

62 lines
1.5 KiB
TypeScript

import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog";
import { Button } from "@/components/ui/button";
interface ConfirmationModalProps {
open: boolean;
onOpenChange: (open: boolean) => void;
onConfirm: () => void;
title: string;
description: string;
confirmText?: string;
cancelText?: string;
isLoading?: boolean;
variant?: "default" | "destructive";
}
export function ConfirmationModal({
open,
onOpenChange,
onConfirm,
title,
description,
confirmText = "Confirmer",
cancelText = "Annuler",
isLoading = false,
variant = "default",
}: ConfirmationModalProps) {
return (
<Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent className="sm:max-w-md">
<DialogHeader>
<DialogTitle>{title}</DialogTitle>
<DialogDescription>{description}</DialogDescription>
</DialogHeader>
<DialogFooter className="gap-2">
<Button
type="button"
variant="outline"
onClick={() => onOpenChange(false)}
disabled={isLoading}
>
{cancelText}
</Button>
<Button
type="button"
variant={variant}
onClick={onConfirm}
disabled={isLoading}
>
{isLoading ? "Chargement..." : confirmText}
</Button>
</DialogFooter>
</DialogContent>
</Dialog>
);
}