@gluestack-ui/button
Version:
A universal headless Button component for React Native, Next.js & React
53 lines (52 loc) • 1.83 kB
TypeScript
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<JSX.Element>;
/**
* 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<ButtonProps & IButtonProps> & RefAttributes<ButtonProps>> & {
Group: React.ForwardRefExoticComponent<RefAttributes<GroupProps> & PropsWithoutRef<GroupProps & IButtonGroupProps>>;
Spinner: React.ForwardRefExoticComponent<PropsWithoutRef<SpinnerProps> & React.RefAttributes<SpinnerProps>>;
Text: React.ForwardRefExoticComponent<React.RefAttributes<TextProps> & PropsWithoutRef<TextProps>>;
Icon: React.ForwardRefExoticComponent<React.RefAttributes<IconProps> & PropsWithoutRef<IconProps>>;
};
export type IButtonProps = InterfaceButtonProps;