odd-box 0.1.10

a dead simple reverse proxy server and web server
import {
  Dialog,
  DialogContent,
  DialogDescription,
  DialogFooter,
  DialogHeader,
  DialogTitle,
} from "@/components/dialog/dialog";
import { Button } from "../../ui/button";
import { ReactNode } from "react";
import { Loader2 } from "lucide-react";
export function ConfirmationDialog({
  title,
  subtitle,
  onConfirm,
  onClose,
  show,
  noBtnText,
  yesBtnText,
  isDangerAction,
  isSuccessLoading,
  inProgressText
}: {
  inProgressText?:string
  isDangerAction?: boolean;
  noBtnText?: string;
  yesBtnText?: string;
  title: ReactNode;
  subtitle: ReactNode;
  onConfirm: () => Promise<void>;
  onClose: () => void;
  show: boolean;
  isSuccessLoading?:boolean
}) {
  return (
    <Dialog open={show} onOpenChange={onClose}>
      <DialogContent className="sm:max-w-[425px] bg-[var(--modal-bg)] border border-[#242424]">
        <DialogHeader>
          <DialogTitle>{title}</DialogTitle>
          <DialogDescription>{subtitle}</DialogDescription>
        </DialogHeader>
        <DialogFooter className="gap-2">
          <Button onClick={onClose} variant="secondary" type="button">
            {noBtnText ?? "No, cancel"}
          </Button>
          <Button
            disabled={isSuccessLoading}
            onClick={onConfirm}
            variant={isDangerAction ? "destructive" : "default"}
          >
            {isSuccessLoading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
            {isSuccessLoading && inProgressText ? inProgressText : (yesBtnText ?? "Yes, confirm")}
          </Button>
        </DialogFooter>
      </DialogContent>
    </Dialog>
  );
}