afterglow
uialert-dialogsource: ok · refreshed
Alert Dialog
A pink confirmation dialog for destructive or irreversible actions.
npx shadcn add "https://afterglow.thebuilder.dk/r/alert-dialog.json"free
Interaction
modal
Tags auto-generated by rules on 9/24/2026 — empty means no evidence, not lack of support.
Dependencies
Bundle weight · lightui-primitives@base-ui/react
Registry dependencies
@afterglow/button
Files1 · source cached 10/8/2026, 2:51:46 AM
registry/terminal/ui/alert-dialog.tsx
"use client";
import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
import type * as React from "react";
import { cn } from "@/lib/utils";
import { buttonVariants } from "@/registry/terminal/ui/button";
function AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {
return <AlertDialogPrimitive.Root data-slot="alert-dialog" {...props} />;
}
function AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {
return (
<AlertDialogPrimitive.Trigger data-slot="alert-dialog-trigger" {...props} />
);
}
function AlertDialogContent({
className,
...props
}: AlertDialogPrimitive.Popup.Props) {
return (
<AlertDialogPrimitive.Portal>
<AlertDialogPrimitive.Backdrop
className="fixed inset-0 z-50 bg-scrim backdrop-blur-[5px] backdrop-saturate-[0.65] data-closed:animate-fade-out data-open:animate-fade-in"
data-slot="alert-dialog-overlay"
/>
<AlertDialogPrimitive.Popup
className={cn(
"-translate-x-1/2 -translate-y-1/2 fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] gap-4 rounded-none border border-signal/70 bg-popover p-6 text-popover-foreground shadow-panel-signal outline-none data-closed:animate-close data-open:animate-open sm:max-w-lg",
className
)}
data-slot="alert-dialog-content"
{...props}
/>
</AlertDialogPrimitive.Portal>
);
}
function AlertDialogHeader({
className,
...props
}: React.ComponentProps<"div">) {
return (
<div
className={cn("flex flex-col gap-2 text-left", className)}
data-slot="alert-dialog-header"
{...props}
/>
);
}
function AlertDialogFooter({
className,
...props
}: React.ComponentProps<"div">) {
return (
<div
className={cn(
"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
className
)}
data-slot="alert-dialog-footer"
{...props}
/>
);
}
function AlertDialogTitle({
className,
...props
}: AlertDialogPrimitive.Title.Props) {
return (
<AlertDialogPrimitive.Title
className={cn(
"font-medium font-mono text-lg text-signal leading-none",
className
)}
data-slot="alert-dialog-title"
{...props}
/>
);
}
function AlertDialogDescription({
className,
...props
}: AlertDialogPrimitive.Description.Props) {
return (
<AlertDialogPrimitive.Description
className={cn("text-muted-foreground text-sm", className)}
data-slot="alert-dialog-description"
{...props}
/>
);
}
function AlertDialogAction({
className,
...props
}: AlertDialogPrimitive.Close.Props) {
return (
<AlertDialogPrimitive.Close
className={cn(buttonVariants({ variant: "signal" }), className)}
data-slot="alert-dialog-action"
{...props}
/>
);
}
function AlertDialogCancel({
className,
...props
}: AlertDialogPrimitive.Close.Props) {
return (
<AlertDialogPrimitive.Close
className={cn(buttonVariants({ variant: "ghost" }), className)}
data-slot="alert-dialog-cancel"
{...props}
/>
);
}
export {
AlertDialog,
AlertDialogAction,
AlertDialogCancel,
AlertDialogContent,
AlertDialogDescription,
AlertDialogFooter,
AlertDialogHeader,
AlertDialogTitle,
AlertDialogTrigger,
};