2025-10-23 12:11:41 +02:00

27 lines
882 B
TypeScript

// 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;
}