"use client"
import * as React from "react"
import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog"
import { AlertTriangleIcon, InfoIcon, XCircleIcon, CheckCircle2Icon } from "lucide-react"
import { cn } from "@/lib/utils"
import { Button } from "@/components/ui/button"
function AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {
return
}
function AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {
return
}
function AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {
return
}
function AlertDialogOverlay({
className,
...props
}: AlertDialogPrimitive.Backdrop.Props) {
return (
)
}
type AlertVariant = "info" | "warning" | "destructive" | "success"
const variantConfig: Record<
AlertVariant,
{ icon: React.ElementType; iconClass: string; ringClass: string }
> = {
info: {
icon: InfoIcon,
iconClass: "text-sky-600 bg-sky-50",
ringClass: "ring-sky-100",
},
warning: {
icon: AlertTriangleIcon,
iconClass: "text-amber-600 bg-amber-50",
ringClass: "ring-amber-100",
},
destructive: {
icon: XCircleIcon,
iconClass: "text-red-600 bg-red-50",
ringClass: "ring-red-100",
},
success: {
icon: CheckCircle2Icon,
iconClass: "text-emerald-600 bg-emerald-50",
ringClass: "ring-emerald-100",
},
}
interface AlertDialogContentProps extends AlertDialogPrimitive.Popup.Props {
variant?: AlertVariant
title: string
description?: string
confirmLabel?: string
cancelLabel?: string
onConfirm?: () => void
onCancel?: () => void
}
function AlertDialogContent({
className,
variant = "info",
title,
description,
confirmLabel = "Confirm",
cancelLabel = "Cancel",
onConfirm,
onCancel,
...props
}: AlertDialogContentProps) {
const { icon: Icon, iconClass, ringClass } = variantConfig[variant]
return (
{title}
{description && (
{description}
)}
}
>
{cancelLabel}
}
>
{confirmLabel}
)
}
export {
AlertDialog,
AlertDialogTrigger,
AlertDialogContent,
AlertDialogPortal,
AlertDialogOverlay,
}