43 lines
1.0 KiB
TypeScript
43 lines
1.0 KiB
TypeScript
import { create } from 'zustand';
|
|
|
|
interface ModalState {
|
|
isVisible: boolean;
|
|
title: string;
|
|
message: string;
|
|
type: 'success' | 'error' | 'info';
|
|
onConfirm: () => void;
|
|
onCancel?: () => void;
|
|
openModal: (
|
|
title: string,
|
|
message: string,
|
|
type?: 'success' | 'error' | 'info',
|
|
onConfirm?: () => void,
|
|
onCancel?: () => void
|
|
) => void;
|
|
closeModal: () => void;
|
|
}
|
|
|
|
export const useModalStore = create<ModalState>((set) => ({
|
|
isVisible: false,
|
|
title: '',
|
|
message: '',
|
|
type: 'info',
|
|
onConfirm: () => { },
|
|
onCancel: undefined,
|
|
|
|
openModal: (title, message, type = 'info', onConfirm, onCancel) =>
|
|
set({
|
|
isVisible: true,
|
|
title,
|
|
message,
|
|
type,
|
|
onConfirm: () => {
|
|
if (onConfirm) onConfirm();
|
|
set({ isVisible: false });
|
|
},
|
|
onCancel: onCancel || undefined,
|
|
}),
|
|
|
|
closeModal: () => set({ isVisible: false }),
|
|
}));
|