Counter ​

WCounter is a round badge with a number, usually pinned to the corner of a button or a nav item. Large numbers are shortened, 1234 to 1.2K. It shakes when the count changes and is at least trigger — 2 by default, so a single item doesn't draw attention.

It takes a semanticType for its color, from the same map as WChip. The counter is sized in em, so a text size class sets its size. WButtonAction and WNavItem have a counter or count of their own.

Inbox
3
1.2K
vue
<template>
  <div class="flex flex-wrap items-center gap-6">
    <span class="relative">
      Inbox

      <WCounter
        :count="count"
        :trigger="1"
        class="absolute -top-2 left-full text-xs"
      />
    </span>

    <WCounter
      :count="1234"
      :semantic-type="SemanticType.INFO"
      class="text-sm"
    />

    <WButton
      :semantic-type="SemanticType.SECONDARY"
      @click="count++"
    >
      New message
    </WButton>

    <WButton
      :semantic-type="SemanticType.SECONDARY"
      @click="count = 0"
    >
      Read all
    </WButton>
  </div>
</template>

<script lang="ts" setup>
import {ref} from 'vue'

import {SemanticType} from 'eco-vue-js/dist/utils/SemanticType'

import WButton from 'eco-vue-js/dist/components/Button/WButton.vue'
import WCounter from 'eco-vue-js/dist/components/Counter/WCounter.vue'

const count = ref(3)
</script>

API ​

WCounter ​

ts
import WCounter from 'eco-vue-js/dist/components/Counter/WCounter.vue'

Props ​

PropTypeDefaultDescription
countnumberrequiredNumber shown, in compact notation — 1.2K for 1200.
triggernumber2Lowest count that makes the counter shake when it changes.
semanticTypeSemanticTypeSemanticType.NEGATIVEColor scheme of the badge.