Voicemail inbox
A voicemail list with unread tracking: newest first, an unread dot until a row is opened, and the full voicemail-player inline on the open row. The list and playback come from useVoicemails; unread state is local since the API has no read flag.
Voicemail
Installation
npx shadcn@latest add @handset/voicemail-inboxInstalls voicemail-player as a dependency — the inbox renders it inline on the open row and wires onExpired to refreshVoicemail so expired audio URLs recover automatically.
Usage
import { VoicemailInbox } from "@/components/handset/voicemail-inbox";
<VoicemailInbox tenantId={tenant.id} pollMs={15000} />Accepts the same options as useVoicemails (tenantId, limit, pollMs). New voicemails arrive on the poll (or instantly under <HandsetProvider realtime>) and show an unread dot until opened.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| tenantId | string | — | Scope to one tenant's voicemails. |
| limit | number | 25 | Page size for the list. |
| pollMs | number | 15000 | Refresh interval. 0 fetches once. |
| className | string | — | Merged onto the root card. |