@hero-design/rn 7.8.0 → 7.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/.turbo/turbo-build.log +8 -8
  2. package/assets/fonts/hero-icons.ttf +0 -0
  3. package/es/index.js +741 -258
  4. package/lib/assets/fonts/hero-icons.ttf +0 -0
  5. package/lib/index.js +740 -257
  6. package/package.json +2 -2
  7. package/src/components/Button/Button.tsx +10 -2
  8. package/src/components/Button/LoadingIndicator/StyledLoadingIndicator.tsx +7 -1
  9. package/src/components/Button/LoadingIndicator/__tests__/StyledLoadingIndicator.spec.tsx +3 -0
  10. package/src/components/Button/LoadingIndicator/__tests__/__snapshots__/StyledLoadingIndicator.spec.tsx.snap +60 -0
  11. package/src/components/Button/LoadingIndicator/__tests__/__snapshots__/index.spec.tsx.snap +363 -0
  12. package/src/components/Button/LoadingIndicator/__tests__/index.spec.tsx +3 -0
  13. package/src/components/Button/LoadingIndicator/index.tsx +4 -1
  14. package/src/components/Button/StyledButton.tsx +57 -1
  15. package/src/components/Button/UtilityButton/__tests__/__snapshots__/index.spec.tsx.snap +167 -0
  16. package/src/components/Button/UtilityButton/__tests__/index.spec.tsx +55 -0
  17. package/src/components/Button/UtilityButton/index.tsx +53 -0
  18. package/src/components/Button/UtilityButton/styled.tsx +25 -0
  19. package/src/components/Button/__tests__/Button.spec.tsx +3 -0
  20. package/src/components/Button/__tests__/StyledButton.spec.tsx +18 -0
  21. package/src/components/Button/__tests__/__snapshots__/StyledButton.spec.tsx.snap +468 -0
  22. package/src/components/Button/index.tsx +3 -0
  23. package/src/components/Card/DataCard/StyledDataCard.tsx +1 -3
  24. package/src/components/Card/DataCard/__tests__/__snapshots__/StyledDataCard.spec.tsx.snap +0 -1
  25. package/src/components/Card/DataCard/__tests__/__snapshots__/index.spec.tsx.snap +0 -5
  26. package/src/components/Card/StyledCard.tsx +1 -3
  27. package/src/components/Card/__tests__/__snapshots__/StyledCard.spec.tsx.snap +0 -1
  28. package/src/components/Icon/HeroIcon/index.tsx +3 -1
  29. package/src/components/Icon/HeroIcon/selection.json +1 -1
  30. package/src/components/Icon/IconList.ts +2 -0
  31. package/src/components/Icon/index.tsx +2 -1
  32. package/src/components/Select/MultiSelect/__tests__/__snapshots__/index.spec.tsx.snap +248 -94
  33. package/src/components/Select/SingleSelect/__tests__/__snapshots__/index.spec.tsx.snap +248 -94
  34. package/src/components/TextInput/StyledTextInput.tsx +133 -11
  35. package/src/components/TextInput/__tests__/StyledTextInput.spec.tsx +143 -7
  36. package/src/components/TextInput/__tests__/__snapshots__/StyledTextInput.spec.tsx.snap +922 -15
  37. package/src/components/TextInput/__tests__/__snapshots__/index.spec.tsx.snap +2078 -0
  38. package/src/components/TextInput/__tests__/index.spec.tsx +302 -11
  39. package/src/components/TextInput/index.tsx +232 -28
  40. package/src/theme/__tests__/__snapshots__/index.spec.ts.snap +73 -3
  41. package/src/theme/components/button.ts +6 -0
  42. package/src/theme/components/card.ts +5 -1
  43. package/src/theme/components/icon.ts +1 -0
  44. package/src/theme/components/textInput.ts +62 -3
  45. package/src/theme/global/colors.ts +1 -0
  46. package/src/types.ts +8 -1
  47. package/types/components/Button/Button.d.ts +2 -2
  48. package/types/components/Button/LoadingIndicator/StyledLoadingIndicator.d.ts +1 -1
  49. package/types/components/Button/LoadingIndicator/index.d.ts +1 -1
  50. package/types/components/Button/StyledButton.d.ts +1 -1
  51. package/types/components/{Select/MultiSelect/__tests__/StyledMultiSelect.spec.d.ts → Button/UtilityButton/__tests__/index.spec.d.ts} +0 -0
  52. package/types/components/Button/UtilityButton/index.d.ts +23 -0
  53. package/types/components/Button/UtilityButton/styled.d.ts +17 -0
  54. package/types/components/Button/index.d.ts +2 -0
  55. package/types/components/Icon/HeroIcon/index.d.ts +1 -1
  56. package/types/components/Icon/IconList.d.ts +1 -1
  57. package/types/components/Icon/index.d.ts +1 -1
  58. package/types/components/Icon/utils.d.ts +1 -1
  59. package/types/components/TextInput/StyledTextInput.d.ts +82 -3
  60. package/types/components/TextInput/index.d.ts +33 -5
  61. package/types/theme/components/button.d.ts +6 -0
  62. package/types/theme/components/card.d.ts +3 -0
  63. package/types/theme/components/icon.d.ts +1 -0
  64. package/types/theme/components/textInput.d.ts +61 -2
  65. package/types/theme/global/colors.d.ts +1 -0
  66. package/types/theme/global/index.d.ts +1 -0
  67. package/types/types.d.ts +2 -1
  68. package/.expo/README.md +0 -15
  69. package/.expo/packager-info.json +0 -10
  70. package/.expo/prebuild/cached-packages.json +0 -4
  71. package/.expo/settings.json +0 -10
  72. package/.expo/xcodebuild-error.log +0 -2
  73. package/.expo/xcodebuild.log +0 -11199
  74. package/types/components/Select/MultiSelect/Footer.d.ts +0 -5
  75. package/types/components/Select/MultiSelect/StyledMultiSelect.d.ts +0 -26
  76. package/types/components/Select/MultiSelect/types.d.ts +0 -5
