Phone system

Texting, call history, and voicemail behind three tabs. The one-import version of 'your product has a phone system now.'

Installation

npx shadcn@latest add @handset/phone-system

Pulls in the whole tree: messaging (→ inbox, thread, composer), call-log (→ call-transcript), and voicemail-player. One command installs nine components.

Usage

import { HandsetProvider } from "@handset/react";
import { PhoneSystem } from "@/components/handset/phone-system";

export default function CommunicationsPage() {
  return (
    <HandsetProvider>
      <div className="h-[700px]">
        <PhoneSystem />
      </div>
    </HandsetProvider>
  );
}

This is the demo block — the fastest path from zero to "look what our product does now." Real products usually keep it as-is for an ops/communications page and use the individual components (ContactTimeline, ClickToCallButton) where they belong in context. The tabs are ~40 lines of the copy in your repo; restructure freely.

Props

Props
PropTypeDefaultDescription
tenantIdstringScope to one tenant (usually handled server-side).
defaultTab"messages" | "calls" | "voicemail""messages"Which tab opens first.
classNamestringMerged onto the wrapper.