Chat Attachments
Attachment previews for chat messages (image grid, document card, code snippet, audio pill) and an upload-in-progress chip for the composer.
Preview
Office lease, final.pdf12 pages · 2.4 MB
Plans and the lease for the new place. Anything odd in clause 9?
Clause 9 makes you pay for structural repairs, which is unusual. Here is the retention script you asked for:
retention.tsts14 lines
export function retentionByWeek(events: Event[]) { const cohorts = groupBy(events, (e) => startOfWeek(e.signupAt)); return Object.entries(cohorts).map(([week, rows]) => ({ week, users: new Set(rows.map((r) => r.userId)).size, retained: rows.filter((r) => r.weeksActive >= 4).length,0:42
In the composer
site-photos.zipUploading · 64%
budget-q4.xlsxReady
scan-0042.heicType not supported
Install
Pro source requires Pebble Pro. Try the full preview above.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| images / onOpen / max | AttachmentImage[] / (index) => void / number | — / — / 4 | AttachmentImageGrid: { id, alt, src?, content? }; extra images fold into +N. |
| name / type / pages / size | string / string / number / string | — / "PDF" | AttachmentDocument: page stack, type badge, page count and size; onOpen adds Open. |
| filename / language / code / preview | string / string / string / number | — / — / — / 6 | AttachmentCode: numbered snippet that expands past `preview` lines. |
| label / duration / src / seed | string / number / string / number | — / — / — / 7 | AttachmentAudio: play pill with a seeded waveform; simulated without src. |
| name / progress / status / onCancel | string / number / "uploading" | "processing" | "done" | "error" / () => void | — / 0 / "uploading" | AttachmentUpload: composer chip with a progress ring and cancel or remove. |
Pro component
Try the full preview above. Editable source and build guides require Pebble Pro.
