"use client"; import { useCallback, useEffect, useState } from "react"; // 「专注写作」偏好的持久化键(对齐既有 `ww.` 前缀约定)。 export const FOCUS_MODE_KEY = "ww.workbench_focus_mode"; export interface FocusMode { // true=专注模式:隐藏左侧图标导航 + 目录 TOC,让宽给正文;false=常规四栏。 focus: boolean; toggle: () => void; } function persist(focus: boolean): void { if (typeof window === "undefined") return; try { window.localStorage.setItem(FOCUS_MODE_KEY, focus ? "1" : "0"); } catch { // 隐私模式/配额异常忽略:专注模式是纯 UI 偏好,写盘失败不影响写作功能。 } } // 记住「专注写作」开关(P3-4):SSR 首帧恒关(避免 hydration 不一致), // 挂载后再从 localStorage 恢复;toggle 即时写回。仅桌面(≥xl)改变栅格,窄屏本就单列不受影响。 export function useFocusMode(): FocusMode { const [focus, setFocus] = useState(false); useEffect(() => { if (typeof window === "undefined") return; try { setFocus(window.localStorage.getItem(FOCUS_MODE_KEY) === "1"); } catch { // 读盘失败则维持默认关闭。 } }, []); const toggle = useCallback(() => { setFocus((prev) => { const next = !prev; persist(next); return next; }); }, []); return { focus, toggle }; }