Files
examjam-frontend/context/ModalContext.tsx
2025-07-28 20:22:04 +06:00

42 lines
920 B
TypeScript

"use client";
import { createContext, useContext, useState } from "react";
// Define the context type
interface ModalContextType {
isOpen: boolean;
open: () => void;
close: () => void;
toggle: () => void;
}
// Create context with default values (no null)
const ModalContext = createContext<ModalContextType>({
isOpen: false,
open: () => {},
close: () => {},
toggle: () => {},
});
export function ModalProvider({ children }: { children: React.ReactNode }) {
const [isOpen, setIsOpen] = useState(false);
const open = () => setIsOpen(true);
const close = () => setIsOpen(false);
const toggle = () => setIsOpen((prev) => !prev);
const value: ModalContextType = {
isOpen,
open,
close,
toggle,
};
return (
<ModalContext.Provider value={value}>{children}</ModalContext.Provider>
);
}
export function useModal(): ModalContextType {
return useContext(ModalContext);
}