import { useEffect } from "react";
import { useLocation } from "react-router-dom";

/**
 * Resets the window to the top on every route change. React Router does not
 * restore scroll on client navigation, so without this a short new page would
 * clamp to wherever the previous (taller) page was scrolled — e.g. landing at
 * the bottom of a category page after clicking a card far down the home grid.
 *
 * Skips navigations that carry a hash (`#post-<id>`, `#categories`, …) or a
 * `?post=<id>` deep link so the target page can handle its own alignment.
 */
export function ScrollToTop() {
  const { pathname, search, hash } = useLocation();

  useEffect(() => {
    if (hash || new URLSearchParams(search).has("post")) return;
    window.scrollTo({ top: 0, left: 0 });
  }, [pathname, search, hash]);

  return null;
}
