Jade-Infra-test / src /components /ScrollProgress.jsx
rushiljain's picture
Upload 29 files
691cdd0 verified
import React, { useEffect, useState } from 'react';
export default function ScrollProgress() {
const [progress, setProgress] = useState(0);
useEffect(() => {
const onScroll = () => {
const scrollTop = window.scrollY || document.documentElement.scrollTop;
const height =
document.documentElement.scrollHeight - document.documentElement.clientHeight;
const pct = height > 0 ? Math.min(100, Math.max(0, (scrollTop / height) * 100)) : 0;
setProgress(pct);
};
onScroll();
window.addEventListener('scroll', onScroll, { passive: true });
window.addEventListener('resize', onScroll);
return () => {
window.removeEventListener('scroll', onScroll);
window.removeEventListener('resize', onScroll);
};
}, []);
return (
<div aria-hidden="true" className="fixed inset-x-0 top-0 z-[60] h-0.5 bg-transparent">
<div
className="h-full bg-gradient-to-r from-brand-600 via-accent to-brand-600 transition-[width] duration-150"
style={{ width: `${progress}%` }}
/>
</div>
);
}