{
"component": "CometChatMessageComposer",
"package": "@cometchat/chat-uikit-react",
"import": "import { CometChatMessageComposer } from \"@cometchat/chat-uikit-react\";",
"cssImport": "import \"@cometchat/chat-uikit-react/css-variables.css\";",
"description": "Rich text input with attachments, emoji, voice recording, mentions, and formatting for sending messages.",
"cssRootClass": ".cometchat-message-composer",
"primaryOutput": {
"prop": "onSendButtonClick",
"type": "(message: CometChat.BaseMessage, mode?: 'send' | 'edit') => void"
},
"props": {
"entity": {
"user": { "type": "CometChat.User", "default": "undefined" },
"group": { "type": "CometChat.Group", "default": "undefined" },
"parentMessageId": { "type": "number", "default": "undefined" }
},
"layout": {
"layout": {
"type": "CometChatMessageComposerLayout",
"values": ["'compact'", "'multiline'"],
"default": "'compact'"
}
},
"textInput": {
"initialText": { "type": "string", "default": "undefined" },
"text": { "type": "string", "default": "undefined", "note": "Controlled mode — consumer owns state" },
"placeholder": { "type": "string", "default": "'Type a message...'" },
"enterKeyBehavior": {
"type": "'send' | 'newline' | 'none'",
"default": "'send'"
},
"maxInputHeight": { "type": "number", "default": "200" }
},
"richText": {
"enableRichTextEditor": { "type": "boolean", "default": false },
"hideRichTextFormattingOptions": { "type": "boolean", "default": false },
"showBubbleMenuOnSelection": { "type": "boolean", "default": false }
},
"editReply": {
"messageToEdit": { "type": "CometChat.TextMessage | null", "default": "null" },
"messageToReply": { "type": "CometChat.BaseMessage | null", "default": "null" }
},
"attachments": {
"attachmentOptions": { "type": "CometChatComposerAttachmentOption[]", "default": "undefined" },
"hideAttachmentOptions": { "type": "CometChatAttachmentHideOptions", "default": "undefined" },
"showAttachmentPreview": { "type": "boolean", "default": true },
"maxAttachments": { "type": "number", "default": 10 },
"allowedFileTypes": { "type": "string[]", "default": "undefined" },
"maxFileSize": { "type": "number", "default": "undefined" }
},
"hideButtons": {
"hideAttachmentButton": { "type": "boolean", "default": false },
"hideEmojiKeyboardButton": { "type": "boolean", "default": false },
"hideVoiceRecordingButton": { "type": "boolean", "default": false },
"hideStickersButton": { "type": "boolean", "default": false },
"hideAIButton": { "type": "boolean", "default": true },
"hideLiveReaction": { "type": "boolean", "default": false },
"hideSendButton": { "type": "boolean", "default": false },
"hideError": { "type": "boolean", "default": false }
},
"mentions": {
"textFormatters": { "type": "CometChatTextFormatter[]", "default": "undefined" },
"disableMentions": { "type": "boolean", "default": false },
"disableMentionAll": { "type": "boolean", "default": false },
"mentionAllLabel": { "type": "string", "default": "'all'" },
"mentionsUsersRequestBuilder": { "type": "CometChat.UsersRequestBuilder", "default": "undefined" },
"mentionsGroupMembersRequestBuilder": { "type": "CometChat.GroupMembersRequestBuilder", "default": "undefined" }
},
"sound": {
"disableTypingEvents": { "type": "boolean", "default": false },
"disableSoundForMessage": { "type": "boolean", "default": false },
"customSoundForMessage": { "type": "string", "default": "undefined" }
},
"misc": {
"disableAutoFocusOnMobile": { "type": "boolean", "default": true },
"liveReactionIcon": { "type": "string", "default": "undefined" },
"showScrollbar": { "type": "boolean", "default": false }
},
"customViews": {
"attachmentButtonIconView": "ReactNode",
"voiceRecordingButtonIconView": "ReactNode",
"emojiButtonIconView": "ReactNode",
"sendButtonView": "ReactNode",
"auxiliaryButtonView": "ReactNode",
"headerView": "ReactNode"
},
"callbacks": {
"onTextChange": "(text: string) => void",
"onSendButtonClick": "(message: CometChat.BaseMessage, mode?: 'send' | 'edit') => void",
"sendTextMessageOverride": "(text: string, richTextHtml?: string) => string",
"onError": "(error: unknown) => void",
"onClosePreview": "() => void",
"onAttachmentAdded": "(file: File) => void",
"onAttachmentRemoved": "(file: File) => void",
"onMentionSelected": "(user: CometChat.User | CometChat.GroupMember) => void"
}
},
"events": {
"emitted": [
{ "name": "ui:message/sent", "payload": "{ message, status }", "description": "Message sent (inprogress → success/error)" },
{ "name": "ui:compose/edit", "payload": "{ message, status }", "description": "Message edit (inprogress → success/error/cancelled)" },
{ "name": "ui:compose/reply", "payload": "{ message, status }", "description": "Reply context set/cleared" },
{ "name": "ui:compose/recording-started", "payload": "{ composerInstanceId }", "description": "Voice recording started (stops other instances)" }
],
"received": [
{ "name": "ui:compose/edit", "payload": "{ message, status: 'inprogress' }", "description": "Enters edit mode for the message" },
{ "name": "ui:compose/reply", "payload": "{ message, status: 'inprogress' }", "description": "Sets reply-to message" },
{ "name": "ui:compose/text", "payload": "{ text }", "description": "Sets the composer text programmatically" },
{ "name": "ui:compose/recording-started", "payload": "{ composerInstanceId }", "description": "Stops own recording if another instance started" }
]
},
"sdkListeners": [],
"types": {
"CometChatMessageComposerLayout": "'compact' | 'multiline'",
"CometChatAttachmentHideOptions": {
"image": "boolean | undefined",
"video": "boolean | undefined",
"audio": "boolean | undefined",
"file": "boolean | undefined",
"polls": "boolean | undefined",
"collaborativeDocument": "boolean | undefined",
"collaborativeWhiteboard": "boolean | undefined"
}
}
}