Spaces:
Sleeping
Sleeping
File size: 1,078 Bytes
691cdd0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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>
);
}
|