{ "name": "animated-number", "type": "registry:ui", "registryDependencies": [], "dependencies": [ "motion" ], "devDependencies": [], "tailwind": {}, "cssVars": { "light": {}, "dark": {} }, "files": [ { "path": "animated-number.tsx", "content": "'use client';\nimport { cn } from '@/lib/utils';\nimport { motion, SpringOptions, useSpring, useTransform } from 'motion/react';\nimport { useEffect } from 'react';\n\nexport type AnimatedNumberProps = {\n value: number;\n className?: string;\n springOptions?: SpringOptions;\n as?: React.ElementType;\n};\n\nexport function AnimatedNumber({\n value,\n className,\n springOptions,\n as = 'span',\n}: AnimatedNumberProps) {\n const MotionComponent = motion.create(as as keyof JSX.IntrinsicElements);\n\n const spring = useSpring(value, springOptions);\n const display = useTransform(spring, (current) =>\n Math.round(current).toLocaleString()\n );\n\n useEffect(() => {\n spring.set(value);\n }, [spring, value]);\n\n return (\n \n {display}\n \n );\n}\n", "type": "registry:ui" } ] }