import React from 'react'; import type { AriaModalOverlayProps } from 'react-aria'; export type ModalSize = 'sm' | 'md' | 'lg' | 'fullscreen'; export type ModalAlign = 'left' | 'center'; export interface ModalProps extends AriaModalOverlayProps { /** Whether the modal is shown. */ isOpen?: boolean; /** Called with the next open state — `false` when the modal asks to close. */ onOpenChange?: (isOpen: boolean) => void; /** Matches the Figma `Size` variant. */ size?: ModalSize; /** Matches the Figma `Align` variant. */ align?: ModalAlign; /** Required: the dialog's accessible name, wired via `aria-labelledby`. */ title: React.ReactNode; /** Supporting copy under the title. */ description?: React.ReactNode; /** * The featured slot above the title — an icon or an illustration. Rendered * inside a circular container that hugs it. */ media?: React.ReactNode; /** Action row. Right-aligned when `align="left"`, centred when `"center"`. */ footer?: React.ReactNode; /** Show the close button. Defaults to `true`. */ showClose?: boolean; /** Accessible name for the close button. */ closeLabel?: string; /** Body content. */ children?: React.ReactNode; className?: string; } /** * Modal — Figma `Modal` (792:1537). * * `Size` x `Align`, with the sections as props rather than variants. The panel * hugs its content at every size except `fullscreen`, which fills the viewport * and pushes the actions to the bottom edge. * * RENDERS NOTHING WHEN CLOSED, and mounts into a portal when open. Both come * from React Aria's `Overlay`, and both matter: a modal left in the tree while * closed is still focusable by keyboard, and one rendered inline inherits any * `overflow: hidden` or stacking context from wherever it was written. * * The scrim is part of this component in code, unlike in Figma — see the note * in modal.css. */ export declare const Modal: React.ForwardRefExoticComponent>; //# sourceMappingURL=Modal.d.ts.map