Skip to content
Snippets Groups Projects
Modal.component.tsx 1.08 KiB
Newer Older
Adrian Orłów's avatar
Adrian Orłów committed
import { useAppSelector } from '@/redux/hooks/useAppSelector';
import { modalSelector } from '@/redux/modal/modal.selector';
Adrian Orłów's avatar
Adrian Orłów committed
import dynamic from 'next/dynamic';
import { LoginModal } from './LoginModal';
Adrian Orłów's avatar
Adrian Orłów committed
import { OverviewImagesModal } from './OverviewImagesModal';
import { PublicationsModal } from './PublicationsModal';
import { ModalLayout } from './ModalLayout';
Adrian Orłów's avatar
Adrian Orłów committed

const MolArtModal = dynamic(
  () => import('./MolArtModal/MolArtModal.component').then(mod => mod.MolArtModal),
  { ssr: false },
);
Adrian Orłów's avatar
Adrian Orłów committed

export const Modal = (): React.ReactNode => {
  const { isOpen, modalName } = useAppSelector(modalSelector);
Adrian Orłów's avatar
Adrian Orłów committed

  return (
    <>
      {isOpen && modalName === 'overview-images' && (
        <ModalLayout>
          <OverviewImagesModal />
        </ModalLayout>
      )}
      {isOpen && modalName === 'mol-art' && (
        <ModalLayout>
          <MolArtModal />
        </ModalLayout>
      )}
      {isOpen && modalName === 'login' && (
        <ModalLayout>
          <LoginModal />
        </ModalLayout>
Adrian Orłów's avatar
Adrian Orłów committed
      )}
      {isOpen && modalName === 'publications' && <PublicationsModal />}
    </>
Adrian Orłów's avatar
Adrian Orłów committed
  );
};