| import * as React from "react"; |
| import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; |
|
|
| import { cn } from "@/lib/utils"; |
| import { buttonVariants } from "@/components/ui/button"; |
|
|
| function AlertDialog({ |
| ...props |
| }: React.ComponentProps<typeof AlertDialogPrimitive.Root>) { |
| return <AlertDialogPrimitive.Root data-slot="alert-dialog" {...props} />; |
| } |
|
|
| function AlertDialogTrigger({ |
| ...props |
| }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) { |
| return ( |
| <AlertDialogPrimitive.Trigger data-slot="alert-dialog-trigger" {...props} /> |
| ); |
| } |
|
|
| function AlertDialogPortal({ |
| ...props |
| }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) { |
| return ( |
| <AlertDialogPrimitive.Portal data-slot="alert-dialog-portal" {...props} /> |
| ); |
| } |
|
|
| function AlertDialogOverlay({ |
| className, |
| ...props |
| }: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) { |
| return ( |
| <AlertDialogPrimitive.Overlay |
| data-slot="alert-dialog-overlay" |
| className={cn( |
| "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", |
| className |
| )} |
| {...props} |
| /> |
| ); |
| } |
|
|
| function AlertDialogContent({ |
| className, |
| ...props |
| }: React.ComponentProps<typeof AlertDialogPrimitive.Content>) { |
| return ( |
| <AlertDialogPortal> |
| <AlertDialogOverlay /> |
| <AlertDialogPrimitive.Content |
| data-slot="alert-dialog-content" |
| className={cn( |
| "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", |
| className |
| )} |
| {...props} |
| /> |
| </AlertDialogPortal> |
| ); |
| } |
|
|
| function AlertDialogHeader({ |
| className, |
| ...props |
| }: React.ComponentProps<"div">) { |
| return ( |
| <div |
| data-slot="alert-dialog-header" |
| className={cn("flex flex-col gap-2 text-center sm:text-left", className)} |
| {...props} |
| /> |
| ); |
| } |
|
|
| function AlertDialogFooter({ |
| className, |
| ...props |
| }: React.ComponentProps<"div">) { |
| return ( |
| <div |
| data-slot="alert-dialog-footer" |
| className={cn( |
| "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", |
| className |
| )} |
| {...props} |
| /> |
| ); |
| } |
|
|
| function AlertDialogTitle({ |
| className, |
| ...props |
| }: React.ComponentProps<typeof AlertDialogPrimitive.Title>) { |
| return ( |
| <AlertDialogPrimitive.Title |
| data-slot="alert-dialog-title" |
| className={cn("text-lg font-semibold", className)} |
| {...props} |
| /> |
| ); |
| } |
|
|
| function AlertDialogDescription({ |
| className, |
| ...props |
| }: React.ComponentProps<typeof AlertDialogPrimitive.Description>) { |
| return ( |
| <AlertDialogPrimitive.Description |
| data-slot="alert-dialog-description" |
| className={cn("text-muted-foreground text-sm", className)} |
| {...props} |
| /> |
| ); |
| } |
|
|
| function AlertDialogAction({ |
| className, |
| ...props |
| }: React.ComponentProps<typeof AlertDialogPrimitive.Action>) { |
| return ( |
| <AlertDialogPrimitive.Action |
| className={cn(buttonVariants(), className)} |
| {...props} |
| /> |
| ); |
| } |
|
|
| function AlertDialogCancel({ |
| className, |
| ...props |
| }: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) { |
| return ( |
| <AlertDialogPrimitive.Cancel |
| className={cn(buttonVariants({ variant: "outline" }), className)} |
| {...props} |
| /> |
| ); |
| } |
|
|
| export { |
| AlertDialog, |
| AlertDialogPortal, |
| AlertDialogOverlay, |
| AlertDialogTrigger, |
| AlertDialogContent, |
| AlertDialogHeader, |
| AlertDialogFooter, |
| AlertDialogTitle, |
| AlertDialogDescription, |
| AlertDialogAction, |
| AlertDialogCancel, |
| }; |
|
|