import { ReactNode } from 'react'; import { ModalProps } from '../modal'; import type { ConfirmModalProps } from './confirm-modal'; export type ModalSettings = Partial> & { modalId?: string; }; export type ConfirmLabels = Record<'confirm' | 'cancel', ReactNode>; export interface OpenConfirmModal extends ModalSettings, ConfirmModalProps { } export interface OpenStateModal extends ModalSettings, ConfirmModalProps { } export interface OpenContextModal = {}> extends ModalSettings { innerProps: CustomProps; } export interface ContextModalProps = {}> { context: ModalsContextProps; innerProps: T; id: string; } export type ModalState = { id: string; props: ModalSettings; type: 'content'; } | { id: string; props: OpenConfirmModal; type: 'confirm'; } | { id: string; props: OpenStateModal; type: 'info'; } | { id: string; props: OpenStateModal; type: 'warning'; } | { id: string; props: OpenStateModal; type: 'error'; } | { id: string; props: OpenContextModal; type: 'context'; ctx: string; }; export interface ModalsContextProps { modals: ModalState[]; openModal: (props: ModalSettings) => string; openConfirmModal: (props: OpenConfirmModal) => string; openContextModal: (modal: TKey, props: OpenContextModal[0]['innerProps']>) => string; closeModal: (id: string, canceled?: boolean) => void; closeContextModal: (id: TKey, canceled?: boolean) => void; closeAll: () => void; } export type FlowindModalsOverride = {}; export type FlowindModalsOverwritten = FlowindModalsOverride extends { modals: Record>>; } ? FlowindModalsOverride : { modals: Record>>; }; export type FlowindModals = FlowindModalsOverwritten['modals']; export type FlowindModal = keyof FlowindModals; export declare const ModalsContext: import("react").Context;