import { createStore } from 'zustand/vanilla' import { persist, createJSONStorage } from 'zustand/middleware' import { get, set, del } from 'idb-keyval' // Create IndexedDB storage adapter const storage = createJSONStorage(() => ({ getItem: async (name) => { const value = await get(name) return value ?? null }, setItem: async (name, value) => { await set(name, value) }, removeItem: async (name) => { await del(name) }, })) export const store = createStore( persist( (set, get) => ({ _hydrated: true, // Start as true - persistence happens in background user: null, items: [], route: 'home', // Actions setUser: (user) => set({ user }), addItem: (item) => set(s => ({ items: [...s.items, item] })), removeItem: (id) => set(s => ({ items: s.items.filter(i => i.id !== id) })), navigate: (route) => set({ route }), }), { name: 'app-store', storage, partialize: (state) => ({ user: state.user, items: state.items, route: state.route, }), } ) )