Files
upstream-mirror 1416db152c
All checks were successful
Release / Create Version PR or Publish Stable Release (push) Has been skipped
Release / Publish Prerelease to NPM (push) Has been skipped
Monitor Registries / Monitor registry health (push) Has been skipped
snapshot of https://github.com/shadcn-ui/ui.git (main, 2026-09-15; blobs > 131072B omitted)
2026-09-15 22:44:43 +05:00

206 lines
4.5 KiB
TypeScript

"use client"
import * as React from "react"
import { cn } from "cn"
import {
Dialog as AlertDialogPrimitive,
DialogTrigger as AlertDialogTriggerPrimitive,
Heading,
ModalOverlay as ModalOverlayPrimitive,
Modal as ModalPrimitive,
type DialogProps as AlertDialogPrimitiveProps,
type DialogTriggerProps as AlertDialogTriggerPrimitiveProps,
type ModalOverlayProps as ModalOverlayPrimitiveProps,
} from "react-aria-components"
import { Button } from "@/registry/bases/aria/ui/button"
function AlertDialogTrigger({ ...props }: AlertDialogTriggerPrimitiveProps) {
return (
<AlertDialogTriggerPrimitive data-slot="alert-dialog-trigger" {...props} />
)
}
function AlertDialogOverlay({
className,
children,
...props
}: Omit<ModalOverlayPrimitiveProps, "className" | "children"> & {
className?: string
children: React.ReactNode
}) {
return (
<ModalOverlayPrimitive
data-slot="alert-dialog-overlay"
className={cn(
"cn-alert-dialog-overlay-aria fixed inset-0 isolate z-50",
className
)}
{...props}
>
{children}
</ModalOverlayPrimitive>
)
}
function AlertDialog({
className,
size = "default",
children,
...props
}: Omit<ModalOverlayPrimitiveProps, "className" | "children"> &
Pick<React.ComponentProps<typeof ModalPrimitive>, "isDismissable"> & {
className?: string
size?: "default" | "sm"
children: React.ReactNode
}) {
return (
<AlertDialogOverlay {...props}>
<ModalPrimitive
data-slot="alert-dialog-content"
data-size={size}
className={cn(
"cn-alert-dialog-content-aria group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none",
className
)}
>
<AlertDialogPrimitive
data-slot="alert-dialog"
role="alertdialog"
className="[display:inherit] [gap:inherit] outline-none"
>
{children}
</AlertDialogPrimitive>
</ModalPrimitive>
</AlertDialogOverlay>
)
}
function AlertDialogContent({
className,
size = "default",
children,
...props
}: React.ComponentProps<typeof AlertDialog>) {
return (
<AlertDialog className={className} size={size} {...props}>
{children}
</AlertDialog>
)
}
function AlertDialogHeader({
className,
...props
}: React.ComponentProps<"div">) {
return (
<div
data-slot="alert-dialog-header"
className={cn("cn-alert-dialog-header", className)}
{...props}
/>
)
}
function AlertDialogFooter({
className,
...props
}: React.ComponentProps<"div">) {
return (
<div
data-slot="alert-dialog-footer"
className={cn(
"cn-alert-dialog-footer flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",
className
)}
{...props}
/>
)
}
function AlertDialogMedia({
className,
...props
}: React.ComponentProps<"div">) {
return (
<div
data-slot="alert-dialog-media"
className={cn("cn-alert-dialog-media", className)}
{...props}
/>
)
}
function AlertDialogTitle({
className,
...props
}: Omit<React.ComponentProps<typeof Heading>, "slot">) {
return (
<Heading
slot="title"
data-slot="alert-dialog-title"
className={cn("cn-alert-dialog-title cn-font-heading", className)}
{...props}
/>
)
}
function AlertDialogDescription({
className,
...props
}: Omit<React.ComponentProps<"div">, "slot">) {
return (
<div
data-slot="alert-dialog-description"
className={cn("cn-alert-dialog-description", className)}
{...props}
/>
)
}
function AlertDialogAction({
className,
...props
}: React.ComponentProps<typeof Button>) {
return (
<Button
slot="close"
data-slot="alert-dialog-action"
className={cn("cn-alert-dialog-action", className)}
{...props}
/>
)
}
function AlertDialogCancel({
className,
variant = "outline",
size = "default",
...props
}: React.ComponentProps<typeof Button>) {
return (
<Button
slot="close"
data-slot="alert-dialog-cancel"
className={cn("cn-alert-dialog-cancel", className)}
variant={variant}
size={size}
{...props}
/>
)
}
export {
AlertDialog,
AlertDialogAction,
AlertDialogCancel,
AlertDialogContent,
AlertDialogDescription,
AlertDialogFooter,
AlertDialogHeader,
AlertDialogMedia,
AlertDialogOverlay,
AlertDialogTitle,
AlertDialogTrigger,
}