Port status

Porting a number takes days and generates one support ticket per day of silence. This stepper answers 'where's my number?' before anyone asks.

Left: a live port advancing through its lifecycle (~45s loop on this demo). Right: a carrier rejection surfaced as a fixable callout.

Installation

npx shadcn@latest add @handset/port-status

Usage

import { PortStatus } from "@/components/handset/port-status";

<PortStatus portInId={portIn.id} />

Polls every 30 seconds by default — ports move on carrier time. action_needed renders the carrier's status_detail inline (wrong account number, mismatched address) so the customer can fix and resubmit instead of emailing support. When a FOC date is confirmed, the switch-over date appears in the header.

Props

Props
PropTypeDefaultDescription
portInIdstring | nullThe port-in request to follow.
pollMsnumber30000Refresh interval. 0 fetches once.
classNamestringMerged onto the wrapper.