import React, { type ReactNode, createContext, useContext, useState, } from 'react'; interface ModalContextType { newFileModalVisible: boolean; setNewFileModalVisible: React.Dispatch>; deleteFileModalVisible: boolean; setDeleteFileModalVisible: React.Dispatch>; commitMessageModalVisible: boolean; setCommitMessageModalVisible: React.Dispatch>; settingsModalVisible: boolean; setSettingsModalVisible: React.Dispatch>; switchWorkspaceModalVisible: boolean; setSwitchWorkspaceModalVisible: React.Dispatch>; createWorkspaceModalVisible: boolean; setCreateWorkspaceModalVisible: React.Dispatch>; } // Create the context with a default undefined value const ModalContext = createContext(null); interface ModalProviderProps { children: ReactNode; } export const ModalProvider: React.FC = ({ children }) => { const [newFileModalVisible, setNewFileModalVisible] = useState(false); const [deleteFileModalVisible, setDeleteFileModalVisible] = useState(false); const [commitMessageModalVisible, setCommitMessageModalVisible] = useState(false); const [settingsModalVisible, setSettingsModalVisible] = useState(false); const [switchWorkspaceModalVisible, setSwitchWorkspaceModalVisible] = useState(false); const [createWorkspaceModalVisible, setCreateWorkspaceModalVisible] = useState(false); const value: ModalContextType = { newFileModalVisible, setNewFileModalVisible, deleteFileModalVisible, setDeleteFileModalVisible, commitMessageModalVisible, setCommitMessageModalVisible, settingsModalVisible, setSettingsModalVisible, switchWorkspaceModalVisible, setSwitchWorkspaceModalVisible, createWorkspaceModalVisible, setCreateWorkspaceModalVisible, }; return ( {children} ); }; export const useModalContext = (): ModalContextType => { const context = useContext(ModalContext); if (context === null) { throw new Error('useModalContext must be used within a ModalProvider'); } return context; };