Components
Full examples: the per-component pages have complete tabbed code examples and screenshots: Inline reactions and Reactions wireframe variables.There is noVeltReactionPinReact primitive: customize pins only viaVeltReactionPinWireframe/ CSS. Reaction data/actions live on the comment element, so there’s nouseReactionUtils(see hooks).
Config props
No general config props beyond the custom emoji set. Replace the default reactions with your own via thecustomReactions prop (ReactionMap = { [reactionId]: { url?, svg?, emoji? } }):
customReactions JSON silently no-ops.)
CSS: stateful classes
(Override with!important because Velt’s runtime styles are high-specificity; see CSS.)
Wireframes: slot trees + tokens
{componentConfig.<x>} (🔑 = state flag you’ll typically use in velt-if / velt-class): pin {componentConfig.isReactionSelectedByCurrentUser} 🔑, {componentConfig.tooltipVisible} 🔑, {componentConfig.annotation.reactions.length}, {componentConfig.type} ('comment'|'inline'|'timeline'|'standalone'); inline section {componentConfig.skeletonLoading} 🔑, {componentConfig.annotations.length}. type="standalone" renders even at 0 reactions; type="timeline" is the compact variant.
Headless hooks
Reactions are actions on the comment element:
(No
useReactionUtils; for custom emoji config call setCustomReactions on the reaction/comment element.)
Limitations
- No standalone reaction-pin primitive (wireframe/CSS only).
- Two distinct emoji fields: picker items use
emoji.value/.key; pins renderannotation.icon. shadowDomdefaults differ (inline sectiontrue, pin/toolfalse).

