/** * External dependencies */ // eslint-disable-next-line no-restricted-imports import type { PopoverStateReturn } from 'reakit'; // eslint-disable-next-line no-restricted-imports import type { CSSProperties, FunctionComponentElement } from 'react'; /** * Internal dependencies */ import type { PopperProps } from '../utils/types'; export type Context = { flyoutState?: PopoverStateReturn; label?: string; }; export type Props = PopperProps & { state?: PopoverStateReturn; label?: string; /** * Determines if `Flyout` has animations. * * @default true */ animated?: boolean; /** * The duration of `Flyout` animations. * * @default 160 */ animationDuration?: boolean; /** * ID that will serve as a base for all the items IDs. * * @see https://reakit.io/docs/popover/#usepopoverstate */ baseId?: string; /** * Renders `Elevation` styles for the `Flyout`. * * @default 5 */ elevation?: number; /** * Max-width for the `Flyout` element. * * @default 360 */ maxWidth?: CSSProperties[ 'maxWidth' ]; /** * Callback for when the `visible` state changes. */ onVisibleChange?: ( ...args: any ) => void; /** * Element that triggers the `visible` state of `Flyout` when clicked. * * @example * ```jsx * Greet}> * Hi! I'm Olaf! * * ``` */ trigger: FunctionComponentElement< any >; /** * Whether `Flyout` is visible. * * @default false * * @see https://reakit.io/docs/popover/#usepopoverstate */ visible?: boolean; /** * The children elements. */ children: React.ReactNode; }; export type ContentProps = { elevation: number; maxWidth: CSSProperties[ 'maxWidth' ]; children: React.ReactNode; };