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

Tags also expose internal elements <velt-tag-pin> / <velt-tag-dialog> that accept a [template] input for custom rendering.

Config props

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

Limitations

At a glance: what each sub-feature supports: 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.