Skip to main content
The same four-layer model (CSS · Wireframes · Primitives · Headless) and the same rules apply to every Velt feature, not just comments. Each feature now has a deep guide in features/: open the one you need.
Run the decision tree on the feature (same four questions), then jump to its page below. The rules (R0 no-hacks, one <VeltWireframe>, the interactivity rule, shadowDom/injectCustomCss) hold everywhere.

Deep per-feature guides

FeatureCustomization depthGuide
NotificationsFull wireframe + rich config props (panel mode, settings layout, tabs) + hooksNotifications
ReactionsWireframed (tool/panel/pin/tooltip/inline) + custom emoji sets + hooksReactions
Recorder & TranscriptionDeepest wireframe tree (control panel/player/tools/dialogs/subtitles/transcript) + hooksRecorder and transcription
@Mentions & AutocompleteCustom mention data (contacts/groups/custom) + option/chip wireframesMentions and autocomplete
Presence & Live CursorsPer-item wireframes (avatar list / cursor pointer) + hooks; flat-configPresence and cursors
Activity LogFull wireframe + data hooksActivity Log
Text / Inline / Multi-thread commentsComment variants: wireframed, reuse comment hooksComment surfaces
Tags / Arrows / AreasThin: CSS + props (+ Tag hooks); no wireframe slotsAnnotations, tags, arrows, and areas

Two things to remember for non-comment features

  1. Flat-config variables. Cursor, Presence, Huddle, Recording, Transcription, Reactions, Autocomplete, View, Area, Arrow, Tag read wireframe tokens as {componentConfig.<name>} (not the short aliases used by comments). See Wireframe tokens.
  2. Some features are config/hooks-only. Tags/Arrows/Areas have no wireframe slots; Transcription/Subtitles are surfaced through the recorder player’s slots; Reactions actions live on the comment element. Each feature page calls out its exact limits.
Cross-cutting concerns (a11y, i18n, RTL, responsive, testing) apply to all of these: see Cross-cutting concerns.