import {
  AlertDialog,
  AlertDialogAction,
  AlertDialogCancel,
  AlertDialogContent,
  AlertDialogDescription,
  AlertDialogFooter,
  AlertDialogHeader,
  AlertDialogTitle,
} from '@/components/ui/alert-dialog';

export interface StandardizeConfirmDialogProps {
  open: boolean;
  onOpenChange: (open: boolean) => void;
  /** 待标准化条数（来自当前批次或选中行） */
  totalRows: number;
  /** 当前标准化任务的执行方式。新任务固定为在线批量执行。 */
  executionMode: 'online' | 'offline';
  /** 用户确认时触发；调用方负责关闭弹窗 + 后续 mutation */
  onConfirm: () => void;
}

export function StandardizeConfirmDialog({
  open,
  onOpenChange,
  totalRows,
  executionMode,
  onConfirm,
}: StandardizeConfirmDialogProps) {
  return (
    <AlertDialog open={open} onOpenChange={onOpenChange}>
      <AlertDialogContent>
        <AlertDialogHeader>
          <AlertDialogTitle>确认执行 AI 标准化</AlertDialogTitle>
          <AlertDialogDescription asChild>
            <div className="space-y-2 text-sm text-muted-foreground">
              <p>
                本次将对{' '}
                <span className="font-semibold text-foreground">{totalRows}</span> 条数据执行标准化。
              </p>
              <p>
                执行方式：
                {executionMode === 'online' ? (
                  <span className="ml-1 inline-flex items-center gap-1 font-semibold text-violet-600">
                    在线批量模式（LLM）
                  </span>
                ) : (
                  <span className="ml-1 inline-flex items-center gap-1 font-semibold text-indigo-600">
                    离线模式（Batch）
                  </span>
                )}
              </p>
            </div>
          </AlertDialogDescription>
        </AlertDialogHeader>
        <AlertDialogFooter>
          <AlertDialogCancel>取消</AlertDialogCancel>
          <AlertDialogAction
            className="bg-gradient-to-r from-violet-500 to-indigo-500 hover:from-violet-600 hover:to-indigo-600 text-white"
            onClick={onConfirm}
          >
            确定
          </AlertDialogAction>
        </AlertDialogFooter>
      </AlertDialogContent>
    </AlertDialog>
  );
}
