New to wireframes? Start with UI Customization Concepts and the Template Variables overview.
Overview
The Comment Bubble wireframe exposes the variables below. Use them inside any<velt-comment-bubble-...-wireframe> tag via three forms:
All variables are mapped — reference them by their short name. You do not need the
componentConfig. prefix.
Naming conflicts — use full path. A few names collide with mappings used elsewhere. Inside a Comment Bubble wireframe, prefer the explicit path on the right when reading these values:
App State
App-wide values resolved from the shared global signal.Data State
Per-bubble data: the annotation this bubble previews, the surrounding annotation list, and unread / unresolved counts.UI State
Per-bubble UI flags driven by the bubble itself.Feature State
Capability flags toggled at the workspace level. These are documented under the explicitglobalConfigSignal.featureState.<name> path because the bare names collide with other mappings. Available in both V1 and V2 Comment Bubble wireframes.
V2 root alias. V2 wireframes can use either
globalConfig or globalConfigSignal as the root for these deep paths — both resolve identically (v5.0.2-beta.25).Common Props
Every Comment Bubble primitive accepts:
Signal inputs (for parent-child component composition):
[componentConfigSignal]— shared config signal (annotation, selected-annotations map, unread count).[parentLocalUIState]— per-instance UI state signal (darkMode, variant, shadowDom, readOnly, showAvatar, commentCountType).
<velt-comment-bubble> element additionally accepts attributes that map onto config and local UI state values: dark-mode, variant, show-avatar, comment-count-type, etc.
Type Reference
Types referenced by the variables above are documented in Data Models:Subcomponents
Each subcomponent below has its own wireframe tag. The annotation root supports nested access — seeCommentAnnotation for the full shape.
comment-bubble (root)
The bubble pin that previews an annotation when the user is not focused on it.
- Public element:
<velt-comment-bubble> - Wireframe tag:
<velt-comment-bubble-wireframe> - Children:
*-avatar,*-comments-count,*-unread-icon
- React / Next.js
- Other Frameworks
comment-bubble-avatar
The avatar of the annotation’s author.
- Public element:
<velt-comment-bubble-avatar> - Wireframe tag:
<velt-comment-bubble-avatar-wireframe>
- React / Next.js
- Other Frameworks
comment-bubble-comments-count
The “N” badge showing how many comments are in the thread.
- Public element:
<velt-comment-bubble-comments-count> - Wireframe tag:
<velt-comment-bubble-comments-count-wireframe>
- React / Next.js
- Other Frameworks
comment-bubble-unread-icon
The unread-indicator dot on the bubble.
- Public element:
<velt-comment-bubble-unread-icon> - Wireframe tag:
<velt-comment-bubble-unread-icon-wireframe>
Deeply-Nested Wireframe Tags
A separate-but-related set of primitives renders the comment pin (the small marker on the page) — distinct from the bubble (which previews the comment). Each tag below has its own<velt-comment-pin-...-wireframe> registration and reads from the same annotation context.
Comment Pin tags
Related
- Comment Bubble Wireframes — composition reference for the wireframe tags themselves.
- Comment Bubble Primitives — granular components if you don’t need a full wireframe.
- Template Variables — overview of the
velt-data/velt-if/velt-classsystem.

