'use client'; import * as React from 'react'; import { motion, useScroll, useSpring, type HTMLMotionProps, } from 'motion/react'; import { cn } from '@workspace/ui/lib/utils'; type ScrollProgressProps = React.ComponentProps<'div'> & { progressProps?: HTMLMotionProps<'div'>; }; function ScrollProgress({ ref, className, children, progressProps, ...props }: ScrollProgressProps) { const containerRef = React.useRef(null); React.useImperativeHandle(ref, () => containerRef.current as HTMLDivElement); const { scrollYProgress } = useScroll( children ? { container: containerRef } : undefined, ); const scaleX = useSpring(scrollYProgress, { stiffness: 250, damping: 40, bounce: 0, }); return ( <> {containerRef && (
{children}
)} ); } export { ScrollProgress, type ScrollProgressProps };