Use these with primitives (and they apply to the same components in any framework as kebab-case attributes). For trimming features on/off (reactions,status, …) seePrimitives.
Sidebar: VeltCommentsSidebar (V1) & VeltCommentsSidebarV2
The most layout-rich component. Key props (present on both unless noted):
Sidebar filters: configure, add custom filters, and restyle (V2)
The sidebar has three filter surfaces: the minimal filter (the quick all/unread/resolved bar), the main filter panel (the full dropdown of categories), and custom filters you define. All are customizable. 1. Choose which filters appear + add your own: thefilters prop (a CommentSidebarFilterConfig). It’s a map of filter keys → a FilterTypeConfig:
location, document, people, assigned, tagged, involved, priority, status, category, commentType, version. Toggle/relabel/reorder them, and add a custom filter by adding your own key with type: 'custom' + options:
miniFilters / minimalFilters configure the quick-bar the same way; groupConfig controls list grouping.) A custom filter matches annotations by the option id you set on them (via customListDataOnAnnotation / annotation metadata). Set filter values programmatically with client.getCommentElement().setCommentSidebarFilters({ status: ["OPEN"], severity: ["sev1"] }).
2. Choose the filter layout (props above): filterPanelLayout ('menu' panel vs 'bottomSheet'), filterOptionLayout ('checkbox' vs 'dropdown'), filterOperator ('and'/'or'), filterCount, defaultMinimalFilter.
3. Fully restyle the filter UI with wireframe slots (Wireframe components). The V2 sidebar exposes: FilterButton (+ AppliedIcon), FilterDropdown (Trigger, Content → List → Item / Category), and FilterContainer (Title, CloseButton, GroupBy, ResetButton, ApplyButton, SectionList → Section → Label / Field → Control(Value, ChipList→Chip, Search, Chevron) / OptionList → Option(Checkbox, Name, Count)). Fill these to build a fully custom filter dropdown / panel while Velt keeps the filtering logic. In wireframes you can read {appliedFiltersCount} and {filterState} to drive your own filter UI. (See Wireframe variables.)
Same trade as everywhere: config props for which filters + layout (cheapest); wireframe slots to restructure the filter dropdown/panel; the filtering behavior stays Velt’s.
Notifications: VeltNotificationsPanel
Comment Dialog: VeltCommentDialog
All<VeltComments>props (the full 129-prop table with types, defaults, and descriptions) are inProps. This page focuses on the layout/mode props for the sidebar, dialog, and notifications.
Comments host: VeltComments
Mostly feature toggles (see Primitives), plus layout/mode flags: floatingCommentDialog, inboxMode, inlineCommentMode, privateCommentMode, persistentCommentMode, multiThread, composerMode ('default'|'expanded'), unreadIndicatorMode ('minimal'|'verbose'), minimap / minimapPosition, and granular shadow-DOM / dark-mode flags (pinShadowDom, dialogShadowDom, dialogDarkMode, pinDarkMode, …).
Recorder: VeltRecorderControlPanel & VeltRecorderPlayer
Transcription: VeltTranscription & VeltSubtitles
Presence: VeltPresence
Cursor: VeltCursor
Custom data: your own statuses, priorities, categories, reactions
These props let you replace Velt’s default option sets with your own. They’re a core part of customization: the values flow into the UI (status/priority dropdowns, chips), into the wireframe variables (statusOptions, priorityOptions, customStatusesShown, …), and into the primitive dropdown items (so your custom dialog dropdown shows your statuses). Pass them on VeltComments:
customStatus:{ id, name, color, type: 'default' | 'ongoing' | 'terminal', lightColor?, svg?, iconUrl? }[]:typecontrols semantics (terminal= resolved-like).customPriority:{ id, name, color, lightColor? }[].customCategory:{ id, name, color }[].customReactions: a map of emoji →{ label, emoji }(aReactionMap).customListDataOnAnnotation(aCustomAnnotationDropdownData): the custom chip/dropdown on a thread (powers theCustomAnnotationDropdownslot). Shape:The optionidis what a custom sidebar filter matches against (see thefiltersexample above): set the option on annotations via this prop, filter by the sameid.customListDataOnComment(anAutocompleteData): custom list on a comment (autocomplete-style). Shape:
When you build a custom status/priority dropdown with primitives (Primitives), this is where thestatusesyou map over come from. When you read{statusOptions}/{priorityOptions}in a wireframe (Wireframe variables), these are the values.
Notes
- Prop before wireframe. If a prop gets you the layout (e.g.
filterPanelLayout="bottomSheet",panelOpenMode="sidebar"), use it: it’s far less work than a wireframe. - Version differences:
embedModeisbooleanon V1 sidebar butstringon V2: match the type to the component version you’re using. - Framework-agnostic: in vanilla/other frameworks these are kebab-case attributes on the
<velt-*>element (e.g.filter-panel-layout="bottomSheet").

