Attachment Group - none: 692 × 64 - three default rows, 12 apart, on 4 of padding
Using the Attachment
Why is Idle the only dashed one?
Because a file that is queued but not sent is not the same object as one that is on its way, and in a list of ten you want to see which is which without reading. Dashed means nothing has left the machine yet; the moment it does, the border goes solid and stays solid through the rest of the states.
What exactly changes in Error?
Three things, all base.destructive at different strengths: the border at 30%, the tile behind the icon at 10%, and the glyph and the message at full. The two translucent ones deliberately stay as raw values rather than token bindings, because Penpot resets alpha to 1 when a colour token is bound and the chip would turn solid red.
Why does xs have no status line?
There is no room for one. default and sm carry the name over a status; xs carries the name only, and leans on the border and the icon colour to say where the file is. That is also why every xs row is the same height whatever the state, while default grows by 8 when the error message wraps.
What is Attachment Group for?
Spacing. Three default horizontal chips in a row, 12 apart, on 4 of padding, published so a message body always spaces its attachments the same way. It has no properties of its own because the thing worth fixing is the rhythm, not another matrix on top of thirty.