// app/providers/FadeContext.tsx
'use client';
import { createContext, useContext, useRef, MutableRefObject } from 'react';

export type FadeFn = (path: string) => void;

/* ① Context enthält nur ein Ref-Objekt */
const FadeCtx = createContext<MutableRefObject<FadeFn> | null>(null);

/* Hook, um die aktuelle Funktion aufzurufen */
export function useFade(): FadeFn {
  const ref = useContext(FadeCtx);
  return ref ? ref.current : () => {};
}

/* Provider legt das Ref an */
export function FadeProvider({ children }: { children: React.ReactNode }) {
  const fnRef = useRef<FadeFn>(() => {});        // initial: noop
  return <FadeCtx.Provider value={fnRef}>{children}</FadeCtx.Provider>;
}

/* Hook, den PageTransition benutzt, um seine Funktion zu hinterlegen */
export function useRegisterFade(fn: FadeFn) {
  const ref = useContext(FadeCtx);
  if (ref) ref.current = fn;
}
