import type { LucideIcon } from 'lucide-react';
import { ConfirmDialog } from '@/components/confirm-dialog';
import { Button } from '@/components/ui/button';

type DataTableBulkActionProps = {
    count: number;
    label: string;
    icon: LucideIcon;
    variant?: 'destructive' | 'outline' | 'default';
    disabled?: boolean;
    confirmTitle?: string;
    confirmDescription?: string;
    onConfirm: () => void;
};

export function DataTableBulkAction({
    count,
    label,
    icon: Icon,
    variant = 'destructive',
    disabled = false,
    confirmTitle,
    confirmDescription = 'Cette action est irréversible.',
    onConfirm,
}: DataTableBulkActionProps) {
    if (count < 1) {
        return null;
    }

    return (
        <ConfirmDialog
            trigger={
                <Button
                    type="button"
                    variant={variant}
                    size="sm"
                    disabled={disabled}
                >
                    <Icon />
                    {label} ({count})
                </Button>
            }
            title={
                confirmTitle ??
                `${label} ${count} élément${count > 1 ? 's' : ''} ?`
            }
            description={confirmDescription}
            confirmLabel={label}
            variant={variant === 'destructive' ? 'destructive' : 'default'}
            onConfirm={onConfirm}
        />
    );
}
