({ mode })
| 2 | import './ProgressBar.css'; |
| 3 | |
| 4 | const ProgressBar = ({ mode }) => { |
| 5 | const [scrollPercent, setScrollPercent] = useState(0); |
| 6 | |
| 7 | const updateProgressBar = () => { |
| 8 | const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; |
| 9 | const scrollHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight; |
| 10 | const scrollProgress = (scrollTop / scrollHeight) * 100; |
| 11 | setScrollPercent(scrollProgress); |
| 12 | }; |
| 13 | |
| 14 | useEffect(() => { |
| 15 | window.addEventListener('scroll', updateProgressBar); |
| 16 | return () => window.removeEventListener('scroll', updateProgressBar); |
| 17 | }, []); |
| 18 | |
| 19 | const progressBarColor = mode === 'dark' ? 'white' : 'black'; |
| 20 | const containerBackgroundColor = mode === 'dark' ? 'black' : 'white'; |
| 21 | |
| 22 | return ( |
| 23 | <div |
| 24 | id="progressBarContainer" |
| 25 | style={{ backgroundColor: containerBackgroundColor }} |
| 26 | > |
| 27 | <div |
| 28 | id="progressBar" |
| 29 | style={{ |
| 30 | width: `${scrollPercent}%`, |
| 31 | backgroundColor: progressBarColor |
| 32 | }} |
| 33 | ></div> |
| 34 | </div> |
| 35 | ); |
| 36 | }; |
| 37 | |
| 38 | export default ProgressBar; |
nothing calls this directly
no outgoing calls
no test coverage detected