# XWUILiveCursors

Real-time collaborative cursor overlay - renders remote viewers' pointer positions as smoothly-animated, named, colored cursors over a container (Figma/Notion-style presence). Owns no networking: `upsertCursor()`/`removeCursor()` are driven by whatever sync channel the host already has, and `onLocalMove()`/`onLocalLeave()` report the local viewer's own movement for the host to broadcast outward.

## Basic Usage

Two simulated remote cursors drifting over a canvas area, driven by `upsertCursor()`.

```example
file: examples/BasicUsage.ts
html: examples/BasicUsage.html
title: Basic Usage
description: Two simulated remote cursors drifting over a canvas area, driven by upsertCursor().
```

## Local Tracking

`onLocalMove` reports the local viewer's own position - forward it to your sync channel.

```example
file: examples/LocalTracking.ts
html: examples/LocalTracking.html
title: Local Tracking
description: onLocalMove reports the local viewer's own position - forward it to your sync channel.
```

## Idle Timeout

A cursor that stops updating is auto-removed after `idleTimeoutMs`, firing `onCursorIdle`.

```example
file: examples/IdleTimeout.ts
html: examples/IdleTimeout.html
title: Idle Timeout
description: A cursor that stops updating is auto-removed after idleTimeoutMs, firing onCursorIdle.
```

```api
```
