Number Animation Animated Number
beui/animated-numberFreeComponent
Spring-driven count-up triggered when in view.
Install it
npx shadcn@latest add https://beui.dev/r/animated-number.jsonSource
1"use client";2// beui.dev/components/motion/number34import { animate, useInView, useReducedMotion } from "motion/react";5import { useEffect, useRef, useState } from "react";6import { EASE_OUT } from "@/lib/ease";7import { cn } from "@/lib/utils";89export interface AnimatedNumberProps {10 value: number;11 duration?: number;12 format?: (n: number) => string;13 className?: string;14 startOnView?: boolean;15}1617export function AnimatedNumber({18 value,19 duration = 1.2,20 format = (n) => Math.round(n).toLocaleString(),21 className,22 startOnView = true,23}: AnimatedNumberProps) {24 const ref = useRef<HTMLSpanElement>(null);25 const inView = useInView(ref, { once: true, amount: 0.6 });26 const reduce = useReducedMotion();27 const [display, setDisplay] = useState(0);28 const fromRef = useRef(0);2930 useEffect(() => {31 if (startOnView && !inView) return;32 if (reduce) {33 fromRef.current = value;34 setDisplay(value);35 return;36 }37 const controls = animate(fromRef.current, value, {38 duration,39 ease: EASE_OUT,40 onUpdate: (v) => setDisplay(v),41 });42 fromRef.current = value;43 return () => controls.stop();44 }, [value, duration, inView, startOnView, reduce]);4546 return (47 <span ref={ref} className={cn("tabular-nums", className)}>48 {format(display)}49 </span>50 );51}
What it pulls in
npm packages
Files it writes
More from beui
All 104 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Action Swap Bluraction-swap-blur | beui | Components | Free | 3 deps · 4 files | |
| Action Swap Cascadeaction-swap-cascade | beui | Components | Free | 3 deps · 4 files | |
| Action Swap Rollaction-swap-roll | beui | Components | Free | 3 deps · 4 files | |
| Agent Activityagent-activity | beui | Components | Free | 4 deps · 9 files | |
| Agent Loading States Agent Progressagent-progress | beui | Components | Free | 3 deps · 3 files | |
| AI Sidebarai-sidebar | beui | Components | Free | 4 deps · 5 files | |
| Animated Badgeanimated-badge | beui | Components | Free | 4 deps · 3 files | |
| Animated Sidebaranimated-sidebar | beui | Components | Free | 4 deps · 4 files |
