25 lines
581 B
TypeScript
25 lines
581 B
TypeScript
|
|
import { Server } from "@prisma/client";
|
|
import { create } from "zustand";
|
|
|
|
export type ModalType = "createServer" | "invite";
|
|
|
|
interface ModalData {
|
|
server?: Server
|
|
}
|
|
|
|
interface ModalStore {
|
|
type: ModalType | null;
|
|
data: ModalData;
|
|
isOpen: boolean;
|
|
onOpen: (type: ModalType, data?:ModalData) => void;
|
|
onClose: () => void;
|
|
}
|
|
|
|
export const useModal = create<ModalStore>((set) => ({
|
|
type: null,
|
|
data: {},
|
|
isOpen: false,
|
|
onOpen: (type, data= {}) => set({ isOpen: true, type, data }),
|
|
onClose: () => set({ type: null, isOpen: false }),
|
|
})); |