import type { OfflinePushInfo, SendMessagePayload } from 'tuikit-atomicx-react/chat'; type BuiltInAction = | 'EmojiPicker' | 'ImagePicker' | 'FilePicker' | 'VideoPicker' | 'AttachmentPicker' | 'AudioCallPicker' | 'VideoCallPicker'; export type CustomAction = { key: string; label?: string | undefined; component?: React.ComponentType | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; iconSize?: number | undefined; disabled?: boolean | undefined; }; export type MessageInputActions = Array; export type MessageInputAttachmentPickerMode = 'collapsed' | 'expanded'; export interface IMessageInputProps { autoFocus?: boolean; disabled?: boolean; /** * Prevents creating new mentions while preserving existing mentions in content. * @default false */ disableMention?: boolean; hideSendButton?: boolean; placeholder?: string; className?: string; maxLength?: number; style?: React.CSSProperties; attachmentPickerMode?: MessageInputAttachmentPickerMode; actions?: MessageInputActions; slots?: MessageInputSlots; TextEditor?: JSX.Element; EmojiPicker?: JSX.Element; AttachmentPicker?: JSX.Element; FilePicker?: JSX.Element; ImagePicker?: JSX.Element; VideoPicker?: JSX.Element; /** * Called before each message is sent. Receives the outgoing message payload * and should return the offlinePushInfo to attach, or undefined to skip. */ setOfflinePushInfo?: (payload: SendMessagePayload) => OfflinePushInfo | undefined; } export interface MessageInputSlots { headerToolbar?: () => React.ReactNode; footerToolbar?: () => React.ReactNode; leftInline?: () => React.ReactNode; rightInline?: () => React.ReactNode; inputPrefix?: () => React.ReactNode; inputSuffix?: () => React.ReactNode; }