+ Single 📎 attach button → dropdown menu with Camera / Image / File +
+ +
+Card (roundedCornerShape(24dp), surface alpha 0.85)
+ └ Column
+ ├ [conditional] Slash command suggestions
+ │ └ LazyColumn (maxHeight 200dp)
+ ├ [conditional] Attachment preview chips
+ │ └ Row
+ │ └ AttachmentChip × N
+ │ └ Surface (roundedCorner 16dp)
+ │ ├ [if image] AsyncImage(20dp)
+ │ ├ [else] Icon(InsertDriveFile, 16dp)
+ │ └ name + Close IconButton(18dp)
+ └ Row (main input area)
+ ├ Box (positioned for dropdown)
+ │ ├ IconButton 📎 AttachFile (36dp)
+ │ └ DropdownMenu (expanded = showAttachmentMenu)
+ │ ├ DropdownMenuItem: 📷 Camera → onCameraTap()
+ │ ├ DropdownMenuItem: 🖼️ Image → onImageTap() → launch("image/*")
+ │ └ DropdownMenuItem: 📄 File → onFileTap() → launch("*/*")
+ ├ OutlinedTextField (weight=1f, maxLines=4, rounded 20dp)
+ ├ Spacer(4dp)
+ └ AnimatedContent (mic ↔ send ↔ listening)
+ ├ mic: FilledTonalButton(Mic icon, 40dp, circle)
+ ├ send: FilledTonalButton(Send icon, 40dp, circle, blue)
+ └ listening: FilledTonalButton(Stop icon, 40dp, circle, red)
+
+
+| Option | +Launcher | +MIME | +
|---|---|---|
| 📷 Camera | +TakePicture → temp FileProvider URI |
+ image/jpeg | +
| 🖼️ Image | +GetContent("image/*") |
+ image/* (gallery picker) | +
| 📄 File | +GetContent("*/*") |
+ */* (system file picker) | +