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.
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.