{β¦} tokens that read live Velt data inside a wireframe. Use them to display dynamic values, or as the condition for a conditional template or conditional class.
Velt exposes its own data, and you can inject your own. Every available name is in the catalog at the end of this page.
Display a variable
- React / Next.js
- Other Frameworks
{annotation.from.name}; scalars donβt. If a deep path comes back empty, check the variableβs type in the catalog.
Example: a custom user card
- React / Next.js
- Other Frameworks
The main data objects
A few variables are whole objects. The catalog tells you which are available where; these links give you every field each one carries:
Counts are plain numbers:
unreadCommentAnnotationCount and unreadCommentCount anywhere, plus filteredCommentAnnotationsCount in the comments sidebar.
Inject your own data
Push your appβs data into Velt withsetUiState(), then read it in any wireframe, condition, or class.
- React / Next.js
- Other Frameworks
uiState. prefix, exactly like a built-in variable:
- React / Next.js
- Other Frameworks
setUiState is app-global. To attach data to one comment, use Context instead.
Which name form to use
Components read variables in one of two ways:- Short aliases like
{annotation.from.name}: Comment Dialog, Comments Sidebar, Comment Bubble, Inline Comments Section, Multi-Thread Comment Dialog, Text Comment, Notifications Panel, Notifications Tool, Activity Log. (These accept the explicit form below too.) - Explicit
{componentConfig.<name>}: Cursor, Presence, Huddle, Recording, Transcription, View Analytics, Area, Arrow, Tag, Reactions, Selection, Rewriter, Comments Tool, Sidebar Button, Autocomplete.
undefined, fall back to {componentConfig.<name>}.
Troubleshooting
A variable rendering blank orundefined is almost always one of these:
- Spelling. Names are case-sensitive; copy them from the catalog.
- Scope. Youβre in a slot that doesnβt receive it (
{comment}and{commentIndex}exist only inside thread-card descendants;{notification}only in the notifications panel). - Name form. Flat-config components need
{componentConfig.<name>}(see above). - Nesting. The root isnβt an object, so the deep path has nothing to resolve.
Variable catalog (per component)
Every{β¦} variable you can read inside a wireframe, with an example for each.
- Buckets:
app(per-user) Β·data(per-annotation) Β·ui(per-instance) Β·feature(SDK-config flags) Β·iteration(loop-scoped). - π marks the boolean state flags youβll reach for most in
velt-if/velt-class. - Iteration variables appear inside list slots:
{i}(aliascommentIndex, 0-based), the per-item object (option,filter,emoji,activity,dateGroup,chip,view,file, β¦), and per-item booleans (isSelected,isActive,isExpanded,isAscending). - Function-typed variables (
onClickβ¦,initRecording,toggleSidebar,handleEmojiSelected, β¦) are call-handlers you bind to events, not values to display. - Examples work in both React and Other Frameworks; only the spelling differs (
veltIfprop vsvelt-ifattribute,<VeltData/>vs<velt-data>). - Need a deep field that isnβt listed?
console.logthe object from a hook (e.g.useCommentAnnotations()) to see its exact shape.
Comment Dialog
Comment Bubble
Access model: structured; some need fullglobalConfigSignal.* / parentLocalUIState.*.
Comment Pin
Text Comment
Access model: flat-config:{componentConfig.<x>}.
Inline Comments Section
Access model: structured.Multi-Thread Comment Dialog
Access model: structured, per-instance.Autocomplete (@mentions)
Access model: flat-config.Comments Sidebar
Access model: flat-config:{componentConfig.<x>}.
Notifications Panel & Tool
Access model: structured; short names.Reactions
Access model: flat-config.Presence
Access model: flat-config.Cursor
Access model: flat-config.Huddle
Access model: flat-config.Recorder
Access model: flat-config: use fullcomponentConfigSignal. for collisions.
Transcription
Access model: flat-config.Activity Log
Access model: structured.View Analytics
Access model: flat-config.Comments Tool
Access model: structured;componentConfig.data.* / .uiState.*.
Sidebar Button
Access model: structured.Area Β· Arrow Β· Selection Β· Rewriter
Access model: flat-config.Tags
No wireframe variables / slots. Customize via the[template] input on velt-tag-pin / velt-tag-dialog, CSS, or the headless useTagAnnotations / useTagUtils hooks. See Annotations, tags, arrows, and areas.

