-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Expand file tree
/
Copy pathButtonBase.tsx
More file actions
89 lines (83 loc) · 2.24 KB
/
ButtonBase.tsx
File metadata and controls
89 lines (83 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/* eslint-disable react/prop-types */
// Third party dependencies.
import React from 'react';
import { TouchableOpacity } from 'react-native';
// External dependencies.
import Text from '../../../../Texts/Text';
import Icon from '../../../../Icons/Icon';
import { useStyles } from '../../../../../hooks';
// Internal dependencies.
import { ButtonBaseProps } from './ButtonBase.types';
import styleSheet from './ButtonBase.styles';
import {
DEFAULT_BUTTONBASE_LABEL_COLOR,
DEFAULT_BUTTONBASE_SIZE,
DEFAULT_BUTTONBASE_WIDTH,
DEFAULT_BUTTONBASE_ICON_SIZE,
DEFAULT_BUTTONBASE_LABEL_TEXTVARIANT,
} from './ButtonBase.constants';
/**
* @deprecated Please update your code to use `ButtonBase` from `@metamask/design-system-react-native`.
* The API may have changed - compare props before migrating.
* @see {@link https://github.com/MetaMask/metamask-design-system/blob/main/packages/design-system-react-native/src/components/ButtonBase/README.md}
*/
const ButtonBase = ({
label,
labelColor = DEFAULT_BUTTONBASE_LABEL_COLOR,
labelTextVariant = DEFAULT_BUTTONBASE_LABEL_TEXTVARIANT,
startIconName,
endIconName,
size = DEFAULT_BUTTONBASE_SIZE,
onPress,
style,
width = DEFAULT_BUTTONBASE_WIDTH,
isDisabled,
...props
}: ButtonBaseProps) => {
const { styles } = useStyles(styleSheet, {
style,
size,
width,
isDisabled,
});
return (
<TouchableOpacity
disabled={isDisabled}
activeOpacity={1}
onPress={onPress}
style={styles.base}
accessibilityRole="button"
accessible
{...props}
>
{startIconName && (
<Icon
color={labelColor.toString()}
name={startIconName}
size={DEFAULT_BUTTONBASE_ICON_SIZE}
style={styles.startIcon}
/>
)}
{typeof label === 'string' ? (
<Text
variant={labelTextVariant}
style={styles.label}
accessibilityRole="none"
>
{label}
</Text>
) : (
label
)}
{endIconName && (
<Icon
color={labelColor.toString()}
name={endIconName}
size={DEFAULT_BUTTONBASE_ICON_SIZE}
style={styles.endIcon}
/>
)}
</TouchableOpacity>
);
};
export default ButtonBase;