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(() => { const item = window.localStorage.getItem(key); return item ? JSON.parse(item) : initialValue; }); const setValue = (value: SetLocalStorageValue) => { const valueToStore = value instanceof Function ? value(storedValue) : value; setStoredValue(valueToStore); window.localStorage.setItem(key, JSON.stringify(valueToStore)); }; return [storedValue, setValue]; }