KQ-909 · CALL/END

Call End

Hanging up costs a moment. Holding End drives a motion value from 0 to 1 at a linear rate over holdMs, and that value is the ring's pathLength, so the ring fills at the honest rate of the hold; releasing early stops it, drains the ring on the exit ease and says the call is still up. The call ends from the animation's completion callback, the bar leaves on the exit ease, and the frame glides to the ended line at a ResizeObserver-measured height. Space or Enter held fills the ring, releasing or Escape cancels.

KQ-909 · CALL/END
Coldbrook dispatch

Hold to end the call

live 0:42 · 3 on the call · hold to end

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/call-end

Props

callName
string
default
The room, printed and spoken.
people
number
default 0
How many are on the call; printed and pluralised.
seconds
number
default
Elapsed seconds from the host; this component never reads a clock.
holdMs
number
default 900
How long End must be held.
ended / defaultEnded
boolean
default false
The call's state, controlled or initial.
onEndedChange
(ended: boolean) => void
default
Fires as the call ends and as it is rejoined.
onEnd
(seconds: number) => void
default
Fires once when a hold completes, with the elapsed seconds at that moment.
onCancel
() => void
default
Fires when a hold is released before it completes.
onHoldChange
(holding: boolean) => void
default
Fires as the hold starts and stops.
onRejoin
() => void
default
Fires from the Rejoin control on the ended line.