'use client' import { type ReactNode, createContext, useContext, useRef } from 'react' import { useStore } from 'zustand' import { type FoStore, StoreZus } from './store' export type StoreApi = ReturnType export const StoreContext = createContext( undefined, ) export interface StoreProviderProps { children: ReactNode } export const StoreProvider = ({ children, }: StoreProviderProps) => { const storeRef = useRef() if (!storeRef.current) { const store = StoreZus() storeRef.current = store } return ( {children} ) } export const useFoStore = ( selector: (store: FoStore) => T, ): T => { const storeContext = useContext(StoreContext) if (!storeContext) { throw new Error(`useStore must be used within StoreProvider`) } return useStore(storeContext, selector) }