Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 2x 26x 26x 1x 2x 2x 2x | import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from '@core/components/ui/dialog'
import { Button } from '@core/components/ui/button'
import type { ReactNode } from 'react'
import { useTranslation } from 'react-i18next'
interface ConfirmationDialogProps {
open: boolean
onOpenChange: (open: boolean) => void
onConfirm: () => void
title?: ReactNode
description?: ReactNode
confirmText?: string
cancelText?: string
variant?: 'default' | 'destructive'
}
export const ConfirmationDialog = ({
open,
onOpenChange,
onConfirm,
title,
description,
confirmText,
cancelText,
variant = 'default',
}: ConfirmationDialogProps) => {
const { t } = useTranslation('common')
return (
<Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent>
<DialogHeader>
<DialogTitle>{title || t('confirmation.title', 'Are you sure?')}</DialogTitle>
<DialogDescription>
{description ||
t('confirmation.description', 'This action cannot be undone.')}
</DialogDescription>
</DialogHeader>
<DialogFooter>
<Button variant="outline" onClick={() => onOpenChange(false)}>
{cancelText || t('common.cancel', 'Cancel')}
</Button>
<Button
variant={variant}
onClick={(e: React.MouseEvent<HTMLButtonElement>) => {
e.preventDefault()
onConfirm()
onOpenChange(false)
}}
>
{confirmText || t('common.confirm', 'Confirm')}
</Button>
</DialogFooter>
</DialogContent>
</Dialog>
)
}
|