feat: add modal
This commit is contained in:
41
src/core/providers/modal-provider.tsx
Normal file
41
src/core/providers/modal-provider.tsx
Normal file
@@ -0,0 +1,41 @@
|
||||
'use client';
|
||||
|
||||
import {
|
||||
useState,
|
||||
useContext,
|
||||
useCallback,
|
||||
ReactNode,
|
||||
createContext,
|
||||
} from 'react';
|
||||
import { Modal } from '@shared/ui/modal';
|
||||
|
||||
const ModalContext = createContext({
|
||||
hideModal: () => {},
|
||||
showModal: (content: ReactNode) => {},
|
||||
});
|
||||
|
||||
const useModal = () => useContext(ModalContext);
|
||||
|
||||
const ModalProvider = ({ children }: { children: ReactNode }) => {
|
||||
const [modalContent, setModalContent] = useState<ReactNode>(null);
|
||||
|
||||
const showModal = useCallback((content: ReactNode) => {
|
||||
setModalContent(content);
|
||||
}, []);
|
||||
|
||||
const hideModal = useCallback(() => {
|
||||
setModalContent(null);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<ModalContext.Provider value={{ hideModal, showModal }}>
|
||||
{children}
|
||||
{/* Ваш Modal компонент здесь */}
|
||||
<Modal isOpen={modalContent !== null} onClose={hideModal}>
|
||||
{modalContent}
|
||||
</Modal>
|
||||
</ModalContext.Provider>
|
||||
);
|
||||
};
|
||||
|
||||
export { useModal, ModalProvider };
|
||||
@@ -24,6 +24,7 @@ $color-darkgray: #999999;
|
||||
$color-text: #333333;
|
||||
$color-text-light: #777777;
|
||||
$color-green: #23A455;
|
||||
$color-green-hover: #23A455C2;
|
||||
$color-link: #333333;
|
||||
$color-link-hover: #009283;
|
||||
$color-error: #ff0000;
|
||||
|
||||
Reference in New Issue
Block a user