sc1m
uialert-dialogsource: ok · hit
Alert Dialog
Alert Dialog component built on Base UI, styled with sc1m tokens.
npx shadcn add "https://sc1m.vercel.app/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
https://sc1m.vercel.app/r/tokens.jsonhttps://sc1m.vercel.app/r/cn.json
Files1 · source cached 10/8/2026, 12:00:36 PM
src/components/ui/alert-dialog/alert-dialog.tsx
"use client";
import * as React from "react";
import { AlertDialog as BaseAlertDialog } from "@base-ui/react/alert-dialog";
import { cn } from "@/lib/cn";
export const AlertDialog = BaseAlertDialog.Root;
export const AlertDialogTrigger = BaseAlertDialog.Trigger;
// AlertDialog is always modal and never dismisses on backdrop/outside press
// (enforced by Base UI itself — see AlertDialogRootProps, which omits `modal`
// and `disablePointerDismissal` from DialogRoot's props).
export function AlertDialogContent({
className,
children,
...props
}: React.ComponentProps<typeof BaseAlertDialog.Popup>) {
return (
<BaseAlertDialog.Portal>
<BaseAlertDialog.Backdrop className="fixed inset-0 bg-black/40 transition-opacity duration-fast data-starting-style:opacity-0 data-ending-style:opacity-0" />
<BaseAlertDialog.Popup
className={cn(
"fixed top-1/2 left-1/2 w-96 -translate-x-1/2 -translate-y-1/2 rounded-xl border border-line bg-surface-raised p-6 text-fg shadow-overlay",
"transition-[opacity,transform] duration-fast ease-out-quad",
"data-starting-style:scale-95 data-starting-style:opacity-0",
"data-ending-style:scale-95 data-ending-style:opacity-0",
className,
)}
{...props}
>
{children}
</BaseAlertDialog.Popup>
</BaseAlertDialog.Portal>
);
}
export const AlertDialogTitle = BaseAlertDialog.Title;
export const AlertDialogDescription = BaseAlertDialog.Description;
export const AlertDialogClose = BaseAlertDialog.Close;