New to wireframes? Start with UI Customization Concepts and the Template Variables overview.
Overview
The Comment Dialog wireframe exposes the variables below. Use them inside any<velt-comment-dialog-...-wireframe> tag via three forms:
All variables are mapped — reference them by their short name. You do not need the
componentConfig. prefix unless explicitly noted (see Root-Level Properties).
App State
App-wide values resolved from the shared per-annotation signal.Data State
Per-annotation data: the live annotation, comment list, edit / draft state, attachments, and recordings.UI State
Per-instance UI flags driven by the dialog itself. Grouped by area for readability — the underlying shape is flat. Layout modes — which rendering mode the dialog is in.
Composer state — input, draft, and submission state.
Reactions, replies, and dropdowns.
Feature State
Capability flags toggled via SDK config. AllShared — the same value applies to every dialog instance for the same annotation.
Common Props
Every Comment Dialog primitive accepts a small shared set of attributes. The most useful ones inside wireframes:
Signal inputs (auto-wired in parent-child component composition):
[componentConfigSignal]— shared per-annotation config signal.[parentLocalUIState]— per-instance UI state signal.
Context-Specific Variables
These are only resolvable inside the nested wireframe tags noted in the Available in column. Each is injected by the iteration primitive that owns the tag.Aliases:
commentObj ↔ comment, annotation ↔ commentAnnotation, annotations ↔ commentAnnotations. Either name resolves; the friendly short form is preferred.Version 1 Backward-Compatibility Aliases
Inherited from v4 SDK config signals. They are mapped so wireframes written for v4 keep working — the Maps to column tells you the v5 equivalent.
The resolver also unwraps two legacy signal-name prefixes —
commentDialogOptionsDropdownConfigSignal.* and commentDialogStatusDropdownConfigSignal.* — so an old wireframe written as {commentDialogOptionsDropdownConfigSignal.allowAssignment} keeps working.
Root-Level Properties (Use Full Path)
These properties live at the root ofcomponentConfigSignal and are not entries in the variable map. To use them, write the full componentConfigSignal.<name> path.
One root-level helper is mapped:
Type Reference
Types referenced by the variables above are documented in Data Models:Subcomponents
Each subcomponent below has its own wireframe tag. The tables show extra variables beyond the common set, theshouldShow condition, and host CSS classes.
comment-dialog (root)
The root primitive — the <velt-comment-dialog> element customers place in their app.
- Public element:
<velt-comment-dialog> - Wireframe tag:
<velt-comment-dialog-wireframe> - Children:
*-header,*-body,*-composer,*-close-button
- React / Next.js
- Other Frameworks
comment-dialog-header
The header strip across the top of the dialog: status, priority, custom-chip, options dropdown, copy-link, resolve / unresolve buttons.
- Public element:
<velt-comment-dialog-header> - Wireframe tag:
<velt-comment-dialog-header-wireframe> - Children:
*-status-dropdown,*-priority-dropdown,*-custom-annotation-dropdown,*-options-dropdown,*-resolve-button,*-unresolve-button,*-copy-link
- React / Next.js
- Other Frameworks
comment-dialog-body
The middle section: threads list, reply avatars, toggle / hide-reply controls.
- Public element:
<velt-comment-dialog-body> - Wireframe tag:
<velt-comment-dialog-body-wireframe> - Children:
*-threads,*-reply-avatars,*-toggle-reply,*-hide-reply,*-more-reply
- React / Next.js
- Other Frameworks
comment-dialog-threads
The list container. Iterates annotation.comments and renders one thread-card per comment.
- Public element:
<velt-comment-dialog-threads> - Wireframe tag:
<velt-comment-dialog-threads-wireframe> - Children:
*-thread-card
- React / Next.js
- Other Frameworks
comment-dialog-close-button
Close button that dismisses the dialog.
- Public element:
<velt-comment-dialog-close-button> - Wireframe tag:
<velt-comment-dialog-close-button-wireframe>
- React / Next.js
- Other Frameworks
comment-dialog-composer
The composer assembly — owns the per-instance composer state machine and emits change events as the user types.
- Public element:
<velt-comment-dialog-composer> - Wireframe tag:
<velt-comment-dialog-composer-wireframe> - Children:
*-input,*-avatar,*-action-button,*-attachments,*-recordings,*-private-badge,*-format-toolbar,*-assign-user
- React / Next.js
- Other Frameworks
comment-dialog-composer-action-button
A polymorphic action button — the same primitive renders different controls depending on its type attribute.
- Public element:
<velt-comment-dialog-composer-action-button> - Wireframe tag:
<velt-comment-dialog-composer-action-button-wireframe>
type values: userMentions, autocomplete, file, attachments, audio, video, screen, format, submit.
- React / Next.js
- Other Frameworks
comment-dialog-composer-input
The contenteditable input area with autocomplete (@mention) support.
- Public element:
<velt-comment-dialog-composer-input> - Wireframe tag:
<velt-comment-dialog-composer-input-wireframe>
- React / Next.js
- Other Frameworks
comment-dialog-composer-avatar
The current user’s avatar shown next to the composer in inline-section mode.
- Public element:
<velt-comment-dialog-composer-avatar> - Wireframe tag:
<velt-comment-dialog-composer-avatar-wireframe>
- React / Next.js
- Other Frameworks
comment-dialog-composer-attachments
The display row that lists files staged for upload and any rejected files.
- Public element:
<velt-comment-dialog-composer-attachments> - Wireframe tag:
<velt-comment-dialog-composer-attachments-wireframe>
- React / Next.js
- Other Frameworks
comment-dialog-composer-recordings
The display row that lists active and pending recordings.
- Public element:
<velt-comment-dialog-composer-recordings> - Wireframe tag:
<velt-comment-dialog-composer-recordings-wireframe>
- React / Next.js
- Other Frameworks
comment-dialog-composer-private-badge
The “Only for your team” badge shown above the composer when private mode is active.
- Public element:
<velt-comment-dialog-composer-private-badge> - Wireframe tag:
<velt-comment-dialog-composer-private-badge-wireframe>
- React / Next.js
- Other Frameworks
comment-dialog-composer-format-toolbar
The bold / italic / underline / strikethrough toolbar.
- Public element:
<velt-comment-dialog-composer-format-toolbar> - Wireframe tag:
<velt-comment-dialog-composer-format-toolbar-wireframe>
- React / Next.js
- Other Frameworks
comment-dialog-composer-assign-user
The assign-to dropdown shown beneath the composer when the user opens the @-mention picker.
- Public element:
<velt-comment-dialog-composer-assign-user> - Wireframe tag:
<velt-comment-dialog-composer-assign-user-wireframe>
- React / Next.js
- Other Frameworks
comment-dialog-thread-card
A single comment inside the thread list. Renders avatar, name, time, message, options, reactions, recordings, and edit-composer.
- Public element:
<velt-comment-dialog-thread-card> - Wireframe tag:
<velt-comment-dialog-thread-card-wireframe> - Children:
*-avatar,*-name,*-time,*-message,*-edited,*-options,*-reactions,*-reaction-tool,*-recordings,*-seen-dropdown,*-attachments,*-edit-composer,*-assign-button,*-unread,*-draft,*-device-type
- React / Next.js
- Other Frameworks
comment-dialog-thread-card-avatar
The author’s avatar.
- Public element:
<velt-comment-dialog-thread-card-avatar> - Wireframe tag:
<velt-comment-dialog-thread-card-avatar-wireframe>
- React / Next.js
- Other Frameworks
comment-dialog-thread-card-name
The author’s display name.
- Public element:
<velt-comment-dialog-thread-card-name> - Wireframe tag:
<velt-comment-dialog-thread-card-name-wireframe>
- React / Next.js
- Other Frameworks
comment-dialog-thread-card-time
The comment’s lastUpdated timestamp formatted as relative time.
- Public element:
<velt-comment-dialog-thread-card-time> - Wireframe tag:
<velt-comment-dialog-thread-card-time-wireframe>
comment-dialog-thread-card-message
The comment body. Renders text, HTML, or voice player. Supports message truncation.
- Public element:
<velt-comment-dialog-thread-card-message> - Wireframe tag:
<velt-comment-dialog-thread-card-message-wireframe>
comment-dialog-thread-card-edited
Small “Edited” badge shown when a comment has been modified.
- Public element:
<velt-comment-dialog-thread-card-edited> - Wireframe tag:
<velt-comment-dialog-thread-card-edited-wireframe>
comment-dialog-thread-card-options
The ”…” options dropdown trigger on a comment.
- Public element:
<velt-comment-dialog-thread-card-options> - Wireframe tag:
<velt-comment-dialog-thread-card-options-wireframe>
comment-dialog-thread-card-reactions
Emoji reaction badges displayed below a comment.
- Public element:
<velt-comment-dialog-thread-card-reactions> - Wireframe tag:
<velt-comment-dialog-thread-card-reactions-wireframe>
comment-dialog-thread-card-recordings
Recordings attached to a comment (audio / video / screen).
- Public element:
<velt-comment-dialog-thread-card-recordings> - Wireframe tag:
<velt-comment-dialog-thread-card-recordings-wireframe>
comment-dialog-thread-card-seen-dropdown
“Seen by” dropdown showing which users have viewed the comment.
- Public element:
<velt-comment-dialog-thread-card-seen-dropdown> - Wireframe tag:
<velt-comment-dialog-thread-card-seen-dropdown-wireframe> - Children:
*-trigger,*-content
comment-dialog-thread-card-attachments
Attachments (images and other files) attached to a comment.
- Public element:
<velt-comment-dialog-thread-card-attachments> - Wireframe tag:
<velt-comment-dialog-thread-card-attachments-wireframe> - Children:
*-image,*-other
comment-dialog-status-dropdown
The annotation status dropdown in the header.
- Public element:
<velt-comment-dialog-status-dropdown> - Wireframe tag:
<velt-comment-dialog-status-dropdown-wireframe> - Children:
*-trigger,*-content
comment-dialog-priority-dropdown
The annotation priority dropdown in the header.
- Public element:
<velt-comment-dialog-priority-dropdown> - Wireframe tag:
<velt-comment-dialog-priority-dropdown-wireframe> - Children:
*-trigger,*-content
comment-dialog-custom-annotation-dropdown
The custom-chip dropdown in the header.
- Public element:
<velt-comment-dialog-custom-annotation-dropdown> - Wireframe tag:
<velt-comment-dialog-custom-annotation-dropdown-wireframe> - Children:
*-trigger,*-content
comment-dialog-options-dropdown
The per-comment ”…” options dropdown. Contains assign, delete, edit, make-private, mark-as-read, and notification items.
- Public element:
<velt-comment-dialog-options-dropdown> - Wireframe tag:
<velt-comment-dialog-options-dropdown-wireframe> - Children:
*-trigger,*-content
comment-dialog-resolve-button
The “Resolve” button. Sets the annotation status to a resolving status.
- Public element:
<velt-comment-dialog-resolve-button> - Wireframe tag:
<velt-comment-dialog-resolve-button-wireframe>
comment-dialog-unresolve-button
The “Reopen” / unresolve button.
- Public element:
<velt-comment-dialog-unresolve-button> - Wireframe tag:
<velt-comment-dialog-unresolve-button-wireframe>
comment-dialog-private-button
The “Make private” button.
- Public element:
<velt-comment-dialog-private-button> - Wireframe tag:
<velt-comment-dialog-private-button-wireframe>
comment-dialog-delete-button
The “Delete” button. Click triggers thread deletion.
- Public element:
<velt-comment-dialog-delete-button> - Wireframe tag:
<velt-comment-dialog-delete-button-wireframe>
comment-dialog-suggestion-action
Renders accept/reject buttons in suggestion mode.
- Public element:
<velt-comment-dialog-suggestion-action> - Wireframe tag:
<velt-comment-dialog-suggestion-action-wireframe> - Children:
*-accept,*-reject
comment-dialog-suggestion-action-accept
Accept-suggestion button.
- Public element:
<velt-comment-dialog-suggestion-action-accept> - Wireframe tag:
<velt-comment-dialog-suggestion-action-accept-wireframe>
comment-dialog-suggestion-action-reject
Reject-suggestion button.
- Public element:
<velt-comment-dialog-suggestion-action-reject> - Wireframe tag:
<velt-comment-dialog-suggestion-action-reject-wireframe>
comment-dialog-approve
Moderator-mode “Approve” button shown only when an admin is reviewing a not-yet-approved comment.
- Public element:
<velt-comment-dialog-approve> - Wireframe tag:
<velt-comment-dialog-approve-wireframe>
comment-dialog-assignee-banner
A horizontal banner shown above the dialog when the annotation has been assigned to a user.
- Public element:
<velt-comment-dialog-assignee-banner> - Wireframe tag:
<velt-comment-dialog-assignee-banner-wireframe> - Children:
*-resolve-button,*-unresolve-button,*-user-avatar,*-user-name
comment-dialog-private-banner
Banner shown above the dialog when the comment thread is in private mode.
- Public element:
<velt-comment-dialog-private-banner> - Wireframe tag:
<velt-comment-dialog-private-banner-wireframe>
comment-dialog-ghost-banner
Banner shown when the annotation has lost its DOM target.
- Public element:
<velt-comment-dialog-ghost-banner> - Wireframe tag:
<velt-comment-dialog-ghost-banner-wireframe>
comment-dialog-visibility-banner
The “Public / Private / Selected people” banner shown above the dialog when visibility-options are enabled.
- Public element:
<velt-comment-dialog-visibility-banner> - Wireframe tag:
<velt-comment-dialog-visibility-banner-wireframe> - Children:
*-dropdown,*-icon,*-text
comment-dialog-metadata
Renders an annotation.metadata.metadataTemplate strip above the comment list.
- Public element:
<velt-comment-dialog-metadata> - Wireframe tag:
<velt-comment-dialog-metadata-wireframe>
comment-dialog-comment-category
Category chip(s) shown when auto-categorization is enabled.
- Public element:
<velt-comment-dialog-comment-category> - Wireframe tag:
<velt-comment-dialog-comment-category-wireframe>
comment-dialog-comment-index
Numeric index label — the “1 of N” indicator (sidebar mode).
- Public element:
<velt-comment-dialog-comment-index> - Wireframe tag:
<velt-comment-dialog-comment-index-wireframe>
comment-dialog-comment-number
The annotation’s annotationNumber (the human-friendly “Comment #42” identifier).
- Public element:
<velt-comment-dialog-comment-number> - Wireframe tag:
<velt-comment-dialog-comment-number-wireframe>
comment-dialog-comment-suggestion-status
The “Accepted” / “Rejected” badge shown in suggestion mode.
- Public element:
<velt-comment-dialog-comment-suggestion-status> - Wireframe tag:
<velt-comment-dialog-comment-suggestion-status-wireframe>
comment-dialog-reply-avatars
The collapsed-state strip showing avatars of users who have replied.
- Public element:
<velt-comment-dialog-reply-avatars> - Wireframe tag:
<velt-comment-dialog-reply-avatars-wireframe> - Children:
*-list,*-remaining-count
comment-dialog-toggle-reply
The “View replies (N)” / “Hide replies” toggle below a collapsed thread.
- Public element:
<velt-comment-dialog-toggle-reply> - Wireframe tag:
<velt-comment-dialog-toggle-reply-wireframe> - Children:
*-count,*-icon,*-text
comment-dialog-hide-reply
The “Hide replies” link shown when the dialog is expanded.
- Public element:
<velt-comment-dialog-hide-reply> - Wireframe tag:
<velt-comment-dialog-hide-reply-wireframe>
comment-dialog-more-reply
The “Show N more replies…” expander row between the first comment and the rest.
- Public element:
<velt-comment-dialog-more-reply> - Wireframe tag:
<velt-comment-dialog-more-reply-wireframe>
comment-dialog-navigation-button
Sidebar-mode pin-navigation button that scrolls to the related annotation in the document.
- Public element:
<velt-comment-dialog-navigation-button> - Wireframe tag:
<velt-comment-dialog-navigation-button-wireframe>
comment-dialog-all-comment
The “View all comments” footer button that opens the comments sidebar.
- Public element:
<velt-comment-dialog-all-comment> - Wireframe tag:
<velt-comment-dialog-all-comment-wireframe>
comment-dialog-copy-link
The “Copy link” button — copies a deep-link to this annotation to the clipboard.
- Public element:
<velt-comment-dialog-copy-link> - Wireframe tag:
<velt-comment-dialog-copy-link-wireframe>
comment-dialog-sign-in
“Sign in” button shown to anonymous users.
- Public element:
<velt-comment-dialog-sign-in> - Wireframe tag:
<velt-comment-dialog-sign-in-wireframe>
comment-dialog-upgrade
“Upgrade” button shown when the workspace plan has expired.
- Public element:
<velt-comment-dialog-upgrade> - Wireframe tag:
<velt-comment-dialog-upgrade-wireframe>
Deeply-Nested Wireframe Tags
The primitives below decompose further into per-element wireframe tags. Each tag is registered separately and inherits the relevant parent’s context variables.Composer attachments tags
The composer-attachments primitive renders three sub-trees: selected (valid pending uploads — image vs. other file), invalid (rejected files), and other non-image files.Status / Priority / Custom-annotation dropdown tags
Options dropdown content variants
The options-dropdown-content rows have variant-specific tags so customers can override “delete comment” vs “delete thread”, “subscribe” vs “unsubscribe”, etc.Thread-card / seen-dropdown / reply-avatars tags
Visibility banner tags
The visibility banner’s dropdown decomposes into trigger (icon + label + selected-avatar list) + content (per-option rows).Related
- Comment Dialog Wireframes — composition reference for the wireframe tags themselves.
- Comment Dialog Primitives — granular components if you don’t need a full wireframe.
- Template Variables — overview of the
velt-data/velt-if/velt-classsystem.

