Skip to main content
The three on-page annotation features. Be honest up front: these have a thin customization surface: they have not been migrated to the wireframe-slot system, so there are no wireframe slots and no velt-if/velt-class/velt-data tokens for them. Customize with CSS + props (and, for Tags, a [template] input + headless hooks).

Components

PrimitiveWireframe
TagsVeltTags, VeltTagToolnone (not migrated to wireframe slots)
ArrowsVeltArrows, VeltArrowToolnone
Areas(no Velt* React wrapper: velt-areas / velt-area-tool custom elements only)none (one internal portal stub only)
Tags also expose internal elements <velt-tag-pin> / <velt-tag-dialog> that accept a [template] input for custom rendering.

Config props

Tags

  • VeltTags: prop pinHighlighterClass.
  • VeltTagTool: prop targetTagElementId.
  • <velt-tag-pin> / <velt-tag-dialog> accept a [template] input for custom rendering.

Arrows

  • VeltArrows: untyped props.
  • VeltArrowTool: prop darkMode.

Areas

  • No dedicated React component: areas are driven by config + the velt-areas / velt-area-tool custom elements. The default area color is #625DF5.

CSS: stateful classes

None beyond host-element theming: these features have no built-in stateful-class table. Target the tag / arrow / area host (and pin) elements directly and theme via --velt-* (override with !important, R9b). The default area color is #625DF5.

Wireframes: slot trees + tokens

Not wireframeable: none of Tags / Arrows / Areas have been migrated to the wireframe-slot system, so there are no slots and no velt-if/velt-class/velt-data tokens (Areas has only one internal portal stub). For Arrows a flat componentConfig.arrowPinAnnotation/user/… exists internally but is not interpolation-live, so you can’t read it in markup yet. Customize via CSS + props (+ hooks for Tags).

Headless hooks

Tags (the main lever)

  • useTagAnnotations(documentId?, location?)TagAnnotation[] | null.
  • useTagUtils() → the tag element. With these you can render tags entirely your own way (headless).

Arrows · Areas

None: no hooks for either; customize via CSS + props only.

Limitations

At a glance: what each sub-feature supports:
Wireframe slots{…} tokensHeadless hooksReact primitiveCustomize with
Tags❌ noneuseTagAnnotations, useTagUtilsVeltTags, VeltTagToolCSS, props, [template], hooks
Arrows❌ none❌ noneVeltArrows, VeltArrowToolCSS, darkMode prop
Areas❌ none (one internal stub)❌ none(no Velt* React wrapper: velt-areas / velt-area-tool elements only)CSS, area color
Because there are no slots or hooks (beyond Tags), the right move when a design needs deep customization of arrows/areas is usually a headless-style approach for Tags (render from useTagAnnotations), or accept the default UI + CSS for arrows/areas. Per R0, don’t hack Velt’s internal arrow/area DOM to force a layout it doesn’t support: use CSS for what’s reachable and leave a comment for the rest.