import { atom } from 'jotai'; import { getKeyValue, setKeyValue } from '../keyValueStore'; export function atomWithKVStorage( key: string | string[], fallback: T, namespace = 'global', ) { const baseAtom = atom(fallback); baseAtom.onMount = (setValue) => { setValue(getKeyValue({ namespace, key, fallback })); }; const derivedAtom = atom T)], void>( (get) => get(baseAtom), (get, set, update) => { const nextValue = typeof update === 'function' ? update(get(baseAtom)) : update; set(baseAtom, nextValue); setKeyValue({ namespace, key, value: nextValue }).catch(console.error); }, ); return derivedAtom; }