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.
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.

