/**
 * SweetAlert2 pre-configured with the project design tokens.
 * Styling is handled via globals.css (.swal2-* overrides).
 */
import Swal from "sweetalert2";

/** Confirmation dialog — replaces confirm(), returns true if OK was clicked */
export async function swalConfirm({
  title,
  text,
  confirmText = "Confirm",
  cancelText = "Cancel",
  danger = false,
}: {
  title: string;
  text?: string;
  confirmText?: string;
  cancelText?: string;
  danger?: boolean;
}): Promise<boolean> {
  const result = await Swal.fire({
    icon: danger ? "warning" : "question",
    title,
    text,
    confirmButtonText: confirmText,
    cancelButtonText: cancelText,
    showCancelButton: true,
    reverseButtons: true,
    buttonsStyling: false,
    customClass: {
      confirmButton: danger
        ? "swal-btn swal-btn-danger"
        : "swal-btn swal-btn-primary",
      cancelButton: "swal-btn swal-btn-secondary",
    },
  });
  return result.isConfirmed;
}

/** Simple alert — replaces alert() */
export async function swalAlert(
  title: string,
  text?: string,
  icon: "success" | "error" | "warning" | "info" = "info"
) {
  return Swal.fire({
    icon,
    title,
    text,
    confirmButtonText: "OK",
    showCancelButton: false,
    buttonsStyling: false,
    customClass: {
      confirmButton: "swal-btn swal-btn-primary",
    },
  });
}

/** Toast notification — auto-dismisses after 3s */
export const swalToast = Swal.mixin({
  toast: true,
  position: "bottom-end",
  showConfirmButton: false,
  timer: 3000,
  timerProgressBar: true,
  buttonsStyling: false,
});
