<script setup lang="ts">
import type { Tag } from 'masto'

const { tag } = defineProps<{
  tag: Tag
}>()

const emit = defineEmits<{
  (event: 'change'): void
}>()

const { tags } = useMasto()

const toggleFollowTag = async () => {
  if (tag.following)
    await tags.unfollow(tag.name)
  else
    await tags.follow(tag.name)

  emit('change')
}
</script>

<template>
  <button
    rounded group focus:outline-none
    hover:text-primary focus-visible:text-primary
    :aria-label="tag.following ? `Unfollow ${tag.name} tag` : `Follow ${tag.name} tag`"
    @click="toggleFollowTag()"
  >
    <CommonTooltip placement="bottom" :content="tag.following ? 'Unfollow' : 'Follow'">
      <div rounded-full p2 group-hover="bg-orange/10" group-focus-visible="bg-orange/10" group-focus-visible:ring="2 current">
        <div :class="[tag.following ? 'i-ri:star-fill' : 'i-ri:star-line']" />
      </div>
    </CommonTooltip>
  </button>
</template>