The composer handles text, media, and attachments.
Features:
- Auto-expanding textarea
- Emoji picker
- File attachment
- Paste image support
- Send on Enter (Shift+Enter for newline)
Component structure:
MessageComposer
├── AttachmentPreview
├── TextArea
├── EmojiButton
├── AttachButton
└── SendButton
State:
{ text: '', attachments: [], isSending: false }
Accessibility: Label all buttons. Support keyboard submission.