Scroll Progress
motion-primitives/scroll-progressFreeComponent
A component that visualizes scroll progress with animated indicators.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/ibelick/motion-primitives/HEAD/public/c/scroll-progress.jsonSource
1'use client';23import { motion, SpringOptions, useScroll, useSpring } from 'motion/react';4import { cn } from '@/lib/utils';5import { RefObject } from 'react';67export type ScrollProgressProps = {8 className?: string;9 springOptions?: SpringOptions;10 containerRef?: RefObject<HTMLDivElement>;11};1213const DEFAULT_SPRING_OPTIONS: SpringOptions = {14 stiffness: 200,15 damping: 50,16 restDelta: 0.001,17};1819export function ScrollProgress({20 className,21 springOptions,22 containerRef,23}: ScrollProgressProps) {24 const { scrollYProgress } = useScroll({25 container: containerRef,26 layoutEffect: Boolean(containerRef?.current),27 });2829 const scaleX = useSpring(scrollYProgress, {30 ...DEFAULT_SPRING_OPTIONS,31 ...(springOptions ?? {}),32 });3334 return (35 <motion.div36 className={cn('inset-x-0 top-0 h-1 origin-left', className)}37 style={{38 scaleX,39 }}40 />41 );42}
What it pulls in
npm packages
Files it writes
More from motion-primitives
All 33 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | motion-primitives | Components | Free | 1 dep | |
| Animated Backgroundanimated-background | motion-primitives | Components | Free | 1 dep | |
| Animated Groupanimated-group | motion-primitives | Components | Free | 1 dep | |
| Animated Numberanimated-number | motion-primitives | Components | Free | 1 dep | |
| Border Trailborder-trail | motion-primitives | Components | Free | 1 dep | |
| Carouselcarousel | motion-primitives | Components | Free | 1 dep | |
| Cursorcursor | motion-primitives | Components | Free | 1 dep | |
| Dialogdialog | motion-primitives | Components | Free | 1 dep · 2 files |
