Number flow
Números animados donde solo giran los dígitos que cambian, con cualquier formato Intl y configuración regional.
pnpm dlx shadcn@latest add https://hextaui.com/r/number-flow.jsonAñade el componente, los tokens del tema de HextaUI y los componentes de HextaUI de los que depende.
Añade los tokens del tema a tu CSS global, si aún no lo has hecho.
Instala las dependencias.
pnpm add cnCopia y pega el siguiente código en tu proyecto.
components/ui/number-flow.tsx lib/motion.ts Actualiza las rutas de importación para que coincidan con la configuración de tu proyecto.
Solo se mueven los dígitos que cambian
Cada dígito es su propia columna. Pasar de 22 a 23 solo hace girar el dígito de las unidades; el de las decenas permanece quieto. Los dígitos que aparecen o desaparecen, como el tercer dígito en 99 → 100, deslizan su ancho hacia dentro o hacia fuera.
Tendencia
trend define hacia dónde giran los dígitos. auto gira hacia arriba cuando el valor crece y hacia abajo cuando disminuye, up y down fuerzan una dirección, y shortest toma el camino más corto alrededor de la rueda.
Formatos
format y locales aceptan cualquier opción de Intl.NumberFormat. Los símbolos de moneda, separadores y signos permanecen quietos mientras se mueven los dígitos, y los numerales no latinos giran en su propia escritura.
Tiempos
Ajusta el movimiento con duration y easing, o desactívalo con animated={false}. Los ajustes de movimiento reducido lo desactivan automáticamente.
Interrupciones y eventos
Un valor nuevo a mitad del giro continúa desde donde está cada dígito, así que las actualizaciones rápidas nunca saltan. onAnimationsStart y onAnimationsFinish se disparan una vez por lote de dígitos.
En línea y en badges
Renderiza un <span> en línea que se sitúa sobre la línea base del texto, y los dígitos tabulares mantienen su ancho estable mientras giran. BadgeCount lo usa para recuentos que se limitan a un máximo.
De derecha a izquierda
Los números siempre se leen de izquierda a derecha, incluso dentro de un diseño de derecha a izquierda, igual que los renderizan los navegadores.
- Los lectores de pantalla leen el número real con formato. Las columnas que giran se ocultan a las tecnologías de asistencia, y los caracteres que se van se ocultan mientras se animan hacia fuera.
- No es una región live. Envuélvelo en un elemento con
aria-live="polite"cuando los cambios deban anunciarse. - Con movimiento reducido activado, los valores se actualizan al instante sin giro.
Acepta todos los atributos de <span> excepto children y prefix.
| Prop | Tipo | Predeterminado |
|---|---|---|
valueObligatorio. | number | – |
locales | Intl.LocalesArgument | "en-US" |
formatSe pasa a Intl.NumberFormat. | Intl.NumberFormatOptions | – |
prefixTexto estático antes del número. | string | – |
suffixTexto estático después del número. | string | – |
trend | "auto" | "up" | "down" | "shortest" | "auto" |
durationDuración del giro en milisegundos. | number | 600 |
easingCualquier valor de easing de CSS. | string | easeSpring |
animated | boolean | true |
onAnimationsStartSe llama cuando un lote de dígitos empieza a moverse. | () => void | – |
onAnimationsFinishSe llama cuando el último lote se asienta. Se omite si un valor más reciente lo interrumpe. | () => void | – |
| Atributo | Descripción |
|---|---|
data-slot="number-flow" | El span raíz. |
data-slot="number-flow-digit" | Cada celda de dígito. |
data-slot="number-flow-symbol" | Separadores, signos, símbolos, prefijo y sufijo. |
data-slot="number-flow-column" | La columna giratoria dentro de una celda de dígito. |
data-digit | El dígito sobre el que reposa una columna, 0–9. |
- MotionLas curvas de easing, duraciones y la comprobación de movimiento reducido con las que se anima cada componente, además de hooks para transformaciones de tamaño y resaltados deslizantes.
- AvatarFotos de usuario con iniciales como alternativa, insignias de estado y grupos apilados que se colapsan en un contador.
- BadgeEtiquetas de estado con puntos de color, tags eliminables que se deslizan al cerrarse y contadores que ruedan hasta su nuevo valor.
- CardUna superficie para agrupar contenido, con tres variantes, contenido multimedia de borde a borde, radios concéntricos y enlaces en toda la tarjeta.
- ChartGráficos de Recharts con colores del tema, un tooltip y una leyenda que leen las etiquetas de una sola configuración, y navegación con teclado con un anillo de foco visible.
- Data tableUna tabla para datos reales, con ordenación, búsqueda, selección de filas, columnas fijadas, un encabezado fijo y paginación.
Usado en bloques
Bloques que se construyen sobre Number flow.
- ArtifactEl panel junto a un chat de IA que muestra lo que creó el modelo. Páginas web, SVG, documentos y código llegan en streaming y luego pasan a una vista previa en sandbox, con versiones que puedes comparar y restaurar, una división redimensionable y una hoja inferior en móviles.
- Diff ReviewRevisa las ediciones de un agente en todos los archivos antes de que se apliquen. Un árbol de archivos con contadores, aceptar o rechazar cada cambio, cada archivo o todo, comentarios en cualquier línea o rango que vuelven al agente, vistas unificada y dividida, resaltado a nivel de palabra, deshacer, ediciones en streaming y un resumen «Editados 4 archivos» para el chat.