forked from pterodactyl/panel
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFadeTransition.tsx
More file actions
33 lines (29 loc) · 864 Bytes
/
FadeTransition.tsx
File metadata and controls
33 lines (29 loc) · 864 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import React from 'react';
import { Transition } from '@headlessui/react';
type Duration = `duration-${number}`;
interface Props {
as?: React.ElementType;
duration?: Duration | [Duration, Duration];
show: boolean;
children: React.ReactNode;
}
export default ({ children, duration, ...props }: Props) => {
const [enterDuration, exitDuration] = Array.isArray(duration)
? duration
: !duration
? ['duration-200', 'duration-100']
: [duration, duration];
return (
<Transition
{...props}
enter={`ease-out ${enterDuration}`}
enterFrom={'opacity-0'}
enterTo={'opacity-100'}
leave={`ease-in ${exitDuration}`}
leaveFrom={'opacity-100'}
leaveTo={'opacity-0'}
>
{children}
</Transition>
);
};