import * as React from 'react'; export type TransitionStatus = 'entering' | 'entered' | 'exiting' | 'exited' | 'unmounted'; export interface TransitionActions { appear?: boolean | undefined; enter?: boolean | undefined; exit?: boolean | undefined; } export type TransitionHandlerKeys = 'onEnter' | 'onEntering' | 'onEntered' | 'onExit' | 'onExiting' | 'onExited'; export type EnterHandler = (node: HTMLElement, isAppearing: boolean) => void; export type ExitHandler = (node: HTMLElement) => void; export interface TransitionHandlerProps { /** * @ignore */ onEnter?: EnterHandler | undefined; /** * @ignore */ onEntering?: EnterHandler | undefined; /** * @ignore */ onEntered?: EnterHandler | undefined; /** * @ignore */ onExit?: ExitHandler | undefined; /** * @ignore */ onExiting?: ExitHandler | undefined; /** * @ignore */ onExited?: ExitHandler | undefined; } export interface EasingProps { easing: string | { enter?: string | undefined; exit?: string | undefined; }; } export type TransitionKeys = 'in' | 'mountOnEnter' | 'unmountOnExit' | 'timeout' | 'easing' | 'addEndListener' | 'disablePrefersReducedMotion' | TransitionHandlerKeys; interface ConsumerTransitionProps extends TransitionHandlerProps { in?: boolean | undefined; mountOnEnter?: boolean | undefined; unmountOnExit?: boolean | undefined; /** * The duration for the transition, in milliseconds. * You may specify a single timeout for all transitions, or individually with an object. */ timeout?: number | { appear?: number | undefined; enter?: number | undefined; exit?: number | undefined; } | undefined; /** * Add a custom transition end trigger. * Use it when you need custom logic to decide when the transition has ended. * Note: Timeouts are still used as a fallback if provided. * * @param {HTMLElement} node The transitioning DOM node. * @param {Function} done Call this when the transition has finished. */ addEndListener?: ((node: HTMLElement, done: () => void) => void) | undefined; /** * If `true`, the transition ignores `theme.motion.reducedMotion` and keeps its normal timing. * @default false */ disablePrefersReducedMotion?: boolean | undefined; } export interface TransitionProps extends TransitionActions, Partial>, React.HTMLAttributes {} export {};