Files
36-character-flower/src/store/modal/modal-store.ts
2026-05-22 17:58:52 +08:00

37 lines
959 B
TypeScript

import { create } from 'zustand'
import { INITIAL_MODAL_VISIBILITY, MODAL_KEYS } from '@/constants'
import type { WithdrawTopupType } from '@/type'
export { MODAL_KEYS }
export type ModalKey = (typeof MODAL_KEYS)[number]
type ModalVisibilityMap = Record<ModalKey, boolean>
export interface ModalStoreState {
modals: ModalVisibilityMap
withdrawTopupType: WithdrawTopupType
closeAllModals: () => void
setModalOpen: (key: ModalKey, open: boolean) => void
setWithdrawTopupType: (type: WithdrawTopupType) => void
}
export const useModalStore = create<ModalStoreState>()((set) => ({
modals: INITIAL_MODAL_VISIBILITY,
withdrawTopupType: 'withdraw',
closeAllModals: () => {
set({ modals: INITIAL_MODAL_VISIBILITY })
},
setModalOpen: (key, open) => {
set((state) => ({
modals: {
...state.modals,
[key]: open,
},
}))
},
setWithdrawTopupType: (type) => {
set({ withdrawTopupType: type })
},
}))