import { ReactNode, useCallback } from 'react'; import { useLocation, useNavigate } from 'react-router-dom'; import { getRouteSectionParent } from '../utils/routeParent'; type BackRouteHandlerProps = { children: (onBack: () => void) => ReactNode; }; export function BackRouteHandler({ children }: BackRouteHandlerProps) { const navigate = useNavigate(); const location = useLocation(); const goBack = useCallback(() => { // Back arrow walks up the route tree to the section root — semantically // a "go up", not a "push parent". Replacing keeps the back-stack from // growing when the user repeatedly taps back on nested screens. const parent = getRouteSectionParent(location.pathname); if (parent) navigate(parent, { replace: true }); }, [navigate, location.pathname]); return children(goBack); }