ÿÿComment Dialog Wireframe Variables - Velt
Skip to main content
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. All Shared — the same value applies to every dialog instance for the same annotation.

Collapsed replies preview

The collapsedRepliesPreview variable mirrors the collapsed-replies-preview host attribute (and the collapsedRepliesPreview React prop). When true, the collapsed teaser — first comment + “Show N replies…†divider + last comment — is surfaced even while the dialog is non-selected/preview. It widens the comment-dialog-more-reply shouldShow from isDialogSelected to (isDialogSelected or collapsedRepliesPreview). Default false.

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.
For the full per-subcomponent prop list, see Comment Dialog Primitives.

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 of componentConfigSignal 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, the shouldShow 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

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

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

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
The threads container injects per-iteration variables into each thread-card:

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>

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
The composer injects extras for its child tags:

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>
Supported type values: userMentions, autocomplete, file, attachments, audio, video, screen, format, submit.

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>

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>

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>

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>

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>
When featureState.visibilityOptions === true, this legacy primitive auto-suppresses — the new visibility-options dropdown owns the privacy indicator. The isPrivateComment value also now correctly reflects visibilityConfig.type === 'restricted' | 'organizationPrivate' in addition to the legacy iam.accessMode === 'private'.

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>

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>

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

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>

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>

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
Per-iteration context inside content items:

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
Per-iteration context inside content items:

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
Per-iteration context inside content items:

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>
When featureState.visibilityOptions === true, this legacy primitive auto-suppresses — the new visibility-options dropdown owns the privacy indicator. The isPrivateComment value also now correctly reflects visibilityConfig.type === 'restricted' | 'organizationPrivate' in addition to the legacy iam.accessMode === 'private'.

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 replies…†expander row between the first comment and the rest. The label is composed as Show + Count + Text.
  • Public element: <velt-comment-dialog-more-reply>
  • Wireframe tag: <velt-comment-dialog-more-reply-wireframe>
  • Children: *-count (<velt-comment-dialog-more-reply-count-wireframe>), *-text (<velt-comment-dialog-more-reply-text-wireframe>)
The count child renders the number of hidden replies (annotation.comments.length - 2, clamped to ≥ 0); the text child renders the pluralized noun (reply when exactly one reply is hidden, otherwise replies).

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>

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