Skip to main content
Real-time “who’s here” avatars (presence) and live remote cursors. Both are wireframed at the per-item level and use flat-config variables ({componentConfig.<x>}).

Components

The root <velt-cursor> just spawns one pointer per remote user and isn’t wireframable; only the per-user pointer is.

Config props

Presence

Live Cursors

CSS: stateful classes

(Override with !important, R9b.)

Wireframes: slot trees + tokens

Presence

Tooltip slots are status-gated: .UserActive renders only for online, .UserInactive only for away (neither for offline). Key tokens ({componentConfig.<x>}): filteredPresenceUsers (list hidden when length === 0), user (hidden if user.isAnonymous), maxUsers; per-item presenceUser (.name/.email/.onlineStatus/.color), index (renders when index < maxUsers); remaining-count renders when filteredPresenceUsers.length > maxUsers.

Live Cursors

Key tokens (per-user, flat): cursorUser (.name/.color/.photoUrl/.comment/.position), selfCursorPointer, showDefault/showAvatar/showAudio/showVideo (derived from stream + avatarMode), variant.

Headless hooks

Limitations

Presence

Anonymous local users never see presence; maxUsers both caps avatars and gates the overflow badge; a custom template needs explicit shadowDom="true" to use shadow DOM.

Live Cursors

  • There is no live-cursor pin/image prop. (pin-cursor-image is a VeltComments prop for the comment-placement cursor, not live cursors.) To change the live cursor glyph, use the <slot name="cursor"> or the .Arrow wireframe.
  • The root <velt-cursor> isn’t wireframable: only the per-user pointer is.
  • Your own cursor is hidden in normal use (selfCursorPointer shows only in huddle-on-cursor mode).
  • Requires an identified (non-anonymous) user.