import { Dispatch, SetStateAction, useEffect, useState } from 'react' export function usePersistedState( key: string, defaultValue: S ): [S | undefined, Dispatch>] { const [state, setState] = useState(() => { try { const item = localStorage.getItem(key) return JSON.parse(item || String(defaultValue)) } catch (e) { console.warn('Failed to retrieve persisted value from store.', e) return defaultValue } }) useEffect(() => { localStorage.setItem(key, JSON.stringify(state)) }, [key, state]) return [state, setState] }