123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { Fragment, type ReactNode } from 'react'
- import { Transition } from '@headlessui/react'
- import classNames from '@/utils/classnames'
- type ContentDialogProps = {
- className?: string
- show: boolean
- onClose?: () => void
- children: ReactNode
- }
- const ContentDialog = ({
- className,
- show,
- onClose,
- children,
- }: ContentDialogProps) => {
- return (
- <Transition
- show={show}
- as="div"
- className="absolute left-0 top-0 w-full h-full z-20 p-2 box-border"
- >
- <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="absolute left-0 inset-0 w-full bg-app-detail-overlay-bg"
- onClick={onClose}
- />
- </Transition.Child>
- <Transition.Child
- as={Fragment}
- enter="transform transition ease-out duration-300"
- enterFrom="-translate-x-full"
- enterTo="translate-x-0"
- leave="transform transition ease-in duration-200"
- leaveFrom="translate-x-0"
- leaveTo="-translate-x-full"
- >
- <div className={classNames(
- 'absolute left-0 w-full bg-app-detail-bg border-r border-divider-burn',
- className,
- )}>
- {children}
- </div>
- </Transition.Child>
- </Transition>
- )
- }
- export default ContentDialog
|