"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, }