Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/resources/scripts/components/elements/transitions/FadeTransition.tsx
10277 views
1
import React from 'react';
2
import { Transition } from '@headlessui/react';
3
4
type Duration = `duration-${number}`;
5
6
interface Props {
7
as?: React.ElementType;
8
duration?: Duration | [Duration, Duration];
9
show: boolean;
10
children: React.ReactNode;
11
}
12
13
export default ({ children, duration, ...props }: Props) => {
14
const [enterDuration, exitDuration] = Array.isArray(duration)
15
? duration
16
: !duration
17
? ['duration-200', 'duration-100']
18
: [duration, duration];
19
20
return (
21
<Transition
22
{...props}
23
enter={`ease-out ${enterDuration}`}
24
enterFrom={'opacity-0'}
25
enterTo={'opacity-100'}
26
leave={`ease-in ${exitDuration}`}
27
leaveFrom={'opacity-100'}
28
leaveTo={'opacity-0'}
29
>
30
{children}
31
</Transition>
32
);
33
};
34
35