KQ-928 · LOCATION/SHARE

Location Share

A live location in the thread. The pin glides across a procedural map on glide as each new position arrives, the walked path draws behind it, and an accuracy halo breathes on a slow reversing tween. A ring around the sharer's initials empties as the share runs out, driven from a secondsLeft prop rather than a clock read during render, and stopping dims the pin to a last-seen marker; a polite region speaks one sentence per place change, never per tick.

KQ-928 · LOCATION/SHARE
  1. Ines Aguiar

    Sharing live · near Basin Quay
    15:00
    Within 20 metres of Basin Quay

Live · Basin Quay · 15 min left

Install

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

$ pnpm dlx shadcn@latest add @kinetiq/location-share

Props

person
string
default
Who is sharing; the puck's initials are taken from it.
position
{ x: number; y: number }
default
The pin, normalised 0 to 1 inside the map box; every derived coordinate is rounded before it reaches an attribute.
trail
Array<{ x: number; y: number }>
default []
The path already walked, oldest first, drawn as a polyline behind the pin.
place
string
default
The nearest landmark in words; a change here is what the live region announces.
secondsLeft
number
default
Seconds of sharing left. The host counts it down; the card never reads a clock.
totalSeconds
number
default 900
The share's full length, which the countdown ring is drawn against.
status
"live" | "ended"
default "live"
Ended dims the pin, stops the halo and replaces the controls with a last-seen line.
lastSeenTime
string
default
A preformatted time shown once the share has ended.
accuracyMeters
number
default 20
Sizes the halo and is spoken in the map's accessible name.
seed
number
default 7
Picks the procedural map: streets, river and park all come from integers.
onStop
() => void
default
Fires from the Stop control.
onExtend
(seconds: number) => void
default
Fires from Add 15 minutes with 900.
label
string
default
Names the card for assistive technology.
className
string
default
Extra classes on the card.