stories/transitions/Fade.js (36 lines of code) (raw):

import { css } from 'astroturf'; import React, { useRef } from 'react'; import CSSTransition from '../../src/CSSTransition'; export const FADE_TIMEOUT = 1000; const styles = css` .enter, .appear { opacity: 0.01; } .enter.enter-active, .appear.appear-active { opacity: 1; transition: opacity ${FADE_TIMEOUT}ms ease-in; } .exit { opacity: 1; } .exit.exit-active { opacity: 0.01; transition: opacity ${0.8 * FADE_TIMEOUT}ms ease-in; } `; const defaultProps = { in: false, timeout: FADE_TIMEOUT, }; function Fade(props) { const nodeRef = useRef(); return ( <CSSTransition {...props} classNames={styles} nodeRef={nodeRef}> <div ref={nodeRef}>{props.children}</div> </CSSTransition> ); } Fade.defaultProps = defaultProps; export default Fade;