<!-- Колокольчик уведомлений в шапке: ссылка на подписки + счётчик обновлений. Данные пока заглушка -->
<template>
  <NuxtLink
    :to="generateLink('/following')"
    :aria-label="t('notifications')"
    :title="t('notifications')"
    class="layout-notifications"
  >
    <UiIcon
      class="layout-notifications__icon"
      name="bell"
      size="24"
    />
    <span
      v-if="count > 0"
      class="layout-notifications__badge"
    >{{ badge }}</span>
  </NuxtLink>
</template>

<script setup lang="ts">
import { getFollowingUpdatesTotal } from '../../stubs/library-follows';

const MAX_COUNT = 99;

const { t } = useI18n();
const { generateLink } = useGenerateLink();

const count = computed(() => getFollowingUpdatesTotal());

const badge = computed(() => count.value > MAX_COUNT ? `${MAX_COUNT}+` : `${count.value}`);
</script>

<style lang="scss">
/* Бейдж лежит в потоке и наезжает на иконку отрицательным отступом: разряды уходят
   вправо, растягивая контрол. Место под «99+» не резервируется, а зазор от края
   бейджа до соседа в шапке одинаков при любом числе — его держит $badge-inset. */
$padding: 8px;
$badge-inset: 2px;
$badge-overlap: 10px;
$badge-raise: 6px;

.layout-notifications {
  display: inline-flex;
  align-items: center;
  padding: $padding $badge-inset $padding $padding;
  color: $notifications-icon;

  /* На мобиле это такой же тап-контрол, как бургер рядом */
  @include to-br(sm) {
    color: $notifications-icon--mobile;
  }

  @include hover(color) {
    color: $notifications-icon--hover;
  }
}

.layout-notifications__badge {
  @include font-4xs;

  /* Левым краем на верхний правый угол иконки, дальше растёт вправо */
  position: relative;
  z-index: $z-index-plus;
  display: grid;
  place-content: center;
  align-self: flex-start;
  min-width: 16px;
  height: 16px;
  margin-top: -$badge-raise;
  margin-left: -$badge-overlap;
  padding-inline: 4px;
  font-weight: 700;
  color: $notifications-badge-text;
  background-color: $notifications-badge-bg;
  border-radius: $radius-full;
  box-shadow: 0 0 0 2px $notifications-badge-ring;
}
</style>
