import { useCallback, useEffect, useState } from 'react' export function useLocalStorage(key: string, initialValue: T): [T, (v: T) => void] { const [value, setValue] = useState(() => { if (typeof window === 'undefined') return initialValue try { const raw = window.localStorage.getItem(key) return raw != null ? (JSON.parse(raw) as T) : initialValue } catch (err) { console.warn(`useLocalStorage: failed to read "${key}"`, err) return initialValue } }) useEffect(() => { try { window.localStorage.setItem(key, JSON.stringify(value)) } catch (err) { console.warn(`useLocalStorage: failed to write "${key}"`, err) } }, [key, value]) const set = useCallback((v: T) => setValue(v), []) return [value, set] }