<!-- SPDX-FileCopyrightText: syuilo and misskey-project SPDX-License-Identifier: AGPL-3.0-only --> <template> <button class="_button" :class="[$style.root, { [$style.reacted]: note.myReaction == reaction }]" > <EmReactionIcon :class="$style.limitWidth" :reaction="reaction" :emojiUrl="note.reactionEmojis[reaction.substring(1, reaction.length - 1)]"/> <span :class="$style.count">{{ count }}</span> </button> </template> <script lang="ts" setup> import { } from 'vue'; import * as Misskey from 'misskey-js'; import EmReactionIcon from '@/components/EmReactionIcon.vue'; const props = defineProps<{ reaction: string; count: number; isInitial: boolean; note: Misskey.entities.Note; }>(); </script> <style lang="scss" module> .root { display: inline-flex; height: 42px; margin: 2px; padding: 0 6px; font-size: 1.5em; border-radius: 6px; align-items: center; justify-content: center; &.canToggle { background: var(--buttonBg); &:hover { background: rgba(0, 0, 0, 0.1); } } &:not(.canToggle) { cursor: default; } &.small { height: 32px; font-size: 1em; border-radius: 4px; > .count { font-size: 0.9em; line-height: 32px; } } &.large { height: 52px; font-size: 2em; border-radius: 8px; > .count { font-size: 0.6em; line-height: 52px; } } &.reacted, &.reacted:hover { background: var(--accentedBg); color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset; > .count { color: var(--accent); } > .icon { filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.5)); } } } .limitWidth { max-width: 70px; object-fit: contain; } .count { font-size: 0.7em; line-height: 42px; margin: 0 0 0 4px; } </style>