import { ComponentProps } from 'react'; import * as React from 'react'; import { ButtonProps, FillButton } from '../Button'; import { ModalContainer } from './elements'; import { CloseButtonProps, ModalBaseProps } from './types'; interface DialogButtonProps { children: React.ReactNode; href?: string; onClick?: ButtonProps['onClick']; disabled?: boolean; } type SecondaryDialogButtonProps = DialogButtonProps & { actionType: 'back' | 'cancel'; }; type ModalNextProps = { primaryCta: DialogButtonProps & { actionType: 'next'; }; secondaryCta: SecondaryDialogButtonProps; }; type ModalConfirmProps = { primaryCta: DialogButtonProps & { actionType: 'confirm'; variant?: Extract['variant'], 'primary' | 'danger'>; }; secondaryCta?: SecondaryDialogButtonProps; }; type ModalButtonProps = ModalNextProps | ModalConfirmProps; interface ModalView extends Omit { children: React.ReactNode; } export type ModalViewProps = ModalView & ModalButtonProps; export interface SingleViewModalProps extends ModalBaseProps, CloseButtonProps { size?: ComponentProps['size']; /** * Whether to show scrollbar on content overflow */ scrollable?: boolean; views?: never; } export interface MultiViewModalProps extends Omit, CloseButtonProps { children?: never; image?: never; size?: ComponentProps['size']; /** * Whether to show scrollbar on content overflow */ scrollable?: boolean; /** * Optional array of multiple screens */ views: ModalViewProps[]; } export type ModalProps = SingleViewModalProps | MultiViewModalProps; export declare const Modal: React.FC; export {};