generated from muhtadeetaron/nextjs-template
fix(ts): refactor codebase for capacitor setup
This commit is contained in:
@ -1,24 +1,41 @@
|
||||
"use client";
|
||||
import { createContext, useContext, useState } from "react";
|
||||
|
||||
const ModalContext = createContext(null);
|
||||
// Define the context type
|
||||
interface ModalContextType {
|
||||
isOpen: boolean;
|
||||
open: () => void;
|
||||
close: () => void;
|
||||
toggle: () => void;
|
||||
}
|
||||
|
||||
export function ModalProvider({ children }) {
|
||||
// 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={{ isOpen, open, close, toggle }}>
|
||||
{children}
|
||||
</ModalContext.Provider>
|
||||
<ModalContext.Provider value={value}>{children}</ModalContext.Provider>
|
||||
);
|
||||
}
|
||||
|
||||
export function useModal() {
|
||||
const ctx = useContext(ModalContext);
|
||||
if (!ctx) throw new Error("useModal must be inside <ModalProvider>");
|
||||
return ctx;
|
||||
export function useModal(): ModalContextType {
|
||||
return useContext(ModalContext);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user