Number flow
Números animados em que só os dígitos alterados giram, com qualquer formato Intl e locale.
pnpm dlx shadcn@latest add https://hextaui.com/r/number-flow.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 cnCopie e cole o código a seguir no seu projeto.
components/ui/number-flow.tsx lib/motion.ts Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Só os dígitos alterados se movem
Cada dígito é sua própria coluna. Ir de 22 para 23 gira apenas o dígito das unidades; o das dezenas fica parado. Dígitos que aparecem ou somem, como o terceiro dígito em 99 → 100, deslizam sua largura para dentro ou para fora.
Tendência
trend define para que lado os dígitos giram. auto gira para cima quando o valor cresce e para baixo quando diminui, up e down forçam uma direção, e shortest toma o caminho mais curto pela roda.
Formatos
format e locales aceitam qualquer opção de Intl.NumberFormat. Símbolos de moeda, separadores e sinais ficam parados enquanto os dígitos se movem, e numerais não latinos giram na própria escrita.
Tempo
Ajuste o movimento com duration e easing, ou desligue com animated={false}. As configurações de movimento reduzido o desligam automaticamente.
Interrupções e eventos
Um novo valor no meio do giro continua de onde cada dígito está, então atualizações rápidas nunca saltam. onAnimationsStart e onAnimationsFinish disparam uma vez por lote de dígitos.
Inline e em badges
Renderiza um <span> inline que fica na linha de base do texto, e dígitos tabulares mantêm sua largura estável enquanto os dígitos giram. BadgeCount o usa para contagens limitadas a um máximo.
Da direita para a esquerda
Os números sempre são lidos da esquerda para a direita, mesmo em um layout da direita para a esquerda, como os navegadores os renderizam.
- Os leitores de tela leem o número formatado real. As colunas giratórias ficam ocultas das tecnologias assistivas, e os caracteres que estão saindo ficam ocultos enquanto animam a saída.
- Não é uma live region. Envolva-o em um elemento com
aria-live="polite"quando as mudanças devem ser anunciadas. - Com movimento reduzido ativado, os valores se atualizam instantaneamente, sem giro.
Aceita todos os atributos de <span> exceto children e prefix.
| Prop | Tipo | Padrão |
|---|---|---|
valueObrigatório. | number | – |
locales | Intl.LocalesArgument | "en-US" |
formatRepassado ao Intl.NumberFormat. | Intl.NumberFormatOptions | – |
prefixTexto estático antes do número. | string | – |
suffixTexto estático depois do número. | string | – |
trend | "auto" | "up" | "down" | "shortest" | "auto" |
durationDuração do giro em milissegundos. | number | 600 |
easingQualquer valor de easing CSS. | string | easeSpring |
animated | boolean | true |
onAnimationsStartChamado quando um lote de dígitos começa a se mover. | () => void | – |
onAnimationsFinishChamado quando o último lote termina. Ignorado se um valor mais novo o interrompe. | () => void | – |
| Atributo | Descrição |
|---|---|
data-slot="number-flow" | O span raiz. |
data-slot="number-flow-digit" | Cada célula de dígito. |
data-slot="number-flow-symbol" | Separadores, sinais, símbolos, prefixo e sufixo. |
data-slot="number-flow-column" | A coluna giratória dentro de uma célula de dígito. |
data-digit | O dígito em que uma coluna está parada, 0–9. |
- 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.
- AvatarFotos de usuário com fallback de iniciais, badges de status e grupos empilhados que se recolhem em uma contagem.
- BadgeRótulos de status com pontos coloridos, tags removíveis que deslizam até fechar e contagens que rolam até o novo valor.
- 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 Number flow.
- ArtifactO painel ao lado de um chat de IA que mostra o que o modelo criou. Páginas web, SVGs, documentos e código chegam em streaming ao vivo e depois passam para uma prévia isolada em sandbox, com versões que você pode comparar e restaurar, uma divisão redimensionável e um bottom sheet no celular.
- Diff ReviewRevise as edições de um agente em vários arquivos antes que sejam aplicadas. Uma árvore de arquivos com contagens, aceite ou rejeite cada mudança, cada arquivo ou tudo de uma vez, comentários em qualquer linha ou intervalo que voltam para o agente, visões unificada e dividida, destaques por palavra, desfazer, edições em streaming e um resumo "4 arquivos editados" para o chat.