'use client' import { type ReactNode, createContext, useContext, useRef } from 'react' import { useStore } from 'zustand' import { type DmStore, 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(null) if (!storeRef.current) { // Create store instance if not initialized storeRef.current = StoreZus() as StoreApi } return ( {children} ) } export const useDmStore = ( selector: (store: DmStore) => T, ): T => { const storeContext = useContext(StoreContext) if (!storeContext) { throw new Error(`useStore must be used within StoreProvider`) } return useStore(storeContext, selector) }