import { createContext, useContext } from "react"; export type UnsavedNavigationAction = () => void; export type UnsavedChangesRegistration = { title?: string; message?: string; onSave: () => boolean | Promise; onDiscard?: () => void; }; export type UnsavedChangesContextValue = { hasUnsavedChanges: boolean; registerUnsavedChanges: (registration: UnsavedChangesRegistration | null) => () => void; requestNavigation: (action: UnsavedNavigationAction) => void; requestDiscard: (action: UnsavedNavigationAction) => void; }; export const UnsavedChangesContext = createContext(null); const fallbackUnsavedChangesContext: UnsavedChangesContextValue = { hasUnsavedChanges: false, registerUnsavedChanges: () => () => undefined, requestNavigation: (action) => action(), requestDiscard: (action) => action() }; export function useUnsavedChanges() { return useContext(UnsavedChangesContext) ?? fallbackUnsavedChangesContext; }