import type { ComponentType, ReactNode } from 'react'; import type { Dictionary, Fn, SetStateFn } from '../@aileron/declare/index.js'; import type { BaseModal, ContentComponentProps, FooterOptions } from './base.js'; export type PromptFooterRender = Fn<[ props: { value: T | undefined; onChange: SetStateFn; onConfirm: Fn; onCancel: Fn; disabled: boolean; context: Context; } ], ReactNode>; export interface PromptInputProps { value?: T; defaultValue?: T; onChange: SetStateFn; onConfirm: Fn; onCancel: Fn; context: Context; } export type PromptContentProps = ContentComponentProps; export interface PromptModal extends BaseModal { type: 'prompt'; content?: ReactNode | ComponentType>; defaultValue?: T; Input: Fn<[props: PromptInputProps], ReactNode>; disabled?: Fn<[value: T | undefined], boolean>; returnOnCancel?: boolean; footer?: PromptFooterRender | FooterOptions | false; }