@@ -0,0 +1,167 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`UtilityButton snapshot has intent primary style 1`] = `
4
+ <View
5
+ accessible={true}
6
+ collapsable={false}
7
+ focusable={true}
8
+ nativeID="animatedComponent"
9
+ onClick={[Function]}
10
+ onResponderGrant={[Function]}
11
+ onResponderMove={[Function]}
12
+ onResponderRelease={[Function]}
13
+ onResponderTerminate={[Function]}
14
+ onResponderTerminationRequest={[Function]}
15
+ onStartShouldSetResponder={[Function]}
16
+ style={
17
+ Object {
18
+ "alignItems": "center",
19
+ "backgroundColor": "#fafbfb",
20
+ "borderRadius": 8,
21
+ "flexDirection": "row",
22
+ "justifyContent": "center",
23
+ "opacity": 1,
24
+ "padding": 8,
25
+ "width": "100%",
26
+ }
27
+ }
28
+ testID="settings-btn"
29
+ >
30
+ <View
31
+ style={
32
+ Array [
33
+ Object {
34
+ "paddingRight": 12,
35
+ },
36
+ undefined,
37
+ ]
38
+ }
39
+ >
40
+ <HeroIcon
41
+ name="cog-outlined"
42
+ style={
43
+ Array [
44
+ Object {
45
+ "color": "#292a2b",
46
+ "fontSize": 24,
47
+ },
48
+ undefined,
49
+ ]
50
+ }
51
+ testID="settings-btn-icon"
52
+ themeIntent="text"
53
+ themeSize="medium"
54
+ />
55
+ </View>
56
+ <Text
57
+ style={
58
+ Array [
59
+ Object {
60
+ "color": "#292a2b",
61
+ "fontFamily": "BeVietnamPro-Regular",
62
+ "fontSize": 14,
63
+ "letterSpacing": 0.42,
64
+ "lineHeight": 22,
65
+ },
66
+ Array [
67
+ Object {
68
+ "flexShrink": 1,
69
+ "fontFamily": "BeVietnamPro-SemiBold",
70
+ "fontSize": 16,
71
+ "textAlign": "center",
72
+ },
73
+ undefined,
74
+ ],
75
+ ]
76
+ }
77
+ themeFontSize="medium"
78
+ themeFontWeight="regular"
79
+ themeIntent="body"
80
+ >
81
+ Settings
82
+ </Text>
83
+ </View>
84
+ `;
85
+
86
+ exports[`UtilityButton snapshot has intent text style 1`] = `
87
+ <View
88
+ accessible={true}
89
+ collapsable={false}
90
+ focusable={true}
91
+ nativeID="animatedComponent"
92
+ onClick={[Function]}
93
+ onResponderGrant={[Function]}
94
+ onResponderMove={[Function]}
95
+ onResponderRelease={[Function]}
96
+ onResponderTerminate={[Function]}
97
+ onResponderTerminationRequest={[Function]}
98
+ onStartShouldSetResponder={[Function]}
99
+ style={
100
+ Object {
101
+ "alignItems": "center",
102
+ "backgroundColor": "#fafbfb",
103
+ "borderRadius": 8,
104
+ "flexDirection": "row",
105
+ "justifyContent": "center",
106
+ "opacity": 1,
107
+ "padding": 8,
108
+ "width": "100%",
109
+ }
110
+ }
111
+ testID="settings-btn"
112
+ >
113
+ <View
114
+ style={
115
+ Array [
116
+ Object {
117
+ "paddingRight": 12,
118
+ },
119
+ undefined,
120
+ ]
121
+ }
122
+ >
123
+ <HeroIcon
124
+ name="cog-outlined"
125
+ style={
126
+ Array [
127
+ Object {
128
+ "color": "#292a2b",
129
+ "fontSize": 24,
130
+ },
131
+ undefined,
132
+ ]
133
+ }
134
+ testID="settings-btn-icon"
135
+ themeIntent="text"
136
+ themeSize="medium"
137
+ />
138
+ </View>
139
+ <Text
140
+ style={
141
+ Array [
142
+ Object {
143
+ "color": "#292a2b",
144
+ "fontFamily": "BeVietnamPro-Regular",
145
+ "fontSize": 14,
146
+ "letterSpacing": 0.42,
147
+ "lineHeight": 22,
148
+ },
149
+ Array [
150
+ Object {
151
+ "flexShrink": 1,
152
+ "fontFamily": "BeVietnamPro-SemiBold",
153
+ "fontSize": 16,
154
+ "textAlign": "center",
155
+ },
156
+ undefined,
157
+ ],
158
+ ]
159
+ }
160
+ themeFontSize="medium"
161
+ themeFontWeight="regular"
162
+ themeIntent="body"
163
+ >
164
+ Settings
165
+ </Text>
166
+ </View>
167
+ `;
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ import { fireEvent } from '@testing-library/react-native';
3
+
4
+ import renderWithTheme from '../../../../testHelpers/renderWithTheme';
5
+
6
+ import UtilityButton from '..';
7
+
8
+ describe('UtilityButton', () => {
9
+ it('renders utility button', () => {
10
+ const screen = renderWithTheme(
11
+ <UtilityButton
12
+ text="Settings"
13
+ icon="cog-outlined"
14
+ testID="settings-btn"
15
+ onPress={() => {}}
16
+ />
17
+ );
18
+
19
+ expect(screen.getByText('Settings')).toBeDefined();
20
+ expect(screen.getByTestId('settings-btn-icon')).toBeDefined();
21
+ });
22
+
23
+ it('allows to click on', () => {
24
+ const onPress = jest.fn();
25
+ const screen = renderWithTheme(
26
+ <UtilityButton
27
+ text="Settings"
28
+ icon="cog-outlined"
29
+ testID="settings-btn"
30
+ onPress={onPress}
31
+ />
32
+ );
33
+ fireEvent.press(screen.getByText('Settings'));
34
+ expect(onPress).toHaveBeenCalledTimes(1);
35
+ });
36
+ });
37
+
38
+ describe('UtilityButton snapshot', () => {
39
+ it.each`
40
+ intent
41
+ ${'primary'}
42
+ ${'text'}
43
+ `('has intent $intent style', () => {
44
+ const { toJSON } = renderWithTheme(
45
+ <UtilityButton
46
+ text="Settings"
47
+ icon="cog-outlined"
48
+ testID="settings-btn"
49
+ onPress={() => {}}
50
+ />
51
+ );
52
+
53
+ expect(toJSON()).toMatchSnapshot();
54
+ });
55
+ });
@@ -0,0 +1,53 @@
1
+ import React, { ReactChild } from 'react';
2
+ import { ViewProps } from 'react-native';
3
+
4
+ import Icon, { IconName } from '../../Icon';
5
+ import { ButtonContainer, IconWrapper, ButtonText } from './styled';
6
+
7
+ export interface UtilityButtonProps extends ViewProps {
8
+ /**
9
+ * Places an icon within the button, before the button's text
10
+ */
11
+ icon: IconName;
12
+ /**
13
+ * Set the handler to handle press event.
14
+ */
15
+ onPress: () => void;
16
+ /**
17
+ * Button label.
18
+ */
19
+ text: ReactChild;
20
+ /**
21
+ * Visual intent color to apply to button.
22
+ */
23
+ intent?: 'primary' | 'text';
24
+ }
25
+
26
+ const TEXT_INTENTS = {
27
+ primary: 'primary',
28
+ text: 'body',
29
+ } as const;
30
+
31
+ const UtilityButton = ({
32
+ icon,
33
+ onPress,
34
+ text,
35
+ testID,
36
+ intent = 'text',
37
+ style,
38
+ hitSlop,
39
+ }: UtilityButtonProps) => (
40
+ <ButtonContainer
41
+ style={style}
42
+ onPress={onPress}
43
+ testID={testID}
44
+ hitSlop={hitSlop}
45
+ >
46
+ <IconWrapper>
47
+ <Icon icon={icon} intent={intent} testID={`${testID}-icon`} />
48
+ </IconWrapper>
49
+ <ButtonText intent={TEXT_INTENTS[intent]}>{text}</ButtonText>
50
+ </ButtonContainer>
51
+ );
52
+
53
+ export default UtilityButton;
@@ -0,0 +1,25 @@
1
+ import { View, TouchableOpacity } from 'react-native';
2
+ import styled from '@emotion/native';
3
+
4
+ import Typography from '../../Typography';
5
+
6
+ export const ButtonContainer = styled(TouchableOpacity)(({ theme }) => ({
7
+ width: '100%',
8
+ flexDirection: 'row',
9
+ justifyContent: 'center',
10
+ alignItems: 'center',
11
+ padding: theme.__hd__.button.space.utilityPadding,
12
+ borderRadius: theme.__hd__.button.radii.utilityRadii,
13
+ backgroundColor: theme.__hd__.button.colors.utilityBackground,
14
+ }));
15
+
16
+ export const IconWrapper = styled(View)(({ theme }) => ({
17
+ paddingRight: theme.__hd__.button.space.utilityIconPadding,
18
+ }));
19
+
20
+ export const ButtonText = styled(Typography.Text)(({ theme }) => ({
21
+ flexShrink: 1,
22
+ textAlign: 'center',
23
+ fontSize: theme.__hd__.button.fontSize.utility,
24
+ fontFamily: theme.__hd__.button.fonts.default,
25
+ }));
@@ -82,6 +82,9 @@ describe('getThemeVariant', () => {
82
82
  ${'outlined'} | ${'primary'} | ${'outlined-primary'}
83
83
  ${'outlined'} | ${'secondary'} | ${'outlined-secondary'}
84
84
  ${'outlined'} | ${'danger'} | ${'outlined-danger'}
85
+ ${'text'} | ${'primary'} | ${'text-primary'}
86
+ ${'text'} | ${'secondary'} | ${'text-secondary'}
87
+ ${'text'} | ${'danger'} | ${'text-danger'}
85
88
  `('returns $themeVariant', ({ variant, intent, themeVariant }) => {
86
89
  expect(getThemeVariant(variant, intent)).toBe(themeVariant);
87
90
  });
@@ -19,6 +19,9 @@ describe('StyledButtonContainer', () => {
19
19
  ${'outlined-primary'}
20
20
  ${'outlined-secondary'}
21
21
  ${'outlined-danger'}
22
+ ${'text-primary'}
23
+ ${'text-secondary'}
24
+ ${'text-danger'}
22
25
  `('has $themeVariant style', ({ themeVariant }) => {
23
26
  const { toJSON } = renderWithTheme(
24
27
  <StyledButtonContainer themeVariant={themeVariant} />
@@ -36,6 +39,9 @@ describe('StyledButtonContainer', () => {
36
39
  ${'outlined-primary'}
37
40
  ${'outlined-secondary'}
38
41
  ${'outlined-danger'}
42
+ ${'text-primary'}
43
+ ${'text-secondary'}
44
+ ${'text-danger'}
39
45
  `(
40
46
  'has pressed with the correct variant $themeVariant style',
41
47
  ({ themeVariant }) => {
@@ -65,6 +71,9 @@ describe('StyledButtonText', () => {
65
71
  ${'outlined-primary'}
66
72
  ${'outlined-secondary'}
67
73
  ${'outlined-danger'}
74
+ ${'text-primary'}
75
+ ${'text-secondary'}
76
+ ${'text-danger'}
68
77
  `('has $themeVariant style', ({ themeVariant }) => {
69
78
  const { toJSON } = renderWithTheme(
70
79
  <StyledButtonText themeVariant={themeVariant}>Example</StyledButtonText>
@@ -82,6 +91,9 @@ describe('StyledButtonText', () => {
82
91
  ${'outlined-primary'}
83
92
  ${'outlined-secondary'}
84
93
  ${'outlined-danger'}
94
+ ${'text-primary'}
95
+ ${'text-secondary'}
96
+ ${'text-danger'}
85
97
  `(
86
98
  'has pressed with the correct variant $themeVariant style',
87
99
  ({ themeVariant }) => {
@@ -129,6 +141,9 @@ describe('StyledButtonIcon', () => {
129
141
  ${'outlined-primary'}
130
142
  ${'outlined-secondary'}
131
143
  ${'outlined-danger'}
144
+ ${'text-primary'}
145
+ ${'text-secondary'}
146
+ ${'text-danger'}
132
147
  `('has $themeVariant style', ({ themeVariant }) => {
133
148
  const { toJSON } = renderWithTheme(
134
149
  <StyledButtonIcon icon="bell" themeVariant={themeVariant} />
@@ -146,6 +161,9 @@ describe('StyledButtonIcon', () => {
146
161
  ${'outlined-primary'}
147
162
  ${'outlined-secondary'}
148
163
  ${'outlined-danger'}
164
+ ${'text-primary'}
165
+ ${'text-secondary'}
166
+ ${'text-danger'}
149
167
  `(
150
168
  'has pressed with the correct variant $themeVariant style',
151
169
  ({ themeVariant }) => {