Skip to content
Versão preliminar. Cores, componentes e layout ainda vão mudar: falta receber o padrão de interface do TJES (template-basico-vue) e o manual de identidade visual.

BaseTag ​

Mostra um atributo fixo do registro: a lei, o tipo de obra, a vigência. Para a situação do item, use o BaseBadge.

CF001/2022Reforma · limite 50%Lei 14.133Vigência até 12/2026

Uso ​

  • Uma etiqueta é um atributo, não uma situação: ela não tem cor de situação. "Em atraso" é selo, "Lei 14.133" é etiqueta.
  • Várias etiquetas podem ficar juntas, lado a lado, no cabeçalho de um registro ou numa linha de tabela.
  • O texto é curto, de uma a três palavras. Um texto que não cabe é cortado com reticências; o texto inteiro continua para o leitor de tela e aparece como dica ao passar o mouse.
  • O ícone é opcional e só ilustra: o texto sozinho tem de dizer o que é.

Removível ​

Use dismissible em filtros aplicados e escolhas que a pessoa pode desfazer. O botão emite dismiss, e a tela tira a etiqueta da lista e leva o foco para a etiqueta seguinte com focus(). Quando não sobra nenhuma, o foco vai para o botão que restaura os filtros.

ReformaLei 14.133Vigência 2026

Estados ​

PadrãoRemovívelDesabilitada

Ao passar o mouse sobre o botão de remover, o fundo muda; com o teclado, o foco mostra o anel. Com disabled, o botão de remover fica desabilitado e a etiqueta fica esmaecida, com borda tracejada.

Estilo ​

PropriedadeToken
Fundo--tj-layer-01; desabilitada --tj-field-disabled
Borda--tj-border-subtle-02 (1 px); desabilitada tracejada, --tj-border-strong-01
Texto--tj-text-secondary; desabilitada --tj-text-placeholder
Ícone--tj-icon-secondary; desabilitada --tj-text-placeholder
Botão de removerhover --tj-layer-accent-01, pressionado --tj-layer-accent-02, ícone --tj-icon-primary
Fococontorno de 2 px --tj-border-interactive com --tj-ring
Raio--tj-radius-sm, para não ser confundida com o selo, que é pílula
Altura24 px, a mesma do selo; o botão de remover tem 20 × 20 px e área de toque de 24 × 24 px
Fonte--tj-text-xs, peso --tj-weight-medium

Código ​

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

const filters = ref(['Reforma', 'Lei 14.133'])
const tags = new Map<string, { focus: () => void }>()
const restore = ref<{ $el: HTMLElement } | null>(null)

async function remove(filter: string) {
  const index = filters.value.indexOf(filter)
  filters.value = filters.value.filter((item) => item !== filter)
  await nextTick()
  const next = filters.value[Math.min(index, filters.value.length - 1)]
  if (next) tags.get(next)?.focus()
  else restore.value?.$el.focus()
}
</script>

<template>
  <BaseTag label="Lei 14.133" icon="journal-text" />
  <BaseTag
    v-for="filter in filters"
    :key="filter"
    :ref="(tag) => tag ? tags.set(filter, tag) : tags.delete(filter)"
    :label="filter"
    dismissible
    @dismiss="remove(filter)"
  />
  <BaseButton ref="restore" kind="ghost" size="sm">Restaurar filtros</BaseButton>
</template>
PropriedadeTipoPadrãoDescrição
labelstring—Texto da etiqueta. Obrigatório; também dá nome ao botão de remover
iconstring—Nome do ícone do Bootstrap Icons, sem bi-, mostrado antes do texto
dismissiblebooleanfalseMostra o botão de remover
disabledbooleanfalseEsmaece a etiqueta e desabilita o botão de remover

Evento: dismiss (MouseEvent), ao clicar no botão de remover ou acioná-lo com Enter ou Espaço.

Método: focus(), que leva o foco ao botão de remover. Use depois de remover uma etiqueta vizinha.

Acessibilidade ​

  • A etiqueta é texto comum: o leitor de tela lê o atributo. O ícone é decorativo e fica escondido.
  • O botão de remover segue o padrão de botão do WAI-ARIA: é um <button> nativo, entra na ordem do Tab e é acionado com Enter e Espaço.
  • O nome do botão é "Remover" mais o texto da etiqueta, como "Remover Lei 14.133", para cada botão ser único na lista. O mesmo texto aparece como dica do mouse.
  • Ao remover, o botão some junto com a etiqueta. A tela deve levar o foco para a próxima etiqueta com focus(), ou para o controle dos filtros quando não sobrar nenhuma, para o foco não cair no início da página. O exemplo "Removível" faz isso.
  • O botão de remover tem 20 × 20 px, mas a área de toque chega a 24 × 24 px (WCAG 2.5.8), qualquer que seja o espaço entre as etiquetas.
  • O foco aparece com contorno de 2 px e anel; no modo de alto contraste do Windows, o contorno usa a cor de destaque do sistema.
  • A etiqueta desabilitada não depende só da cor: na tela, ganha borda tracejada além do texto esmaecido; para a tecnologia assistiva, o botão fica desabilitado de verdade.
  • A transição do hover é desligada com prefers-reduced-motion.
  • Testado com axe em todos os estados.