import type { DialogHTMLAttributes, ReactNode, Ref } from "react"; type Width = 400 | 560 | 720; /** Where the panel sits. `inline-*` pin it full-height to that edge — that is * a drawer / side sheet, and D66 is the decision that it is a placement rather * than a sibling component. Logical, not `left`/`right`, so RTL flips without a * second code path. */ export type DialogPlacement = "center" | "inline-start" | "inline-end"; export interface DialogProps extends Omit, "title" | "onClose" | "open"> { /** Body content, between the title and footer slots. */ children?: ReactNode; /** Controlled open state; syncs to showModal()/close(). */ open: boolean; /** Called on every dismissal attempt with its source; the consumer flips `open`. */ onClose: (reason: "esc" | "backdrop" | "close-button") => void; /** Heading; renders an

wired to aria-labelledby. Without it, pass aria-label. */ title?: ReactNode; /** Action row (Buttons — one accent per group, danger for destructive). */ footer?: ReactNode; /** Panel width in px (400 | 560 | 720). For an `inline-*` placement this is * the drawer's width; the height is always the full viewport. @default 560 */ width?: Width; /** Where the panel sits. `inline-start` / `inline-end` pin it full-height to * that edge, making it a drawer (D66). @default "center" */ placement?: DialogPlacement; /** false = no close button, Esc and backdrop swallowed — footer is the only exit. @default true */ dismissible?: boolean; /** Forwarded ref to the underlying element. */ ref?: Ref; } /** Modal dialog on the native top layer: focus trap, aria-modal and * focus restore come from the platform; title/footer slots, Esc/backdrop/ * close-button dismissal via onClose(reason) (D50). * * `placement` moves the panel and nothing else (D66): an `inline-start` / * `inline-end` Dialog is a drawer, pinned full-height to that edge, with the * same modality, focus trap, focus restore and dismissal reasons as a centered * one. There is deliberately no separate Drawer component — a sibling would * have to duplicate or wrap all of that. */ export declare function Dialog({ open, onClose, title, footer, width, placement, dismissible, className, children, ref, ...rest }: DialogProps): import("react").JSX.Element; export {}; //# sourceMappingURL=Dialog.d.ts.map