"use client";
import { useEffect, useState } from "react";

export function useScroll(downThreshold: number, upThreshold?: number) {
	const [scrolled, setScrolled] = useState(false);
	const scrollUpThreshold = upThreshold ?? downThreshold / 2;

	useEffect(() => {
		const handleScroll = () => {
			const y = window.scrollY;
			// Hysteresis: different thresholds for up/down to prevent flickering
			setScrolled((prev) => {
				if (prev) {
					// Currently scrolled - only unscroll when below lower threshold
					return y > scrollUpThreshold;
				}
				// Currently not scrolled - only scroll when above higher threshold
				return y > downThreshold;
			});
		};

		window.addEventListener("scroll", handleScroll, { passive: true });
		handleScroll();
		return () => window.removeEventListener("scroll", handleScroll);
	}, [downThreshold, scrollUpThreshold]);

	return scrolled;
}
