{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "b-alert-dialog",
  "type": "registry:ui",
  "registryDependencies": [],
  "dependencies": ["@base-ui/react", "@radix-ui/react-slot", "motion"],
  "devDependencies": [],
  "files": [
    {
      "path": "b-alert-dialog.tsx",
      "content": "\"use client\";\n\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n  MotionConfig,\n  motion,\n  type Transition,\n  useReducedMotion,\n  type Variants,\n} from \"motion/react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst controlCornerClassName =\n  \"rounded-lg supports-[corner-shape:squircle]:corner-squircle supports-[corner-shape:squircle]:rounded-[11px]\";\n\nconst surfaceCornerClassName =\n  \"rounded-lg supports-[corner-shape:squircle]:corner-squircle supports-[corner-shape:squircle]:rounded-[12px]\";\n\nconst alertDialogThemeClassName =\n  \"[--adlg-surface:#ffffff] [--adlg-foreground:#111111] [--adlg-border:#e3e7ec] [--adlg-ring:rgba(17,17,17,0.16)] [--adlg-muted-foreground:#6d7480] [--adlg-muted:#f5f7fa] [--adlg-action-surface:#111111] [--adlg-action-foreground:#ffffff] [--adlg-destructive:#dc2626] [--adlg-destructive-foreground:#ffffff] [--color-accent:var(--adlg-muted)] [--color-accent-foreground:var(--adlg-foreground)] dark:[--adlg-surface:#0a0a0a] dark:[--adlg-foreground:#f6f3ec] dark:[--adlg-border:#2b2a25] dark:[--adlg-ring:rgba(246,243,236,0.18)] dark:[--adlg-muted-foreground:#9a958a] dark:[--adlg-muted:#1a1a18] dark:[--adlg-action-surface:#f6f3ec] dark:[--adlg-action-foreground:#111111] dark:[--adlg-destructive:#f87171] dark:[--adlg-destructive-foreground:#111111]\";\n\nconst alertDialogContentClassName = cn(\n  surfaceCornerClassName,\n  \"relative flex w-[min(100%,34rem)] max-w-xl transform-gpu flex-col gap-5 border border-[color:color-mix(in_oklch,var(--adlg-border),transparent_25%)] bg-[color:color-mix(in_oklch,var(--adlg-surface),transparent_4%)] p-6 text-[color:var(--adlg-foreground)] shadow-[0_32px_120px_rgba(15,23,42,0.18)] outline-none supports-[backdrop-filter]:bg-[color:color-mix(in_oklch,var(--adlg-surface),transparent_8%)] sm:p-7\"\n);\n\ntype AlertDialogContextValue = {\n  actionsRef: React.RefObject<AlertDialogPrimitive.Root.Actions | null>;\n  open: boolean;\n};\n\nconst AlertDialogContext = React.createContext<AlertDialogContextValue | null>(\n  null\n);\n\nconst FLUID_EASE: [number, number, number, number] = [0.22, 1, 0.36, 1];\nconst FLUID_EXIT_EASE: [number, number, number, number] = [0.4, 0, 0.2, 1];\n\nconst overlayEnterTransition: Transition = {\n  opacity: { duration: 0.44, ease: FLUID_EASE },\n  backdropFilter: { duration: 0.52, ease: FLUID_EASE },\n};\n\nconst overlayExitTransition: Transition = {\n  opacity: { duration: 0.32, ease: FLUID_EXIT_EASE },\n  backdropFilter: { duration: 0.28, ease: FLUID_EXIT_EASE },\n};\n\nconst overlayVariants: Variants = {\n  hidden: {\n    opacity: 0,\n    backdropFilter: \"blur(0px)\",\n    transition: overlayExitTransition,\n  },\n  visible: {\n    opacity: 1,\n    backdropFilter: \"blur(10px)\",\n    transition: overlayEnterTransition,\n  },\n};\n\nconst reducedOverlayVariants: Variants = {\n  hidden: { opacity: 0, transition: { duration: 0.1, ease: FLUID_EXIT_EASE } },\n  visible: { opacity: 1, transition: { duration: 0.12, ease: FLUID_EASE } },\n};\n\nconst alertDialogTriggerClassName = cn(\n  controlCornerClassName,\n  \"inline-flex min-h-11 items-center justify-center bg-[color:var(--adlg-action-surface)] px-4 py-2.5 font-medium text-[14px] text-[color:var(--adlg-action-foreground)] tracking-[-0.01em] transition-[transform,background-color] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)] hover:-translate-y-px hover:bg-[color:color-mix(in_oklch,var(--adlg-action-surface),transparent_10%)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:color-mix(in_oklch,var(--adlg-ring),transparent_50%)] focus-visible:ring-offset-2 focus-visible:ring-offset-[color:var(--adlg-surface)] active:translate-y-0 active:bg-[color:color-mix(in_oklch,var(--adlg-action-surface),transparent_20%)] disabled:pointer-events-none disabled:opacity-50\"\n);\n\nconst alertDialogTriggerSmClassName = cn(\n  controlCornerClassName,\n  \"inline-flex h-8 min-h-8 translate-y-px items-center bg-[color:var(--adlg-action-surface)] px-3 py-0 font-medium text-[13px] text-[color:var(--adlg-action-foreground)] tracking-[-0.01em] transition-[transform,background-color] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)] hover:-translate-y-px hover:bg-[color:color-mix(in_oklch,var(--adlg-action-surface),transparent_10%)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:color-mix(in_oklch,var(--adlg-ring),transparent_50%)] focus-visible:ring-offset-2 focus-visible:ring-offset-[color:var(--adlg-surface)] active:translate-y-0 active:bg-[color:color-mix(in_oklch,var(--adlg-action-surface),transparent_20%)] disabled:pointer-events-none disabled:opacity-50\"\n);\n\nconst alertDialogActionClassName = cn(\n  controlCornerClassName,\n  \"inline-flex min-h-11 items-center justify-center bg-[color:var(--adlg-destructive)] px-4 py-2.5 font-medium text-[14px] text-[color:var(--adlg-destructive-foreground)] tracking-[-0.01em] transition-[transform,filter] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)] hover:-translate-y-px hover:brightness-95 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:color-mix(in_oklch,var(--adlg-destructive),transparent_30%)] focus-visible:ring-offset-2 active:translate-y-0 active:brightness-90 disabled:pointer-events-none disabled:opacity-50\"\n);\n\nconst alertDialogDefaultActionClassName = cn(\n  controlCornerClassName,\n  \"inline-flex min-h-11 items-center justify-center bg-[color:var(--adlg-action-surface)] px-4 py-2.5 font-medium text-[14px] text-[color:var(--adlg-action-foreground)] tracking-[-0.01em] transition-[transform,background-color] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)] hover:-translate-y-px hover:bg-[color:color-mix(in_oklch,var(--adlg-action-surface),transparent_10%)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:color-mix(in_oklch,var(--adlg-ring),transparent_50%)] focus-visible:ring-offset-2 active:translate-y-0 active:bg-[color:color-mix(in_oklch,var(--adlg-action-surface),transparent_20%)] disabled:pointer-events-none disabled:opacity-50\"\n);\n\nconst alertDialogCancelClassName = cn(\n  controlCornerClassName,\n  \"inline-flex min-h-11 items-center justify-center bg-[color:color-mix(in_oklch,var(--adlg-muted),transparent_45%)] px-4 py-2.5 font-medium text-[14px] text-[color:var(--adlg-muted-foreground)] tracking-[-0.01em] transition-colors duration-150 hover:bg-accent/60 hover:text-[color:var(--adlg-foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:color-mix(in_oklch,var(--adlg-ring),transparent_50%)] focus-visible:ring-offset-2 focus-visible:ring-offset-[color:var(--adlg-surface)] disabled:pointer-events-none disabled:opacity-50\"\n);\n\ntype PopupRenderProps = React.HTMLAttributes<HTMLDivElement> & {\n  children?: React.ReactNode;\n  className?: string;\n  ref?: React.Ref<HTMLDivElement>;\n  style?: React.CSSProperties;\n};\n\ntype BackdropRenderProps = React.HTMLAttributes<HTMLDivElement> & {\n  className?: string;\n  ref?: React.Ref<HTMLDivElement>;\n  style?: React.CSSProperties;\n};\n\nfunction setRef<T>(ref: React.Ref<T> | undefined, value: T | null) {\n  if (typeof ref === \"function\") {\n    ref(value);\n    return;\n  }\n\n  if (ref) {\n    (ref as React.MutableRefObject<T | null>).current = value;\n  }\n}\n\nfunction resolvePopupProps(popupProps: PopupRenderProps) {\n  const {\n    children: popupChildren,\n    className: popupClassName,\n    onAnimationEnd: _onAnimationEnd,\n    onAnimationIteration: _onAnimationIteration,\n    onAnimationStart: _onAnimationStart,\n    onDrag: _onDrag,\n    onDragEnd: _onDragEnd,\n    onDragEnter: _onDragEnter,\n    onDragExit: _onDragExit,\n    onDragLeave: _onDragLeave,\n    onDragOver: _onDragOver,\n    onDragStart: _onDragStart,\n    onDrop: _onDrop,\n    ref: popupRef,\n    style: popupStyle,\n    ...resolvedPopupProps\n  } = popupProps;\n\n  return {\n    popupChildren,\n    popupClassName,\n    popupRef,\n    popupStyle,\n    resolvedPopupProps,\n  };\n}\n\nfunction resolveBackdropProps(backdropProps: BackdropRenderProps) {\n  const {\n    className: backdropClassName,\n    onAnimationEnd: _onAnimationEnd,\n    onAnimationIteration: _onAnimationIteration,\n    onAnimationStart: _onAnimationStart,\n    onDrag: _onDrag,\n    onDragEnd: _onDragEnd,\n    onDragStart: _onDragStart,\n    ref: backdropRef,\n    style: backdropStyle,\n    ...resolvedBackdropProps\n  } = backdropProps;\n\n  return {\n    backdropClassName,\n    backdropRef,\n    backdropStyle,\n    resolvedBackdropProps,\n  };\n}\n\nconst contentVariants: Variants = {\n  hidden: {\n    opacity: 0,\n    scaleX: 0.94,\n    scaleY: 0.82,\n    y: 24,\n    filter: \"blur(14px)\",\n  },\n  visible: {\n    opacity: 1,\n    scaleX: 1,\n    scaleY: 1,\n    y: 0,\n    filter: \"blur(0px)\",\n    transition: {\n      opacity: { duration: 0.46, ease: FLUID_EASE },\n      scaleX: { duration: 0.54, ease: FLUID_EASE },\n      scaleY: { duration: 0.58, ease: FLUID_EASE },\n      y: { duration: 0.52, ease: FLUID_EASE },\n      filter: { duration: 0.56, ease: FLUID_EASE },\n      staggerChildren: 0.065,\n      delayChildren: 0.1,\n    },\n  },\n  exit: {\n    opacity: 0,\n    scaleX: 0.98,\n    scaleY: 0.92,\n    y: 12,\n    filter: \"blur(6px)\",\n    transition: {\n      opacity: { duration: 0.28, ease: FLUID_EXIT_EASE },\n      scaleX: { duration: 0.3, ease: FLUID_EXIT_EASE },\n      scaleY: { duration: 0.32, ease: FLUID_EXIT_EASE },\n      y: { duration: 0.3, ease: FLUID_EXIT_EASE },\n      filter: { duration: 0.26, ease: FLUID_EXIT_EASE },\n    },\n  },\n};\n\nconst reducedContentVariants: Variants = {\n  hidden: { opacity: 0 },\n  visible: {\n    opacity: 1,\n    transition: { duration: 0.12, ease: FLUID_EASE },\n  },\n  exit: {\n    opacity: 0,\n    transition: { duration: 0.1, ease: FLUID_EXIT_EASE },\n  },\n};\n\nconst childVariants: Variants = {\n  hidden: { opacity: 0, y: 14, scale: 0.96, filter: \"blur(4px)\" },\n  visible: {\n    opacity: 1,\n    y: 0,\n    scale: 1,\n    filter: \"blur(0px)\",\n    transition: {\n      opacity: { duration: 0.4, ease: FLUID_EASE },\n      y: { duration: 0.44, ease: FLUID_EASE },\n      scale: { duration: 0.42, ease: FLUID_EASE },\n      filter: { duration: 0.46, ease: FLUID_EASE },\n    },\n  },\n  exit: {\n    opacity: 0,\n    y: -6,\n    scale: 0.98,\n    filter: \"blur(2px)\",\n    transition: { duration: 0.22, ease: FLUID_EXIT_EASE },\n  },\n};\n\nconst reducedChildVariants: Variants = {\n  hidden: { opacity: 0 },\n  visible: { opacity: 1, transition: { duration: 0.1 } },\n  exit: { opacity: 0, transition: { duration: 0.08 } },\n};\n\nfunction mapStaggeredChildren(children: React.ReactNode, variants: Variants) {\n  return React.Children.map(children, (child, index) => {\n    if (child == null) {\n      return null;\n    }\n\n    const key =\n      React.isValidElement(child) && child.key != null ? child.key : index;\n\n    return (\n      <motion.div key={key} variants={variants}>\n        {child}\n      </motion.div>\n    );\n  });\n}\n\nfunction useAlertDialogContext() {\n  const context = React.useContext(AlertDialogContext);\n\n  if (!context) {\n    throw new Error(\"AlertDialog components must be used within AlertDialog.\");\n  }\n\n  return context;\n}\n\nexport interface AlertDialogProps\n  extends Omit<\n    React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Root>,\n    \"actionsRef\" | \"children\" | \"defaultOpen\" | \"onOpenChange\" | \"open\"\n  > {\n  children: React.ReactNode;\n  defaultOpen?: boolean;\n  onOpenChange?: (open: boolean) => void;\n  open?: boolean;\n}\n\nfunction AlertDialog({\n  children,\n  defaultOpen = false,\n  onOpenChange,\n  open: openProp,\n  ...props\n}: AlertDialogProps) {\n  const actionsRef = React.useRef<AlertDialogPrimitive.Root.Actions | null>(\n    null\n  );\n  const isControlled = openProp !== undefined;\n  const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n  const open = isControlled ? openProp : uncontrolledOpen;\n\n  const handleOpenChange = React.useCallback(\n    (\n      nextOpen: boolean,\n      eventDetails: AlertDialogPrimitive.Root.ChangeEventDetails\n    ) => {\n      if (!nextOpen) {\n        eventDetails.preventUnmountOnClose();\n      }\n\n      onOpenChange?.(nextOpen);\n\n      if (!(eventDetails.isCanceled || isControlled)) {\n        setUncontrolledOpen(nextOpen);\n      }\n    },\n    [isControlled, onOpenChange]\n  );\n\n  return (\n    <AlertDialogContext.Provider value={{ actionsRef, open }}>\n      <AlertDialogPrimitive.Root\n        {...props}\n        actionsRef={actionsRef}\n        defaultOpen={isControlled ? undefined : defaultOpen}\n        onOpenChange={handleOpenChange}\n        open={open}\n      >\n        {children}\n      </AlertDialogPrimitive.Root>\n    </AlertDialogContext.Provider>\n  );\n}\n\ntype AlertDialogButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n  asChild?: boolean;\n};\n\ntype AlertDialogTriggerRef = React.ComponentProps<\n  typeof AlertDialogPrimitive.Trigger\n>[\"ref\"];\n\nconst AlertDialogTrigger = React.forwardRef<\n  HTMLElement,\n  AlertDialogButtonProps\n>(({ asChild, children, className, type = \"button\", ...props }, ref) => {\n  return (\n    <AlertDialogPrimitive.Trigger\n      {...props}\n      className={\n        asChild\n          ? cn(alertDialogThemeClassName, className)\n          : cn(\n              alertDialogThemeClassName,\n              className ?? alertDialogTriggerClassName\n            )\n      }\n      ref={ref as AlertDialogTriggerRef}\n      render={asChild ? <Slot /> : undefined}\n      type={asChild ? undefined : type}\n    >\n      {children}\n    </AlertDialogPrimitive.Trigger>\n  );\n});\nAlertDialogTrigger.displayName = \"AlertDialogTrigger\";\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nexport interface AlertDialogContentProps\n  extends Omit<\n    React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Popup>,\n    \"children\" | \"className\" | \"render\"\n  > {\n  children: React.ReactNode;\n  className?: string;\n  open?: boolean;\n}\n\nconst AlertDialogContent = React.forwardRef<\n  HTMLDivElement,\n  AlertDialogContentProps\n>(({ children, className, open: openProp, ...props }, ref) => {\n  const context = useAlertDialogContext();\n  const open = openProp ?? context.open;\n  const reduceMotion = useReducedMotion() === true;\n  const contentVariantConfig = reduceMotion\n    ? reducedContentVariants\n    : contentVariants;\n  const childVariantConfig = reduceMotion\n    ? reducedChildVariants\n    : childVariants;\n  const overlayVariantConfig = reduceMotion\n    ? reducedOverlayVariants\n    : overlayVariants;\n\n  return (\n    <AlertDialogPortal>\n      <MotionConfig reducedMotion={reduceMotion ? \"always\" : \"never\"}>\n        <AlertDialogPrimitive.Backdrop\n          render={(backdropProps) => {\n            const {\n              backdropClassName,\n              backdropRef,\n              backdropStyle,\n              resolvedBackdropProps,\n            } = resolveBackdropProps(backdropProps);\n\n            return (\n              <motion.div\n                {...resolvedBackdropProps}\n                animate={open ? \"visible\" : \"hidden\"}\n                className={cn(\n                  backdropClassName,\n                  \"fixed inset-0 z-50 bg-black/52\"\n                )}\n                initial=\"hidden\"\n                ref={(node) => {\n                  setRef(backdropRef, node);\n                }}\n                style={backdropStyle}\n                variants={overlayVariantConfig}\n              />\n            );\n          }}\n        />\n        <AlertDialogPrimitive.Viewport className=\"pointer-events-none fixed inset-0 z-[51] grid place-items-center overflow-y-auto p-4\">\n          <AlertDialogPrimitive.Popup\n            {...props}\n            className={className}\n            render={(popupProps) => {\n              const {\n                popupChildren,\n                popupClassName,\n                popupRef,\n                popupStyle,\n                resolvedPopupProps,\n              } = resolvePopupProps(popupProps);\n\n              return (\n                <motion.div\n                  {...resolvedPopupProps}\n                  animate={open ? \"visible\" : \"exit\"}\n                  className={cn(\n                    alertDialogThemeClassName,\n                    alertDialogContentClassName,\n                    \"pointer-events-auto\",\n                    popupClassName\n                  )}\n                  initial=\"hidden\"\n                  onAnimationComplete={(definition) => {\n                    if (definition === \"exit\" && !open) {\n                      context.actionsRef.current?.unmount();\n                    }\n                  }}\n                  ref={(node) => {\n                    setRef(popupRef, node);\n                    setRef(ref, node);\n                  }}\n                  style={{\n                    ...popupStyle,\n                    transformOrigin: \"center center\",\n                  }}\n                  variants={contentVariantConfig}\n                >\n                  {popupChildren}\n                </motion.div>\n              );\n            }}\n          >\n            {mapStaggeredChildren(children, childVariantConfig)}\n          </AlertDialogPrimitive.Popup>\n        </AlertDialogPrimitive.Viewport>\n      </MotionConfig>\n    </AlertDialogPortal>\n  );\n});\nAlertDialogContent.displayName = \"AlertDialogContent\";\n\nfunction AlertDialogHeader({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\"flex flex-col gap-2 text-left\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction AlertDialogMedia({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\n        \"flex size-11 shrink-0 items-center justify-center rounded-full bg-[color:color-mix(in_oklch,var(--adlg-destructive),transparent_90%)] text-[color:var(--adlg-destructive)]\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AlertDialogFooter({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\n        \"flex flex-col gap-2 pt-1 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nconst AlertDialogTitle = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => {\n  return (\n    <AlertDialogPrimitive.Title\n      className={cn(\n        \"font-semibold text-[1.35rem] text-[color:var(--adlg-foreground)] leading-tight tracking-[-0.03em]\",\n        className\n      )}\n      ref={ref}\n      {...props}\n    />\n  );\n});\nAlertDialogTitle.displayName = \"AlertDialogTitle\";\n\nconst AlertDialogDescription = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => {\n  return (\n    <AlertDialogPrimitive.Description\n      className={cn(\n        \"max-w-[46ch] text-[15px] text-[color:var(--adlg-muted-foreground)] leading-6\",\n        className\n      )}\n      ref={ref}\n      {...props}\n    />\n  );\n});\nAlertDialogDescription.displayName = \"AlertDialogDescription\";\n\ntype AlertDialogCloseRef = React.ComponentProps<\n  typeof AlertDialogPrimitive.Close\n>[\"ref\"];\n\ntype AlertDialogActionVariant = \"default\" | \"destructive\";\n\ninterface AlertDialogActionProps extends AlertDialogButtonProps {\n  closeOnClick?: boolean;\n  variant?: AlertDialogActionVariant;\n}\n\nconst AlertDialogCancel = React.forwardRef<\n  HTMLElement,\n  AlertDialogButtonProps & { closeOnClick?: boolean }\n>(\n  (\n    {\n      asChild,\n      children,\n      className,\n      closeOnClick = true,\n      onClick,\n      type = \"button\",\n      ...props\n    },\n    ref\n  ) => {\n    return (\n      <AlertDialogPrimitive.Close\n        {...props}\n        className={cn(alertDialogCancelClassName, className)}\n        onClick={(event) => {\n          onClick?.(event);\n\n          if (!closeOnClick) {\n            event.preventDefault();\n          }\n        }}\n        ref={ref as AlertDialogCloseRef}\n        render={asChild ? <Slot /> : undefined}\n        type={asChild ? undefined : type}\n      >\n        {children}\n      </AlertDialogPrimitive.Close>\n    );\n  }\n);\nAlertDialogCancel.displayName = \"AlertDialogCancel\";\n\nconst AlertDialogAction = React.forwardRef<HTMLElement, AlertDialogActionProps>(\n  (\n    {\n      asChild,\n      children,\n      className,\n      closeOnClick = true,\n      onClick,\n      type = \"button\",\n      variant = \"destructive\",\n      ...props\n    },\n    ref\n  ) => {\n    const actionClassName =\n      variant === \"default\"\n        ? alertDialogDefaultActionClassName\n        : alertDialogActionClassName;\n\n    return (\n      <AlertDialogPrimitive.Close\n        {...props}\n        className={cn(actionClassName, className)}\n        onClick={(event) => {\n          onClick?.(event);\n\n          if (!closeOnClick) {\n            event.preventDefault();\n          }\n        }}\n        ref={ref as AlertDialogCloseRef}\n        render={asChild ? <Slot /> : undefined}\n        type={asChild ? undefined : type}\n      >\n        {children}\n      </AlertDialogPrimitive.Close>\n    );\n  }\n);\nAlertDialogAction.displayName = \"AlertDialogAction\";\n\nexport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n  alertDialogActionClassName,\n  alertDialogCancelClassName,\n  alertDialogDefaultActionClassName,\n  alertDialogThemeClassName,\n  alertDialogTriggerClassName,\n  alertDialogTriggerSmClassName,\n};\n",
      "type": "registry:ui"
    }
  ],
  "title": "Alert Dialog (Base UI)",
  "description": "Alert dialog with asChild triggers, action variants, optional media, controlled async flows, and reduced-motion aware transitions layered over Base UI primitives."
}
