import { useState } from "react"; export type SetLocalStorageValue = T | ((prevValue: T) => T); export type SetLocalStorage = (value: SetLocalStorageValue) => void; export default function useLocalStorage( key: string, initialValue: T ): [T, SetLocalStorage] { const [storedValue, setStoredValue] = useState(() => { let result: T; try { const item = window.localStorage.getItem(key); result = item ? JSON.parse(item) : initialValue; } catch { result = initialValue; } return result; }); const setValue = (value: SetLocalStorageValue) => { const valueToStore = value instanceof Function ? value(storedValue) : value; setStoredValue(valueToStore); try { window.localStorage.setItem(key, JSON.stringify(valueToStore)); } catch { console.warn(`Could not save ${key} to localStorage`); } }; return [storedValue, setValue]; }