)}
```
7. Update the onSend signature: when files are attached, the parent (ChatPanel) needs to know. Keep onSend as `(content: string) => void` but the parent will read completedFileIds from the hook. No signature change needed.
Update `ui/src/components/ChatInput.test.tsx`:
- Add test: "renders file attach button"
- Add test: "calls onFilesPicked when file input changes"
- Add test: "shows pending file chips"
cd /opt/nexus && grep -q "ChatFileDropZone" ui/src/components/ChatFileDropZone.tsx && grep -q "onFilesPicked" ui/src/components/ChatInput.tsx && grep -q "handlePaste" ui/src/components/ChatInput.tsx && grep -q "Paperclip" ui/src/components/ChatInput.tsx && echo "PASS"
- grep "ChatFileDropZone" ui/src/components/ChatFileDropZone.tsx returns a match
- grep "onDragOver" ui/src/components/ChatFileDropZone.tsx returns a match
- grep "onDrop" ui/src/components/ChatFileDropZone.tsx returns a match
- grep "onFilesPicked" ui/src/components/ChatInput.tsx returns a match
- grep "handlePaste" ui/src/components/ChatInput.tsx returns a match
- grep "clipboardData" ui/src/components/ChatInput.tsx returns a match
- grep "Paperclip" ui/src/components/ChatInput.tsx returns a match
- grep "pendingFiles" ui/src/components/ChatInput.tsx returns a match
- grep "type=\"file\"" ui/src/components/ChatInput.tsx returns a match
ChatInput supports file upload via drag-and-drop (ChatFileDropZone), clipboard paste (onPaste handler), and file picker button (Paperclip icon with hidden input). Pending files appear as chips above the textarea with progress indicators.
- ChatFileDropZone renders overlay on drag-over
- ChatInput shows Paperclip button that opens file picker
- Pasting an image triggers onFilesPicked
- Pending file chips show name, progress, and remove button
- chatApi.uploadFile sends FormData with progress callback
- useChatFileUpload manages upload lifecycle
All three file input methods work: drag-and-drop shows drop zone overlay and triggers upload, clipboard paste of images triggers upload, Paperclip button opens native file picker. Pending uploads show progress chips. FILE-05 UI is complete.