/** * usePageLeave hook * * Detect when user is about to leave the page using beforeunload and visibilitychange events. * Useful for saving drafts, confirming navigation, or tracking engagement. * * @param onPageLeave - Callback function to execute when user is leaving the page * * @example * ```tsx * import { usePageLeave } from "rooks"; * * function DraftEditor() { * const [draft, setDraft] = useState(""); * const [saved, setSaved] = useState(true); * * usePageLeave(() => { * if (!saved && draft) { * // Save draft before leaving * localStorage.setItem("draft", draft); * } * }); * * const handleChange = (e) => { * setDraft(e.target.value); * setSaved(false); * }; * * const handleSave = () => { * localStorage.setItem("draft", draft); * setSaved(true); * }; * * return ( *
You have unsaved changes
} *