import { useTranslation } from 'react-i18next'
import { Button } from '@/components/ui/button'
import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from '@/components/ui/dialog'
interface ConfirmDialogProps {
open: boolean
onOpenChange: (open: boolean) => void
title: string
description?: string
confirmLabel?: string
cancelLabel?: string
destructive?: boolean
onConfirm: () => void | Promise<void>
}
/**
* Phase 4 follow-up: replaces `window.confirm(...)` calls with a design-system
* dialog. Used for file deletion, project removal, etc.
*/
export function ConfirmDialog({
open,
onOpenChange,
title,
description,
confirmLabel,
cancelLabel,
destructive = false,
onConfirm,
}: ConfirmDialogProps) {
const { t } = useTranslation()
return (
<Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent className="sm:max-w-md">
<DialogHeader>
<DialogTitle>{title}</DialogTitle>
{description && <DialogDescription>{description}</DialogDescription>}
</DialogHeader>
<DialogFooter>
<Button variant="outline" onClick={() => onOpenChange(false)}>
{cancelLabel ?? t('common.cancel')}
</Button>
<Button
variant={destructive ? 'destructive' : 'default'}
onClick={() => {
onOpenChange(false)
void onConfirm()
}}
>
{confirmLabel ?? t('common.confirm')}
</Button>
</DialogFooter>
</DialogContent>
</Dialog>
)
}