@gfazioli/mantine-flip
Version:
Flip component is a wrapper for any component that can be flipped. It is used to create cards, flip boxes and more.
86 lines (85 loc) • 3.26 kB
TypeScript
import React from 'react';
import { BoxProps, PolymorphicFactory, StylesApiProps } from '@mantine/core';
import { FlipTarget } from './FlipTarget/FlipTarget';
export type FlipStylesNames = 'root' | 'flip-inner' | 'flip-content';
export type FlipCssVariables = {
root: '--flip-perspective' | '--flip-transition-duration' | '--flip-transition-timing-function';
};
export type FlipDirection = 'horizontal' | 'vertical';
export type FlipIn = 'positive' | 'negative';
export type FlipOut = FlipIn;
export interface FlipBaseProps {
/** Perspective value for flip animation. Default `1000px` */
perspective?: string;
/** Flip animation duration in seconds. Default `.8` */
duration?: number;
/** Flip animation timing function. Default `ease-in-out` */
easing?: React.CSSProperties['transitionTimingFunction'];
/** Controlled flip opened state */
flipped?: boolean;
/** Uncontrolled flip initial opened state */
defaultFlipped?: boolean;
/** Flip direction to show the front and back side. Default `horizontal` */
direction?: FlipDirection;
/** Flip direction to show the back side. Default `negative` */
directionFlipIn?: FlipIn;
/** Flip direction to hide the back side. Default `positive` */
directionFlipOut?: FlipOut;
/** Called when flip flipped state changes */
onChange?: (flipped: boolean) => void;
/** Called when Flip is shown back side */
onBack?: () => void;
/** Called when Flip is shown front side */
onFront?: () => void;
children?: React.ReactNode;
}
export interface FlipProps extends BoxProps, FlipBaseProps, StylesApiProps<FlipFactory> {
}
export type FlipFactory = PolymorphicFactory<{
props: FlipProps;
defaultComponent: 'div';
defaultRef: HTMLDivElement;
stylesNames: FlipStylesNames;
vars: FlipCssVariables;
staticComponents: {
Target: typeof FlipTarget;
};
}>;
export declare const Flip: (<C = "div">(props: import("@mantine/core").PolymorphicComponentProps<C, FlipProps>) => React.ReactElement) & Omit<React.FunctionComponent<(FlipProps & {
component?: any;
} & Omit<Omit<any, "ref">, keyof FlipProps | "component"> & {
ref?: any;
renderRoot?: (props: any) => any;
}) | (FlipProps & {
component: React.ElementType;
renderRoot?: (props: Record<string, any>) => any;
})>, never> & import("@mantine/core/lib/core/factory/factory").ThemeExtend<{
props: FlipProps;
defaultComponent: "div";
defaultRef: HTMLDivElement;
stylesNames: FlipStylesNames;
vars: FlipCssVariables;
staticComponents: {
Target: typeof FlipTarget;
};
}> & import("@mantine/core/lib/core/factory/factory").ComponentClasses<{
props: FlipProps;
defaultComponent: "div";
defaultRef: HTMLDivElement;
stylesNames: FlipStylesNames;
vars: FlipCssVariables;
staticComponents: {
Target: typeof FlipTarget;
};
}> & import("@mantine/core/lib/core/factory/polymorphic-factory").PolymorphicComponentWithProps<{
props: FlipProps;
defaultComponent: "div";
defaultRef: HTMLDivElement;
stylesNames: FlipStylesNames;
vars: FlipCssVariables;
staticComponents: {
Target: typeof FlipTarget;
};
}> & {
Target: typeof FlipTarget;
};