Video message
canonA 16:9 video in a chat bubble with duration on a scrim, a progress bar, a time row, Přepis link and optional caption.
acrm !4918 (DS) + !4935 (Komunikace) + !4956 (44 px tap target), prototype proto/chat-hlasove-zpravy@6ed969dc9 (owner approved 8 Oct 2026). Family split from discussion/voice-message on 11 Oct 2026 (owner R43 a). Not on dev with data (stories only). Canon 14 Oct 2026: dev check after !4957 + !4982 — 390 px 64 bars × 3.7 px, gap 0; time without tabular-nums (StableTime). Signed off by AD. Own stories + light/dark baseline: acrm !5079 (Default · In-out · States; fixed wrapping of „Přepis se nepodařil · Zkusit znovu“ under the 200 px circle).
Used in no file in the app (main)
A 16:9 video inside a chat bubble. React <VideoMessage> (packages/ui/src/components/VoiceMessage.tsx) renders .cht-msg.vmx.vv-msg with .vv-frame (apps/web/src/ds/voice-message.css) over a real <video playsInline preload="metadata">. Same props as Video note plus caption.
Visual contract: prototype proto/chat-hlasove-zpravy@6ed969dc9, approved 8 Oct 2026 (acrm !4918).
When to use
- A regular video sent in a chat (recording, clip), incoming or outgoing, with or without a caption.
When not to use
- A round video note — use Video note.
- Audio only — use Voice message.
- A video file the user should download or open elsewhere — use Attachment.
Anatomy
- Bubble
.cht-msg.vv-msg, width 360 px (capped by the thread like Voice message; 88 % on phone). - Frame
.vv-frame: one button, full width,aspect-ratio: 16 / 9,--radius-sm, videoobject-fit: cover,posteruntil play. - Play icon
.vn-icoin the centre, hidden while playing. - Duration
.vv-duron a scrimrgba(0,0,0,.55)with white text in the corner — the one fixed colour of the family (over video, theme-independent; AD 10 Oct 2026). - Progress
.vv-bar: 3 px--accentstrip along the bottom edge of the frame. - Row
.vv-row(height--control-h-sm):0:00 / 1:12in.vm-time, on the right the Přepis link or transcript state. - Transcript block
.vm-tr, then optional caption (.cht-msg-t), then message meta.
Best practices
- Pass
posterso the bubble does not show an empty frame. - Put the message text into
caption, not into a separate bubble.
- Change the aspect ratio per video — the frame is always 16:9, the video is cropped (
cover). - Add more fixed colours over the video; the scrim is the only exception.
Content
- Same labels as Voice message; the play name is "Přehrát video".
- Caption is plain message text (
.cht-msg-t).
Related
- Voice message — same transcript and states.
- Video note — round video without a bubble.
- Attachment — files to download.
- Chat thread — the bubble and the thread.