import { useState } from "react"; export const SIDEBAR_COLLAPSED_STORAGE_KEY = "sidebar.collapsed"; export function parseSidebarCollapsed(value: unknown): boolean { return value === "true"; } export function readSidebarCollapsed(storage: Storage = window.localStorage): boolean { try { return parseSidebarCollapsed(storage.getItem(SIDEBAR_COLLAPSED_STORAGE_KEY)); } catch { return false; } } export function useSidebarCollapsed() { const [collapsed, setCollapsedState] = useState(() => readSidebarCollapsed()); const setCollapsed = (nextCollapsed: boolean) => { setCollapsedState(nextCollapsed); writeSidebarCollapsed(nextCollapsed); }; return { collapsed, setCollapsed }; } export function writeSidebarCollapsed(collapsed: boolean, storage: Storage = window.localStorage) { try { storage.setItem(SIDEBAR_COLLAPSED_STORAGE_KEY, String(collapsed)); } catch { // 存储不可用时仅使用当前内存状态 } }