Components
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, R9b.)
Wireframes: slot trees + tokens
{componentConfig.<x>}: 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).

