Badge
Rótulos de status com pontos coloridos, tags removíveis que deslizam até fechar e contagens que rolam até o novo valor.
pnpm dlx shadcn@latest add https://hextaui.com/r/badge.jsonAdiciona o componente, os tokens de tema do HextaUI e quaisquer componentes do HextaUI dos quais ele depende.
Adicione os tokens de tema ao seu CSS global, se ainda não o fez.
Instale as dependências.
pnpm add @base-ui/react @tabler/icons-react class-variance-authority cnCopie e cole o código a seguir no seu projeto.
components/ui/badge.tsx components/ui/number-flow.tsx lib/motion.ts Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Variants e aparências
A aparência outline padrão mantém uma superfície neutra e coloca a cor de status no ponto ou no ícone. Use appearance="solid" quando o badge precisar se destacar, ou appearance="muted" para um chip preenchido discreto. shape="pill" o arredonda por completo.
Tamanhos
sm, default e lg. Ícones, pontos, o botão de fechar e as contagens escalam com o badge.
Removível
Adicione um <BadgeClose /> para tornar um badge removível. Ele encolhe até fechar e seus vizinhos deslizam para ocupar o espaço, e então o foco vai para o próximo botão de fechar. Remova o item dos seus dados em onOpenChangeComplete para que a animação de saída termine antes.
Controlado
Passe open e onOpenChange para controlar a visibilidade. Voltar open para true traz o badge de volta com uma animação de entrada.
Contagens
<BadgeCount /> gira apenas os dígitos que mudam e para em max (99 por padrão) com um sinal de mais. Os leitores de tela sempre ouvem o número real.
Interativo
Use render para transformar um badge em link ou botão. Ele ganha um tom ao passar o mouse, uma escala ao pressionar e um anel de foco. aria-invalid exibe o estado de erro.
Conteúdo longo
Um badge nunca fica mais largo que seu contêiner. Rótulos longos são truncados com reticências, enquanto os ícones e o botão de fechar continuam visíveis.
Da direita para a esquerda
Os ícones, o botão de fechar e a animação de colapso seguem a direção de leitura. As contagens sempre são lidas da esquerda para a direita.
Estas teclas se aplicam a <BadgeClose />.
| Tecla | Ação |
|---|---|
| EnterSpace | Remove o badge. |
| BackspaceDelete | Remove o badge. |
| Tab | Move para o próximo botão de fechar. Após uma remoção, o foco vai para o próximo botão de fechar, ou para o anterior quando era o último. |
- O botão de fechar recebe o nome do badge, então um leitor de tela anuncia “Remove design” em vez de apenas “Remove”. Passe
aria-labelpara substituí-lo. <BadgeDot />é decorativo e fica oculto para tecnologias assistivas. Mantenha o status no rótulo de texto.<BadgeCount />expõe o valor exato mesmo quando o texto visível é limitado, como 99+.- As animações de remoção e de contagem são ignoradas quando o movimento reduzido está ativado.
<Badge /> renderiza um <span> e aceita todos os seus atributos.
| Prop | Tipo | Padrão |
|---|---|---|
variantColore o ponto e os ícones em outline, ou a superfície em solid. | "default" | "success" | "info" | "warning" | "destructive" | "default" |
appearance | "outline" | "solid" | "muted" | "outline" |
shape | "default" | "pill" | "default" |
size | "sm" | "default" | "lg" | "default" |
openVisibilidade controlada. | boolean | – |
defaultOpen | boolean | true |
onOpenChangeChamado quando BadgeClose é ativado. | (open: boolean) => void | – |
onOpenChangeCompleteChamado após o fim da animação de saída. Remova o item dos seus dados aqui. | (open: boolean) => void | – |
render | ReactElement | (props, state) => ReactElement | <span> |
| Atributo | Descrição |
|---|---|
data-slot="badge" | Seleciona os badges no CSS. |
data-variant | A variante atual. |
data-appearance | A aparência atual. |
data-shape | A forma atual. |
data-size | O tamanho atual. |
data-ending-style | Presente enquanto o badge anima a saída. |
--badge-accent | A cor de status usada por pontos e ícones. Substitua-a para um destaque personalizado. |
--badge-height | A altura do badge. |
--badge-radius | O raio dos cantos. O botão de fechar deriva o próprio raio dele. |
| Prop | Tipo | Padrão |
|---|---|---|
pulseAdiciona uma animação de ping para estados ao vivo. Desativada quando o movimento reduzido está ativado. | boolean | false |
| Atributo | Descrição |
|---|---|
data-slot="badge-dot" | Seleciona os pontos no CSS. |
data-pulse | Presente quando pulse está ativado. |
| Prop | Tipo | Padrão |
|---|---|---|
children | ReactNode | <IconX /> |
aria-labelSubstitui o nome automático “Remove {label}”. | string | – |
onClickChame event.preventDefault() para manter o badge aberto. | (event) => void | – |
| Atributo | Descrição |
|---|---|
data-slot="badge-close" | Seleciona o botão de fechar no CSS. |
| Prop | Tipo | Padrão |
|---|---|---|
valueValores negativos e não finitos exibem 0. | number | – |
maxValores acima dele aparecem como max+. Passe Infinity para não ter limite. | number | 99 |
duration | number | 600 |
animated | boolean | true |
trendA direção em que os dígitos giram. | "auto" | "up" | "down" | "shortest" | "auto" |
locales | Intl.LocalesArgument | – |
format | Intl.NumberFormatOptions | – |
| Atributo | Descrição |
|---|---|
data-slot="badge-count" | Seleciona as contagens no CSS. |
- MotionAs curvas de easing, as durações e a verificação de movimento reduzido com que todo componente anima, além de hooks para transformações de tamanho e destaques deslizantes.
- Number flowNúmeros animados em que só os dígitos alterados giram, com qualquer formato Intl e locale.
- AvatarFotos de usuário com fallback de iniciais, badges de status e grupos empilhados que se recolhem em uma contagem.
- CardUma superfície para agrupar conteúdo, com três variantes, mídia de ponta a ponta, raios concêntricos e links no card inteiro.
- ChartGráficos do Recharts com cores do tema, um tooltip e uma legenda que leem os rótulos de uma única configuração, e navegação por teclado com um anel de foco visível.
- Data tableUma tabela para dados reais, com ordenação, busca, seleção de linhas, colunas fixadas, cabeçalho fixo e paginação.
Usado em blocos
Blocos que se baseiam em Badge.
- API keysA página de chaves de API de um produto de IA, como nos consoles da OpenAI e da Anthropic. Crie chaves com permissões restritas e uma expiração, veja o segredo uma única vez com uma cópia que confirma, revogue com desfazer, renomeie no próprio lugar, faça a rotação com um período de tolerância e veja o uso por chave.
- BillingPlano e uso para um produto de IA, no estilo de Cursor, Claude e Vercel. Um medidor de uso dividido por modelo que projeta o fim do ciclo e avisa antes de os créditos acabarem, um gráfico diário que você pode percorrer, um limite de gastos com alertas que você pode pré-visualizar no medidor, mudanças de plano com proporcional exato, um formulário de cartão com validação real e faturas que baixam como PDF.
- Code BlockBlocos de código feitos para respostas de IA. Realce de sintaxe que acompanha o streaming, copiar, baixar e quebra de linha, números de linha e linhas destacadas, diffs com aceitar e rejeitar e um terminal para comandos.
- ModelsA página Modelos das configurações de um produto de IA. Um modelo padrão com contexto, velocidade e custo à primeira vista, um esforço padrão que sabe o que cada modelo suporta, uma lista de modelos pesquisável agrupada por provedor com filtros, fixações e alternâncias em massa, servidores compatíveis com a OpenAI com um teste de conexão real e uma atualização que informa o que há de novo.