import type { PropsWithoutRef, RefAttributes } from 'react'; import type { PressableProps } from 'react-native'; export interface InterfaceButtonProps extends PressableProps { /** * If true, the button will be in hovered state. */ isHovered?: boolean; /** * If true, the button will be in pressed state. */ isPressed?: boolean; /** * If true, the button will be focused. */ isFocused?: boolean; /** * If true, the button focus ring will be visible. */ isFocusVisible?: boolean; /** * If true, the button will be disabled. */ isDisabled?: boolean; } export interface IButtonGroupProps { /** * The direction of the Stack Items. * @default row */ flexDirection?: 'row' | 'column' | 'row-reverse' | 'column-reverse'; /** * */ children: JSX.Element | Array; /** * If true, the button will be disabled. */ isDisabled?: boolean; /** * If true, button will be atttached together. */ isAttached?: boolean; reversed?: boolean; isReversed?: boolean; } export type IButtonComponentType< ButtonProps, GroupProps, SpinnerProps, TextProps, IconProps > = React.ForwardRefExoticComponent< PropsWithoutRef & RefAttributes > & { Group: React.ForwardRefExoticComponent< RefAttributes & PropsWithoutRef >; Spinner: React.ForwardRefExoticComponent< PropsWithoutRef & React.RefAttributes >; Text: React.ForwardRefExoticComponent< React.RefAttributes & PropsWithoutRef >; Icon: React.ForwardRefExoticComponent< React.RefAttributes & PropsWithoutRef >; }; export type IButtonProps = InterfaceButtonProps;