AI
Composer
A generic message box: a Composer that sends wherever it is put, into a Chat.Root or a Room.Root above it, or through its own onSubmit. It holds the send while a file uploads or a dictation listens, and says when the send is on its way, held or refused. With attachments and dictation on, the paperclip and the microphone are optional capabilities of the box: left out, they show when file-storage and transcription are configured, and the `attachments` and `dictation` props switch them off or require them.