/* eslint-disable @typescript-eslint/no-explicit-any */
import { Dialog, Transition } from '@headlessui/react';
import { Fragment, ReactNode, useCallback, useEffect, useState } from 'react';
import { atom, useRecoilState } from 'recoil';
import { DismissIcon } from '../icons-colored';
import { Title } from '../text';
import { Button } from '@atoms/button/button';
const ModalsCountState = atom({
key: 'ModalsState',
default: 0,
});
let visibleModals = 0;
export const Modal = (props: {
open?: boolean;
onClose?: () => void;
children?: React.ReactNode;
closable?: boolean;
closeIcon?: ReactNode,
className?: string;
style?: React.CSSProperties;
positioned?: boolean;
}) => {
const [open, setOpen] = useState(false);
const [, setModalsCountState] = useRecoilState(ModalsCountState);
const [level, setLevel] = useState(0);
const [didOpenOnce, setDidOpenOnce] = useState(false);
const onClose = useCallback(() => {
visibleModals += -1;
setModalsCountState(visibleModals);
}, [setModalsCountState]);
const onOpen = useCallback(() => {
visibleModals += 1;
setLevel(visibleModals);
setModalsCountState(visibleModals);
}, [setModalsCountState]);
useEffect(() => {
if (props.open !== open) {
setOpen(props.open || false);
if (props.open) {
onOpen();
} else {
onClose();
}
}
if (!didOpenOnce && props.open) setDidOpenOnce(true);
}, [props.open]);
useEffect(() => {
return () => {
if (open) onClose();
};
}, []);
const zIndex = 'z-' + level + '0';
return (
{props.text || ''}