| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | import { Fragment, useCallback } from 'react'import type { ReactNode } from 'react'import { Dialog, Transition } from '@headlessui/react'import cn from '@/utils/classnames'type DialogProps = {  className?: string  children: ReactNode  show: boolean  onClose?: () => void  inWorkflow?: boolean}const DialogWrapper = ({  className,  children,  show,  onClose,  inWorkflow = true,}: DialogProps) => {  const close = useCallback(() => onClose?.(), [onClose])  return (    <Transition appear show={show} as={Fragment}>      <Dialog as="div" className="relative z-40" onClose={close}>        <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-black bg-opacity-25" />        </Transition.Child>        <div className="fixed inset-0">          <div className={cn('flex flex-col items-end justify-center min-h-full pb-2', inWorkflow ? 'pt-[112px]' : 'pt-[64px] pr-2')}>            <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={cn('grow flex flex-col relative w-[420px] h-0 p-0 overflow-hidden text-left align-middle transition-all transform bg-components-panel-bg-alt border-components-panel-border shadow-xl', inWorkflow ? 'border-t-[0.5px] border-l-[0.5px] border-b-[0.5px] rounded-l-2xl' : 'border-[0.5px] rounded-2xl', className)}>                {children}              </Dialog.Panel>            </Transition.Child>          </div>        </div>      </Dialog>    </Transition >  )}export default DialogWrapper
 |