Code
/**
* Scroll Progress — adapted from Magic UI (https://magicui.design/docs/components/scroll-progress)
* Copyright (c) Magic UI
* Licensed under the MIT License. Full text: https://github.com/magicuidesign/magicui/blob/main/LICENSE.md
*/
"use client"
import { motion, useScroll, type MotionProps } from "motion/react"
import { cn } from "@/lib/utils"
interface ScrollProgressProps extends Omit<
React.HTMLAttributes<HTMLElement>,
keyof MotionProps
> {
ref?: React.Ref<HTMLDivElement>
}
export function ScrollProgress({
className,
ref,
...props
}: ScrollProgressProps) {
const { scrollYProgress } = useScroll()
return (
<motion.div
ref={ref}
className={cn(
"fixed inset-x-0 top-0 z-50 h-px origin-left bg-linear-to-r from-[#A97CF8] via-[#F38CB8] to-[#FDCC92]",
className
)}
style={{
scaleX: scrollYProgress,
}}
{...props}
/>
)
}