/**
 * @file AlertDialog.tsx
 * @input Uses React, Dialog, Layout, Heading, Text, Button
 * @output Exports AlertDialog component, AlertDialogProps type
 * @position Core implementation; consumed by index.ts, tested by AlertDialog.test.tsx
 *
 * SYNC: When modified, update these files to stay in sync:
 * - /packages/core/src/AlertDialog/AlertDialog.doc.mjs (props table, features, examples)
 * - /packages/core/src/AlertDialog/AlertDialog.test.tsx (tests for new/changed behavior)
 * - /packages/core/src/AlertDialog/index.ts (exports if types change)
 * - /apps/storybook/stories/AlertDialog.stories.tsx (storybook stories)
 * - /packages/cli/assets/templates/blocks/components/AlertDialog/ (showcase blocks)
 */
import React from 'react';
import { type ButtonVariant } from '../Button';
import type { BaseProps } from '../BaseProps';
export interface AlertDialogProps extends BaseProps<HTMLDialogElement> {
    ref?: React.Ref<HTMLDialogElement>;
    /**
     * Whether the dialog is open.
     */
    isOpen: boolean;
    /**
     * Renders alert dialog content inline without modal behavior.
     * For documentation previews and showcases only. The inline path is not a
     * modal, so it renders `role="group"` rather than `role="alertdialog"`.
     * @default false
     */
    isInline?: boolean;
    /**
     * Callback fired when the dialog visibility changes.
     * Called with `false` when cancel is clicked or Escape is pressed.
     */
    onOpenChange: (isOpen: boolean) => unknown;
    /**
     * Dialog title. Linked to the dialog via `aria-labelledby`.
     */
    title: string;
    /**
     * Consequence description. Linked to the dialog via `aria-describedby`.
     */
    description: string;
    /**
     * Label for the cancel button. Rendered as a ghost Button.
     * Clicking cancel calls `onOpenChange(false)`.
     * @default 'Cancel'
     */
    cancelLabel?: string;
    /**
     * Label for the action button.
     */
    actionLabel: string;
    /**
     * Variant for the action button.
     * @default 'destructive'
     */
    actionVariant?: ButtonVariant;
    /**
     * Whether the action button shows a loading spinner.
     */
    isActionLoading?: boolean;
    /**
     * Callback fired when the action button is clicked.
     * The dialog does NOT auto-close — call `onOpenChange(false)` when done.
     */
    onAction: () => unknown;
    /**
     * The width of the dialog.
     * Numbers are treated as pixels, strings are used as-is.
     * @default 400
     */
    width?: number | string;
}
/**
 * A confirmation dialog for destructive or irreversible actions.
 *
 * Implements the WAI-ARIA APG Alert Dialog pattern:
 * https://www.w3.org/WAI/ARIA/apg/patterns/alertdialog/
 *
 * Uses `role="alertdialog"` and requires explicit user action to dismiss.
 * Cannot be dismissed by clicking outside. Escape key triggers cancel.
 * Initial focus goes to the cancel button (least destructive action), pinned
 * with `data-autofocus` so it survives any change to the footer's order.
 *
 * The `isInline` preview path is not modal, so it renders `role="group"`
 * instead — the alertdialog role would promise modality it does not have.
 *
 * @example
 * ```
 * <AlertDialog
 *   isOpen={isOpen}
 *   onOpenChange={setIsOpen}
 *   title="Delete item?"
 *   description="This action cannot be undone."
 *   actionLabel="Delete"
 *   onAction={async () => { await deleteItem(); setIsOpen(false); }}
 * />
 * ```
 */
export declare function AlertDialog({ ref, isOpen, isInline, onOpenChange, title, description, cancelLabel: cancelLabelFromProps, actionLabel, actionVariant, isActionLoading, onAction, width, xstyle, className, style, 'data-testid': testId, ...rest }: AlertDialogProps): React.JSX.Element;
export declare namespace AlertDialog {
    var displayName: string;
}
//# sourceMappingURL=AlertDialog.d.ts.map