Alert Dialog
optics/alert-dialogFreeComponent
A modal dialog that interrupts the user with important content and expects a response.
See it running
Open the demo on optics
optics.agusmayol.com.ar/components/alert-dialogInstall it
npx shadcn@latest add https://optics.agusmayol.com.ar/r/alert-dialog.jsonSource
1"use client";23import * as React from "react";4import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";56import { cn } from "@/lib/utils";7import { Button, buttonVariants } from "@/registry/optics/button";8import { X } from "lucide-react";910function AlertDialog({ ...props } = {}) {11 return <DialogPrimitive.Root data-slot="alert-dialog" {...props} />;12}1314function AlertDialogTrigger({ ...props } = {}) {15 return (16 <DialogPrimitive.Trigger data-slot="alert-dialog-trigger" {...props} />17 );18}1920function AlertDialogPortal({ ...props } = {}) {21 return <DialogPrimitive.Portal data-slot="alert-dialog-portal" {...props} />;22}2324function AlertDialogOverlay({ className = "", ...props }) {25 return (26 <DialogPrimitive.Backdrop27 data-slot="alert-dialog-overlay"28 render={29 <div30 className={cn(31 "fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0",32 className,33 )}34 />35 }36 {...props}37 />38 );39}4041function AlertDialogContent({ className = "", children = null, ...props }) {42 return (43 <AlertDialogPortal>44 <AlertDialogOverlay />45 <div className="fixed inset-0 z-50 flex items-center justify-center p-4">46 <DialogPrimitive.Popup47 data-slot="alert-dialog-content"48 render={49 <div50 className={cn(51 "bg-muted fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-3xl border p-2 shadow-lg duration-200 sm:max-w-lg transition-all data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:scale-95 data-starting-style:scale-95",52 className,53 )}54 >55 <div className="bg-background grid w-full gap-8 rounded-2xl p-6 px-6 shadow-lg duration-200 sm:max-w-lg">56 {children}57 </div>58 </div>59 }60 {...props}61 />62 </div>63 </AlertDialogPortal>64 );65}6667function AlertDialogHeader({ className = "", ...props }) {68 return (69 <div70 data-slot="alert-dialog-header"71 className={cn("flex flex-col gap-2 text-center sm:text-left", className)}72 {...props}73 />74 );75}7677function AlertDialogFooter({ className = "", ...props }) {78 return (79 <div80 data-slot="alert-dialog-footer"81 className={cn(82 "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",83 className,84 )}85 {...props}86 />87 );88}8990function AlertDialogTitle({ className = "", ...props }) {91 return (92 <DialogPrimitive.Title93// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from optics
All 79 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | optics | Components | Free | 5 deps | |
| Alertalert | optics | Components | Free | 4 deps | |
| Aspect Ratioaspect-ratio | optics | Components | Free | 2 deps | |
| Auto Heightauto-height | optics | Components | Free | 3 deps | |
| Avataravatar | optics | Components | Free | 3 deps | |
| Badgebadge | optics | Components | Free | 4 deps | |
| Breadcrumbbreadcrumb | optics | Components | Free | 4 deps | |
| Buttonbutton | optics | Components | Free | 4 deps |
