import { createTrackedSelector } from "react-tracked"; import type { StateCreator, StoreApi } from "zustand"; import { create } from "zustand"; import { type PersistOptions, persist } from "zustand/middleware"; interface TrackedStore { store: StoreApi; useStore: () => State; } export const createTrackedStore = ( initializer: StateCreator ): TrackedStore => { const store = create(initializer); const useStore = createTrackedSelector(store); return { store, useStore }; }; export const createPersistedTrackedStore = ( initializer: StateCreator, options: PersistOptions ): TrackedStore => { const store = create(persist(initializer, options)); const useStore = createTrackedSelector(store); return { store, useStore }; };