| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | import { Dialog, Transition } from '@headlessui/react'import { Fragment } from 'react'import { RiCloseLargeLine } from '@remixicon/react'import classNames from '@/utils/classnames'type IModal = {  className?: string  wrapperClassName?: string  open: boolean  onClose?: () => void  title?: React.ReactNode  description?: React.ReactNode  children?: React.ReactNode  closable?: boolean  overflowVisible?: boolean}export default function FullScreenModal({  className,  wrapperClassName,  open,  onClose = () => { },  children,  closable = false,  overflowVisible = false,}: IModal) {  return (    <Transition show={open} as={Fragment}>      <Dialog as="div" className={classNames('modal-dialog', wrapperClassName)} onClose={onClose}>        <Transition.Child          as={Fragment}          enter="ease-out duration-300"          enterFrom="opacity-0"          enterTo="opacity-100"          leave="ease-in duration-200"          leaveFrom="opacity-100"          leaveTo="opacity-0"        >          <div className="fixed inset-0 bg-background-overlay-backdrop backdrop-blur-[6px]" />        </Transition.Child>        <div          className="fixed inset-0 h-screen w-screen p-4"          onClick={(e) => {            e.preventDefault()            e.stopPropagation()          }}        >          <div className="w-full h-full bg-background-default-subtle rounded-2xl border border-effects-highlight relative">            <Transition.Child              as={Fragment}              enter="ease-out duration-300"              enterFrom="opacity-0 scale-95"              enterTo="opacity-100 scale-100"              leave="ease-in duration-200"              leaveFrom="opacity-100 scale-100"              leaveTo="opacity-0 scale-95"            >              <Dialog.Panel className={classNames(                'h-full',                overflowVisible ? 'overflow-visible' : 'overflow-hidden',                className,              )}>                {closable                  && <div                    className='absolute z-50 top-3 right-3 w-9 h-9 flex items-center justify-center rounded-[10px]                  bg-components-button-tertiary-bg hover:bg-components-button-tertiary-bg-hover cursor-pointer'                    onClick={(e) => {                      e.stopPropagation()                      onClose()                    }}>                    <RiCloseLargeLine className='w-3.5 h-3.5 text-components-button-tertiary-text' />                  </div>}                {children}              </Dialog.Panel>            </Transition.Child>          </div>        </div>      </Dialog>    </Transition>  )}
 |