Attachment

A file in a message or composer: an 8px card on a hairline holding a 40px surface-2 media tile, a truncated 13px / 500 name over a 12px size caption, and a ghost icon-sm remove action. Uploading shows a Spinner in the tile; a failed upload turns the chip warning, with a warning Marker beneath. The Dropzone composite renders the files it accepts as these chips. Removing one plays a 200ms fade to 96% (removing), and the caller unmounts it in onRemoved. The tile's kind colours the glyph's stroke from the categorical chart-1…6 palette so file types tell apart at a glance; unknown kinds stay neutral.

<Attachment>
  <AttachmentMedia kind="pdf"><FileText /></AttachmentMedia>
  <AttachmentContent>
    <AttachmentTitle>Q3-report.pdf</AttachmentTitle>
    <AttachmentDescription>2.4 MB</AttachmentDescription>
  </AttachmentContent>
  <AttachmentActions>
    <AttachmentAction aria-label="Remove"><X /></AttachmentAction>
  </AttachmentActions>
</Attachment>

Remove

Click X: the chip fades and settles to 96% over the standard step, then leaves the stack. Restore brings them back.

Q3-report.pdf2.4 MB
transactions.csv812 KB
receipt.png156 KB

Files

kind colours the glyph only: pdf chart-6, image chart-2, spreadsheet chart-5, document chart-1, archive chart-3, code chart-4; no kind stays muted-foreground.

Q3-report.pdf2.4 MB
transactions.csv812 KB
receipt.png156 KB
proposal.docx96 KB
exports.zip18.2 MB
config.json3 KB
unknown.bin1.1 MB

Group

Q3-report.pdf2.4 MB
transactions.csv812 KB
receipt.png156 KB

States

idle — drop a fileWaiting
invoice-draft.pdfUploading…
invoice-draft.pdfProcessing…
invoice-draft.pdf248 KB
invoice-draft.pdfUpload failed

Axes

notes.txt4 KB
Preview of receipt.png
receipt.png156 KB