/** Portal props promoted to flat props on every modal *Content. */ export declare const MODAL_PORTAL_KEYS: readonly ["container", "keepMounted"]; type ModalPortalKey = (typeof MODAL_PORTAL_KEYS)[number]; /** * Flat Portal props + typed escape hatches for the Backdrop/Viewport/Portal, * derived from a component's own Base UI types so each *Content stays in * lockstep with Base UI. Intersect with the Popup props to build a *Content * prop type: * * ```ts * type DialogContentProps = ModalContentProps< * React.ComponentProps, * React.ComponentProps, * React.ComponentProps, * React.ComponentProps * > & { closeButton?: boolean } * ``` */ export type ModalContentProps = Popup & Pick> & { /** Escape hatch: extra props forwarded to the Base UI Portal. */ portalProps?: Omit; /** Escape hatch: props forwarded to the Base UI Backdrop (e.g. `className`, `style`, `render`). */ backdropProps?: Omit; /** Escape hatch: props forwarded to the Base UI Viewport (e.g. `className`, `style`, `render`). */ viewportProps?: Omit; }; export interface SplitModalProps { portal: Record; popup: Record; } /** * Partition a modal *Content component's spread props into the Portal and Popup * targets. Flat portal props win over the same keys inside `portalProps`. * * Destructure `className`/`children`, the `backdropProps`/`viewportProps` escape * hatches, and any component-specific props (`backdrop`, `closeButton`, …) out of * the props object before calling this - everything left that isn't a known * Portal prop is treated as a Popup prop. */ export declare function splitModalProps(props: Record): SplitModalProps; export {}; //# sourceMappingURL=modal.d.ts.map