@tamagui/button
Version:
390 lines • 15.4 kB
TypeScript
import type { TextContextStyles, TextParentStyles } from '@tamagui/text';
import type { FontSizeTokens, GetProps, SizeTokens, ThemeableProps } from '@tamagui/web';
import type { FunctionComponent } from 'react';
export declare const ButtonContext: import("@tamagui/web").StyledContext<Partial<TextContextStyles & {
size: SizeTokens;
variant?: "outlined" | undefined;
}>>;
type ButtonIconProps = {
color?: any;
size?: any;
};
type IconProp = JSX.Element | FunctionComponent<ButtonIconProps> | ((props: ButtonIconProps) => any) | null;
type ButtonExtraProps = TextParentStyles & ThemeableProps & {
/**
* add icon before, passes color and size automatically if Component
*/
icon?: IconProp;
/**
* add icon after, passes color and size automatically if Component
*/
iconAfter?: IconProp;
/**
* adjust icon relative to size
*
* @default 1
*/
scaleIcon?: number;
/**
* make the spacing elements flex
*/
spaceFlex?: number | boolean;
/**
* adjust internal space relative to icon size
*/
scaleSpace?: number;
/**
* remove default styles
*/
unstyled?: boolean;
};
type ButtonProps = ButtonExtraProps & GetProps<typeof ButtonFrame>;
declare const ButtonFrame: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, import("@tamagui/web").TamaguiElement, import("@tamagui/core").RNTamaguiViewNonStyleProps, import("@tamagui/web").StackStyleBase, {
size?: number | SizeTokens | undefined;
variant?: "outlined" | undefined;
disabled?: boolean | undefined;
elevation?: number | SizeTokens | undefined;
unstyled?: boolean | undefined;
transparent?: boolean | undefined;
hoverTheme?: boolean | undefined;
pressTheme?: boolean | undefined;
backgrounded?: boolean | undefined;
fullscreen?: boolean | undefined;
circular?: boolean | undefined;
inset?: number | SizeTokens | {
top?: number | undefined;
bottom?: number | undefined;
left?: number | undefined;
right?: number | undefined;
} | undefined;
focusTheme?: boolean | undefined;
elevate?: boolean | undefined;
bordered?: number | boolean | undefined;
radiused?: boolean | undefined;
padded?: boolean | undefined;
chromeless?: boolean | "all" | undefined;
}, import("@tamagui/web").StaticConfigPublic>;
declare const ButtonText: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, import("@tamagui/web").TamaguiTextElement, import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
size?: FontSizeTokens | undefined;
unstyled?: boolean | undefined;
}, import("@tamagui/web").StaticConfigPublic>;
declare const ButtonIcon: (props: {
children: React.ReactNode;
scaleIcon?: number;
}) => any;
/**
* @deprecated Instead of useButton, see the Button docs for the newer and much improved Advanced customization pattern: https://tamagui.dev/docs/components/button
*/
declare const buttonStaticConfig: {
inlineProps: Set<string>;
};
declare const Button: import("react").ForwardRefExoticComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/core").RNTamaguiViewNonStyleProps, import("@tamagui/web").StackStyleBase, {
size?: number | SizeTokens | undefined;
variant?: "outlined" | undefined;
disabled?: boolean | undefined;
elevation?: number | SizeTokens | undefined;
unstyled?: boolean | undefined;
transparent?: boolean | undefined;
hoverTheme?: boolean | undefined;
pressTheme?: boolean | undefined;
backgrounded?: boolean | undefined;
fullscreen?: boolean | undefined;
circular?: boolean | undefined;
inset?: number | SizeTokens | {
top?: number | undefined;
bottom?: number | undefined;
left?: number | undefined;
right?: number | undefined;
} | undefined;
focusTheme?: boolean | undefined;
elevate?: boolean | undefined;
bordered?: number | boolean | undefined;
radiused?: boolean | undefined;
padded?: boolean | undefined;
chromeless?: boolean | "all" | undefined;
}>, keyof TextContextStyles | "unstyled" | "textProps" | "noTextWrap" | keyof ThemeableProps | "icon" | "iconAfter" | "scaleIcon" | "spaceFlex" | "scaleSpace"> & TextContextStyles & {
textProps?: Partial<import("@tamagui/web").GetFinalProps<import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
size?: FontSizeTokens | undefined;
unstyled?: boolean | undefined;
}>> | undefined;
noTextWrap?: boolean | undefined;
} & ThemeableProps & {
/**
* add icon before, passes color and size automatically if Component
*/
icon?: IconProp | undefined;
/**
* add icon after, passes color and size automatically if Component
*/
iconAfter?: IconProp | undefined;
/**
* adjust icon relative to size
*
* @default 1
*/
scaleIcon?: number | undefined;
/**
* make the spacing elements flex
*/
spaceFlex?: number | boolean | undefined;
/**
* adjust internal space relative to icon size
*/
scaleSpace?: number | undefined;
/**
* remove default styles
*/
unstyled?: boolean | undefined;
} & import("react").RefAttributes<import("@tamagui/web").TamaguiElement>> & import("@tamagui/web").StaticComponentObject<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/core").RNTamaguiViewNonStyleProps, import("@tamagui/web").StackStyleBase, {
size?: number | SizeTokens | undefined;
variant?: "outlined" | undefined;
disabled?: boolean | undefined;
elevation?: number | SizeTokens | undefined;
unstyled?: boolean | undefined;
transparent?: boolean | undefined;
hoverTheme?: boolean | undefined;
pressTheme?: boolean | undefined;
backgrounded?: boolean | undefined;
fullscreen?: boolean | undefined;
circular?: boolean | undefined;
inset?: number | SizeTokens | {
top?: number | undefined;
bottom?: number | undefined;
left?: number | undefined;
right?: number | undefined;
} | undefined;
focusTheme?: boolean | undefined;
elevate?: boolean | undefined;
bordered?: number | boolean | undefined;
radiused?: boolean | undefined;
padded?: boolean | undefined;
chromeless?: boolean | "all" | undefined;
}>, keyof TextContextStyles | "unstyled" | "textProps" | "noTextWrap" | keyof ThemeableProps | "icon" | "iconAfter" | "scaleIcon" | "spaceFlex" | "scaleSpace"> & TextContextStyles & {
textProps?: Partial<import("@tamagui/web").GetFinalProps<import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
size?: FontSizeTokens | undefined;
unstyled?: boolean | undefined;
}>> | undefined;
noTextWrap?: boolean | undefined;
} & ThemeableProps & {
/**
* add icon before, passes color and size automatically if Component
*/
icon?: IconProp | undefined;
/**
* add icon after, passes color and size automatically if Component
*/
iconAfter?: IconProp | undefined;
/**
* adjust icon relative to size
*
* @default 1
*/
scaleIcon?: number | undefined;
/**
* make the spacing elements flex
*/
spaceFlex?: number | boolean | undefined;
/**
* adjust internal space relative to icon size
*/
scaleSpace?: number | undefined;
/**
* remove default styles
*/
unstyled?: boolean | undefined;
}, import("@tamagui/web").TamaguiElement, import("@tamagui/core").RNTamaguiViewNonStyleProps & TextContextStyles & {
textProps?: Partial<import("@tamagui/web").GetFinalProps<import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
size?: FontSizeTokens | undefined;
unstyled?: boolean | undefined;
}>> | undefined;
noTextWrap?: boolean | undefined;
} & ThemeableProps & {
/**
* add icon before, passes color and size automatically if Component
*/
icon?: IconProp | undefined;
/**
* add icon after, passes color and size automatically if Component
*/
iconAfter?: IconProp | undefined;
/**
* adjust icon relative to size
*
* @default 1
*/
scaleIcon?: number | undefined;
/**
* make the spacing elements flex
*/
spaceFlex?: number | boolean | undefined;
/**
* adjust internal space relative to icon size
*/
scaleSpace?: number | undefined;
/**
* remove default styles
*/
unstyled?: boolean | undefined;
}, import("@tamagui/web").StackStyleBase, {
size?: number | SizeTokens | undefined;
variant?: "outlined" | undefined;
disabled?: boolean | undefined;
elevation?: number | SizeTokens | undefined;
unstyled?: boolean | undefined;
transparent?: boolean | undefined;
hoverTheme?: boolean | undefined;
pressTheme?: boolean | undefined;
backgrounded?: boolean | undefined;
fullscreen?: boolean | undefined;
circular?: boolean | undefined;
inset?: number | SizeTokens | {
top?: number | undefined;
bottom?: number | undefined;
left?: number | undefined;
right?: number | undefined;
} | undefined;
focusTheme?: boolean | undefined;
elevate?: boolean | undefined;
bordered?: number | boolean | undefined;
radiused?: boolean | undefined;
padded?: boolean | undefined;
chromeless?: boolean | "all" | undefined;
}, import("@tamagui/web").StaticConfigPublic> & Omit<import("@tamagui/web").StaticConfigPublic, "staticConfig" | "extractable" | "styleable"> & {
__tama: [Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/core").RNTamaguiViewNonStyleProps, import("@tamagui/web").StackStyleBase, {
size?: number | SizeTokens | undefined;
variant?: "outlined" | undefined;
disabled?: boolean | undefined;
elevation?: number | SizeTokens | undefined;
unstyled?: boolean | undefined;
transparent?: boolean | undefined;
hoverTheme?: boolean | undefined;
pressTheme?: boolean | undefined;
backgrounded?: boolean | undefined;
fullscreen?: boolean | undefined;
circular?: boolean | undefined;
inset?: number | SizeTokens | {
top?: number | undefined;
bottom?: number | undefined;
left?: number | undefined;
right?: number | undefined;
} | undefined;
focusTheme?: boolean | undefined;
elevate?: boolean | undefined;
bordered?: number | boolean | undefined;
radiused?: boolean | undefined;
padded?: boolean | undefined;
chromeless?: boolean | "all" | undefined;
}>, keyof TextContextStyles | "unstyled" | "textProps" | "noTextWrap" | keyof ThemeableProps | "icon" | "iconAfter" | "scaleIcon" | "spaceFlex" | "scaleSpace"> & TextContextStyles & {
textProps?: Partial<import("@tamagui/web").GetFinalProps<import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
size?: FontSizeTokens | undefined;
unstyled?: boolean | undefined;
}>> | undefined;
noTextWrap?: boolean | undefined;
} & ThemeableProps & {
/**
* add icon before, passes color and size automatically if Component
*/
icon?: IconProp | undefined;
/**
* add icon after, passes color and size automatically if Component
*/
iconAfter?: IconProp | undefined;
/**
* adjust icon relative to size
*
* @default 1
*/
scaleIcon?: number | undefined;
/**
* make the spacing elements flex
*/
spaceFlex?: number | boolean | undefined;
/**
* adjust internal space relative to icon size
*/
scaleSpace?: number | undefined;
/**
* remove default styles
*/
unstyled?: boolean | undefined;
}, import("@tamagui/web").TamaguiElement, import("@tamagui/core").RNTamaguiViewNonStyleProps & TextContextStyles & {
textProps?: Partial<import("@tamagui/web").GetFinalProps<import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
size?: FontSizeTokens | undefined;
unstyled?: boolean | undefined;
}>> | undefined;
noTextWrap?: boolean | undefined;
} & ThemeableProps & {
/**
* add icon before, passes color and size automatically if Component
*/
icon?: IconProp | undefined;
/**
* add icon after, passes color and size automatically if Component
*/
iconAfter?: IconProp | undefined;
/**
* adjust icon relative to size
*
* @default 1
*/
scaleIcon?: number | undefined;
/**
* make the spacing elements flex
*/
spaceFlex?: number | boolean | undefined;
/**
* adjust internal space relative to icon size
*/
scaleSpace?: number | undefined;
/**
* remove default styles
*/
unstyled?: boolean | undefined;
}, import("@tamagui/web").StackStyleBase, {
size?: number | SizeTokens | undefined;
variant?: "outlined" | undefined;
disabled?: boolean | undefined;
elevation?: number | SizeTokens | undefined;
unstyled?: boolean | undefined;
transparent?: boolean | undefined;
hoverTheme?: boolean | undefined;
pressTheme?: boolean | undefined;
backgrounded?: boolean | undefined;
fullscreen?: boolean | undefined;
circular?: boolean | undefined;
inset?: number | SizeTokens | {
top?: number | undefined;
bottom?: number | undefined;
left?: number | undefined;
right?: number | undefined;
} | undefined;
focusTheme?: boolean | undefined;
elevate?: boolean | undefined;
bordered?: number | boolean | undefined;
radiused?: boolean | undefined;
padded?: boolean | undefined;
chromeless?: boolean | "all" | undefined;
}, import("@tamagui/web").StaticConfigPublic];
} & {
Text: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, import("@tamagui/web").TamaguiTextElement, import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
size?: FontSizeTokens | undefined;
unstyled?: boolean | undefined;
}, import("@tamagui/web").StaticConfigPublic>;
Icon: (props: {
children: React.ReactNode;
scaleIcon?: number;
}) => any;
};
/**
* @deprecated Instead of useButton, see the Button docs for the newer and much improved Advanced customization pattern: https://tamagui.dev/docs/components/button
*/
declare function useButton<Props extends ButtonProps>({ textProps, ...propsIn }: Props, { Text }?: {
Text: any;
}): {
spaceSize: number | boolean | "unset" | import("@tamagui/web").UnionableString | import("@tamagui/web").Variable<any>;
isNested: boolean;
props: Props;
};
export { Button, ButtonFrame, ButtonIcon, ButtonText, buttonStaticConfig, useButton, };
export type { ButtonProps };
//# sourceMappingURL=Button.d.ts.map