diff --git a/packages/feedback/src/ReactionBar.svelte b/packages/feedback/src/ReactionBar.svelte index 936ae2071..4eaeca3f3 100644 --- a/packages/feedback/src/ReactionBar.svelte +++ b/packages/feedback/src/ReactionBar.svelte @@ -31,7 +31,11 @@ let pendingEmoji = $state(null); - async function handleClick(emoji: ReactionEmoji) { + async function handleClick(e: MouseEvent, emoji: ReactionEmoji) { + // Reaction-bars sit inside clickable cards (feedback feed, /me/reacted, + // detail page). Without stopPropagation, every reaction-click also + // triggers the card's onClick — user reacts and lands in detail-view. + e.stopPropagation(); if (readOnly || !onToggle) return; pendingEmoji = emoji; try { @@ -62,7 +66,7 @@ title={readOnly ? readOnlyTooltip : `${REACTION_LABELS[emoji]} (${count})`} aria-pressed={mine} aria-label={`${REACTION_LABELS[emoji]}: ${count}`} - onclick={() => handleClick(emoji)} + onclick={(e) => handleClick(e, emoji)} > {emoji} {#if count > 0}{count}{/if}