import { type HTMLMotionProps, type TargetAndTransition, type Transition } from 'motion/react'; import { type ComponentPropsWithoutRef, type CSSProperties, type KeyboardEventHandler, type MouseEventHandler, type ReactNode, type Ref } from 'react'; import { type CssLength } from '../../../utils/css'; export type ExpandableDirection = 'vertical' | 'horizontal' | 'both'; export type ExpandableBehavior = 'replace' | 'push'; export type ExpandableEase = 'easeInOut' | 'easeIn' | 'easeOut' | 'linear' | [number, number, number, number]; export type ExpandableSize = { width?: CssLength; height?: CssLength; }; export type ExpandableRenderProps = { isExpanded: boolean; setExpanded: (expanded: boolean) => void; toggleExpand: VoidFunction; }; type ExpandableContextValue = ExpandableRenderProps & { expandDirection: ExpandableDirection; expandBehavior: ExpandableBehavior; transitionDuration: number; easeType: ExpandableEase; initialDelay: number; motionTransition: Transition; }; declare const ExpandableContext: import("react").Context; declare const contentPresets: { fade: { initial: { opacity: number; }; animate: { opacity: number; }; exit: { opacity: number; }; }; 'slide-up': { initial: { opacity: number; y: number; }; animate: { opacity: number; y: number; }; exit: { opacity: number; y: number; }; }; 'slide-down': { initial: { opacity: number; y: number; }; animate: { opacity: number; y: number; }; exit: { opacity: number; y: number; }; }; 'slide-left': { initial: { opacity: number; x: number; }; animate: { opacity: number; x: number; }; exit: { opacity: number; x: number; }; }; 'slide-right': { initial: { opacity: number; x: number; }; animate: { opacity: number; x: number; }; exit: { opacity: number; x: number; }; }; scale: { initial: { opacity: number; scale: number; }; animate: { opacity: number; scale: number; }; exit: { opacity: number; scale: number; }; }; rotate: { initial: { opacity: number; rotate: number; }; animate: { opacity: number; rotate: number; }; exit: { opacity: number; rotate: number; }; }; 'blur-sm': { initial: { opacity: number; filter: string; }; animate: { opacity: number; filter: string; }; exit: { opacity: number; filter: string; }; }; 'blur-md': { initial: { opacity: number; filter: string; }; animate: { opacity: number; filter: string; }; exit: { opacity: number; filter: string; }; }; 'blur-lg': { initial: { opacity: number; filter: string; }; animate: { opacity: number; filter: string; }; exit: { opacity: number; filter: string; }; }; }; export declare const useExpandable: () => ExpandableContextValue; export type ExpandableProps = Omit, 'children'> & { children: ReactNode | ((props: ExpandableRenderProps) => ReactNode); defaultExpanded?: boolean; expanded?: boolean; onExpandedChange?: (expanded: boolean) => void; onToggle?: (expanded: boolean) => void; transitionDuration?: number; easeType?: ExpandableEase; expandDirection?: ExpandableDirection; expandBehavior?: ExpandableBehavior; initialDelay?: number; onExpandStart?: VoidFunction; onExpandEnd?: VoidFunction; onCollapseStart?: VoidFunction; onCollapseEnd?: VoidFunction; }; export declare const Expandable: import("react").ForwardRefExoticComponent, HTMLDivElement>, "ref">, "children"> & { children: ReactNode | ((props: ExpandableRenderProps) => ReactNode); defaultExpanded?: boolean; expanded?: boolean; onExpandedChange?: (expanded: boolean) => void; onToggle?: (expanded: boolean) => void; transitionDuration?: number; easeType?: ExpandableEase; expandDirection?: ExpandableDirection; expandBehavior?: ExpandableBehavior; initialDelay?: number; onExpandStart?: VoidFunction; onExpandEnd?: VoidFunction; onCollapseStart?: VoidFunction; onCollapseEnd?: VoidFunction; } & import("react").RefAttributes>; export type ExpandableTriggerProps = Omit, 'onClick' | 'onKeyDown'> & { asChild?: boolean; onClick?: MouseEventHandler; onKeyDown?: KeyboardEventHandler; ref?: Ref; }; export declare const ExpandableTrigger: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export type ExpandableCardProps = Omit, 'children' | 'className' | 'style'> & { children: ReactNode; className?: string; collapsedSize?: ExpandableSize; expandedSize?: ExpandableSize; hoverToExpand?: boolean; expandDelay?: number; collapseDelay?: number; style?: CSSProperties; }; export declare const ExpandableCard: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export type ExpandableContentPreset = keyof typeof contentPresets; export type ExpandableContentAnimation = { initial?: TargetAndTransition; animate?: TargetAndTransition; exit?: TargetAndTransition; transition?: Transition; }; export type ExpandableContentProps = Omit, 'children' | 'className' | 'style'> & { children: ReactNode; className?: string; collapsedHeight?: CssLength; preset?: ExpandableContentPreset; animateIn?: ExpandableContentAnimation; animateOut?: ExpandableContentAnimation; stagger?: boolean; staggerChildren?: number; keepMounted?: boolean; style?: CSSProperties; }; export declare const ExpandableContent: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export type ExpandableCardHeaderProps = ComponentPropsWithoutRef<'div'> & { ref?: Ref; }; export declare const ExpandableCardHeader: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export type ExpandableCardContentProps = ComponentPropsWithoutRef<'div'> & { ref?: Ref; }; export declare const ExpandableCardContent: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export type ExpandableCardFooterProps = ComponentPropsWithoutRef<'div'> & { ref?: Ref; }; export declare const ExpandableCardFooter: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export { ExpandableContext };