@ledgerhq/lumen-ui-rnative 0.1.41 → 0.1.43

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 (26) hide show
  1. package/dist/module/lib/Components/Banner/Banner.js +5 -9
  2. package/dist/module/lib/Components/Banner/Banner.js.map +1 -1
  3. package/dist/module/lib/Components/MediaButton/MediaButton.js +17 -21
  4. package/dist/module/lib/Components/MediaButton/MediaButton.js.map +1 -1
  5. package/dist/module/lib/Components/MediaButton/MediaButton.test.js +26 -1
  6. package/dist/module/lib/Components/MediaButton/MediaButton.test.js.map +1 -1
  7. package/dist/module/lib/Components/SegmentedControl/SegmentedControl.test.js +162 -66
  8. package/dist/module/lib/Components/SegmentedControl/SegmentedControl.test.js.map +1 -1
  9. package/dist/module/lib/Components/SegmentedControl/usePillLayout.js +19 -15
  10. package/dist/module/lib/Components/SegmentedControl/usePillLayout.js.map +1 -1
  11. package/dist/module/lib/Components/Trend/Trend.js +19 -16
  12. package/dist/module/lib/Components/Trend/Trend.js.map +1 -1
  13. package/dist/typescript/src/lib/Components/Banner/Banner.d.ts.map +1 -1
  14. package/dist/typescript/src/lib/Components/Banner/types.d.ts +3 -3
  15. package/dist/typescript/src/lib/Components/Banner/types.d.ts.map +1 -1
  16. package/dist/typescript/src/lib/Components/MediaButton/MediaButton.d.ts.map +1 -1
  17. package/dist/typescript/src/lib/Components/SegmentedControl/usePillLayout.d.ts.map +1 -1
  18. package/dist/typescript/src/lib/Components/Trend/Trend.d.ts.map +1 -1
  19. package/package.json +1 -1
  20. package/src/lib/Components/Banner/Banner.tsx +8 -11
  21. package/src/lib/Components/Banner/types.ts +3 -3
  22. package/src/lib/Components/MediaButton/MediaButton.test.tsx +41 -1
  23. package/src/lib/Components/MediaButton/MediaButton.tsx +17 -21
  24. package/src/lib/Components/SegmentedControl/SegmentedControl.test.tsx +152 -60
  25. package/src/lib/Components/SegmentedControl/usePillLayout.ts +21 -12
  26. package/src/lib/Components/Trend/Trend.tsx +24 -22
@@ -1 +1 @@
1
- {"version":3,"names":["React","Children","isValidElement","useCallback","useEffect","useMemo","useRef","useAnimatedStyle","useSharedValue","withTiming","useTimingConfig","useSegmentedControlSelectedIndex","selectedValue","children","toArray","findIndex","child","props","value","_worklet_6098626077169_init_data","code","location","sourceMap","usePillLayout","selectedIndex","tabLayout","pillTranslateX","pillWidth","pillHeight","hasLayoutRef","buttonLayoutsRef","Map","timingConfig","duration","easing","onLayout","e","width","height","nativeEvent","layout","count","slotWidth","current","registerButtonLayout","set","x","get","animatedPillStyle","usePillLayoutTs1Factory","_e","global","Error","usePillLayoutTs1","transform","translateX","__closure","__workletHash","__pluginVersion","__initData","__stackDetails"],"sourceRoot":"../../../../../src","sources":["lib/Components/SegmentedControl/usePillLayout.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Children","isValidElement","useCallback","useEffect","useMemo","useRef","useState","useAnimatedStyle","useSharedValue","withTiming","useTimingConfig","useSegmentedControlSelectedIndex","selectedValue","children","toArray","findIndex","child","props","value","_worklet_6098626077169_init_data","code","location","sourceMap","usePillLayout","selectedIndex","tabLayout","pillTranslateX","pillWidth","pillHeight","hasLayoutRef","animatePillRef","buttonLayoutsRef","Map","layoutReady","setLayoutReady","timingConfig","duration","easing","onLayout","e","width","height","nativeEvent","layout","count","slotWidth","current","registerButtonLayout","set","skipAnimation","config","get","x","animatedPillStyle","usePillLayoutTs1Factory","_e","global","Error","usePillLayoutTs1","transform","translateX","__closure","__workletHash","__pluginVersion","__initData","__stackDetails"],"sourceRoot":"../../../../../src","sources":["lib/Components/SegmentedControl/usePillLayout.ts"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,7 @@ import { useDisabledContext } from '@ledgerhq/lumen-utils-shared';
4
4
  import { StyleSheet } from 'react-native';
5
5
  import { useCommonTranslation } from "../../../i18n/index.js";
6
6
  import { useStyleSheet } from "../../../styles/index.js";
7
- import { Minus, TriangleDown, TriangleUp } from "../../Symbols/index.js";
7
+ import { TriangleDown, TriangleUp } from "../../Symbols/index.js";
8
8
  import { Box, Text } from "../Utility/index.js";
9
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  function getVariant(value) {
@@ -13,6 +13,20 @@ function getVariant(value) {
13
13
  }
14
14
  return value > 0 ? 'positive' : 'negative';
15
15
  }
16
+ const iconMap = {
17
+ positive: TriangleUp,
18
+ negative: TriangleDown,
19
+ neutral: null
20
+ };
21
+ const iconSizeMap = {
22
+ md: 16,
23
+ sm: 12
24
+ };
25
+ const iconColorMap = {
26
+ positive: 'success',
27
+ negative: 'error',
28
+ neutral: 'muted'
29
+ };
16
30
  export function Trend({
17
31
  value,
18
32
  size = 'md',
@@ -36,20 +50,9 @@ export function Trend({
36
50
  variant,
37
51
  disabled
38
52
  });
39
- const Icon = {
40
- positive: TriangleUp,
41
- negative: TriangleDown,
42
- neutral: Minus
43
- }[variant];
44
- const iconSize = {
45
- md: 16,
46
- sm: 12
47
- }[size];
48
- const iconColor = {
49
- positive: 'success',
50
- negative: 'error',
51
- neutral: 'muted'
52
- }[variant];
53
+ const Icon = iconMap[variant];
54
+ const iconSize = iconSizeMap[size];
55
+ const iconColor = iconColorMap[variant];
53
56
  const absoluteFormattedValue = `${Math.abs(value).toFixed(2)}%`;
54
57
  const formattedValue = value < 0 ? `-${absoluteFormattedValue}` : absoluteFormattedValue;
55
58
  return /*#__PURE__*/_jsxs(Box, {
@@ -63,7 +66,7 @@ export function Trend({
63
66
  lx: lx,
64
67
  style: [styles.container, style],
65
68
  ...props,
66
- children: [/*#__PURE__*/_jsx(Icon, {
69
+ children: [Icon && /*#__PURE__*/_jsx(Icon, {
67
70
  size: iconSize,
68
71
  color: disabled ? 'disabled' : iconColor
69
72
  }), /*#__PURE__*/_jsx(Text, {
@@ -1 +1 @@
1
- {"version":3,"names":["useDisabledContext","StyleSheet","useCommonTranslation","useStyleSheet","Minus","TriangleDown","TriangleUp","Box","Text","jsx","_jsx","jsxs","_jsxs","getVariant","value","Trend","size","lx","disabled","disabledProp","style","props","variant","consumerName","mergeWith","t","styles","useStyles","Icon","positive","negative","neutral","iconSize","md","sm","iconColor","absoluteFormattedValue","Math","abs","toFixed","formattedValue","accessible","accessibilityLabel","accessibilityState","container","children","color","text","colors","success","error","muted","sizeMap","typographies","body3","body2","flexDirection","alignItems","gap","spacings","s2","flatten"],"sourceRoot":"../../../../../src","sources":["lib/Components/Trend/Trend.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useDisabledContext","StyleSheet","useCommonTranslation","useStyleSheet","TriangleDown","TriangleUp","Box","Text","jsx","_jsx","jsxs","_jsxs","getVariant","value","iconMap","positive","negative","neutral","iconSizeMap","md","sm","iconColorMap","Trend","size","lx","disabled","disabledProp","style","props","variant","consumerName","mergeWith","t","styles","useStyles","Icon","iconSize","iconColor","absoluteFormattedValue","Math","abs","toFixed","formattedValue","accessible","accessibilityLabel","accessibilityState","container","children","color","text","colors","success","error","muted","sizeMap","typographies","body3","body2","flexDirection","alignItems","gap","spacings","s2","flatten"],"sourceRoot":"../../../../../src","sources":["lib/Components/Trend/Trend.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Banner/Banner.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAmF3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,MAAM,GAAI,uHAYpB,WAAW,4CA4Db,CAAC"}
1
+ {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Banner/Banner.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAoF3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,MAAM,GAAI,uHAYpB,WAAW,4CAyDb,CAAC"}
@@ -8,7 +8,7 @@ export type BannerProps = {
8
8
  /**
9
9
  * The main title of the banner.
10
10
  */
11
- title?: string;
11
+ title?: ReactNode;
12
12
  /**
13
13
  * Optional descriptive text.
14
14
  */
@@ -16,11 +16,11 @@ export type BannerProps = {
16
16
  /**
17
17
  * Optional primary action.
18
18
  */
19
- primaryAction?: React.ReactNode;
19
+ primaryAction?: ReactNode;
20
20
  /**
21
21
  * Optional secondary action.
22
22
  */
23
- secondaryAction?: React.ReactNode;
23
+ secondaryAction?: ReactNode;
24
24
  /**
25
25
  * Optional close action.
26
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Banner/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACtD;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Banner/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACtD;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;OAEG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MediaButton.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/MediaButton/MediaButton.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAgIhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,WAAW,GAAI,6HAYzB,gBAAgB,4CA8BlB,CAAC"}
1
+ {"version":3,"file":"MediaButton.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/MediaButton/MediaButton.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA2HhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,WAAW,GAAI,6HAYzB,gBAAgB,4CA8BlB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePillLayout.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/SegmentedControl/usePillLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAON,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAOtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,SAAS,GAClB,MAAM,CAWR;AAED,KAAK,mBAAmB,GAAG;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,aAAa,EACb,aAAa,EACb,QAAQ,EACR,SAAS,GACV,EAAE,mBAAmB;kBAYC,iBAAiB,KAAG,IAAI;;;;;;;;kCAmBnC,MAAM,UAAU,YAAY,KAAG,IAAI;EAkD9C"}
1
+ {"version":3,"file":"usePillLayout.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/SegmentedControl/usePillLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAQN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAOtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,SAAS,GAClB,MAAM,CAWR;AAED,KAAK,mBAAmB,GAAG;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,aAAa,EACb,aAAa,EACb,QAAQ,EACR,SAAS,GACV,EAAE,mBAAmB;kBAcC,iBAAiB,KAAG,IAAI;;;;;;;;kCAiBnC,MAAM,UAAU,YAAY,KAAG,IAAI;EA0D9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Trend.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Trend/Trend.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAW1C,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAW,EACX,EAAO,EACP,QAAQ,EAAE,YAAoB,EAC9B,KAAK,EACL,GAAG,KAAK,EACT,EAAE,UAAU,2CAmDZ"}
1
+ {"version":3,"file":"Trend.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Trend/Trend.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AA4B1C,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAW,EACX,EAAO,EACP,QAAQ,EAAE,YAAoB,EAC9B,KAAK,EACL,GAAG,KAAK,EACT,EAAE,UAAU,2CAoCZ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/lumen-ui-rnative",
3
- "version": "0.1.41",
3
+ "version": "0.1.43",
4
4
  "license": "Apache-2.0",
5
5
  "keywords": [
6
6
  "react-native",
@@ -13,7 +13,6 @@ import {
13
13
  import type { IconProps } from '../Icon';
14
14
  import { IconButton } from '../IconButton';
15
15
  import { Box } from '../Utility';
16
- import { Wrap } from '../Wrap';
17
16
  import type { BannerProps } from './types';
18
17
 
19
18
  type Appearance = NonNullable<BannerProps['appearance']>;
@@ -82,6 +81,7 @@ const useStyles = ({ appearance }: { appearance: Appearance }) => {
82
81
  ]),
83
82
  actionsWrapper: {
84
83
  flexDirection: 'row',
84
+ flexWrap: 'wrap',
85
85
  gap: t.spacings.s4,
86
86
  },
87
87
  };
@@ -169,16 +169,13 @@ export const Banner = ({
169
169
  )}
170
170
  {description && (
171
171
  <View>
172
- <Wrap
173
- if={isTextChildren(description)}
174
- with={(children) => (
175
- <Text style={styles.description} numberOfLines={5}>
176
- {children}
177
- </Text>
178
- )}
179
- >
180
- {description}
181
- </Wrap>
172
+ {isTextChildren(description) ? (
173
+ <Text style={styles.description} numberOfLines={5}>
174
+ {description}
175
+ </Text>
176
+ ) : (
177
+ description
178
+ )}
182
179
  </View>
183
180
  )}
184
181
  </View>
@@ -9,7 +9,7 @@ export type BannerProps = {
9
9
  /**
10
10
  * The main title of the banner.
11
11
  */
12
- title?: string;
12
+ title?: ReactNode;
13
13
  /**
14
14
  * Optional descriptive text.
15
15
  */
@@ -17,11 +17,11 @@ export type BannerProps = {
17
17
  /**
18
18
  * Optional primary action.
19
19
  */
20
- primaryAction?: React.ReactNode;
20
+ primaryAction?: ReactNode;
21
21
  /**
22
22
  * Optional secondary action.
23
23
  */
24
- secondaryAction?: React.ReactNode;
24
+ secondaryAction?: ReactNode;
25
25
  /**
26
26
  * Optional close action.
27
27
  */
@@ -29,11 +29,21 @@ describe('MediaButton', () => {
29
29
  expect(trigger.props.accessibilityRole).toBe('button');
30
30
  });
31
31
 
32
- it('should always render a chevron icon', () => {
32
+ it('should render a chevron icon by default', () => {
33
33
  renderWithProvider(<MediaButton testID='trigger'>Label</MediaButton>);
34
34
  expect(screen.getByTestId('button-trigger-chevron')).toBeTruthy();
35
35
  });
36
36
 
37
+ it('should not render a chevron icon when hideChevron is true', () => {
38
+ renderWithProvider(
39
+ <MediaButton testID='trigger' hideChevron>
40
+ Label
41
+ </MediaButton>,
42
+ );
43
+ expect(screen.queryByTestId('button-trigger-chevron')).toBeNull();
44
+ expect(screen.getByText('Label')).toBeTruthy();
45
+ });
46
+
37
47
  it.each(['gray', 'transparent', 'no-background'] as const)(
38
48
  'should render without errors for appearance "%s"',
39
49
  (appearance) => {
@@ -57,6 +67,36 @@ describe('MediaButton', () => {
57
67
  expect(screen.getByTestId('trigger')).toBeTruthy();
58
68
  },
59
69
  );
70
+
71
+ const sizeShapeMatrix: ['sm' | 'md', 'flat' | 'rounded' | 'none'][] = [
72
+ ['sm', 'flat'],
73
+ ['sm', 'rounded'],
74
+ ['sm', 'none'],
75
+ ['md', 'flat'],
76
+ ['md', 'rounded'],
77
+ ['md', 'none'],
78
+ ];
79
+
80
+ it.each(sizeShapeMatrix)(
81
+ 'should render with hideChevron for size "%s" and shape "%s"',
82
+ (size, shape) => {
83
+ const leadingContent =
84
+ shape === 'none' ? undefined : <View testID='leading' />;
85
+ renderWithProvider(
86
+ <MediaButton
87
+ testID='trigger'
88
+ size={size}
89
+ leadingContent={leadingContent}
90
+ leadingContentShape={shape === 'none' ? undefined : shape}
91
+ hideChevron
92
+ >
93
+ Label
94
+ </MediaButton>,
95
+ );
96
+ expect(screen.getByTestId('trigger')).toBeTruthy();
97
+ expect(screen.queryByTestId('button-trigger-chevron')).toBeNull();
98
+ },
99
+ );
60
100
  });
61
101
 
62
102
  describe('Icons', () => {
@@ -15,12 +15,14 @@ const useStyles = ({
15
15
  disabled,
16
16
  pressed,
17
17
  leadingContentShape,
18
+ hideChevron,
18
19
  }: {
19
20
  appearance: Appearance;
20
21
  size: Size;
21
22
  disabled: boolean;
22
23
  pressed: boolean;
23
24
  leadingContentShape: LeadingContentShape;
25
+ hideChevron: boolean;
24
26
  }) => {
25
27
  return useStyleSheet(
26
28
  (t) => {
@@ -39,8 +41,7 @@ const useStyles = ({
39
41
  const textColor = disabled ? t.colors.text.disabled : t.colors.text.base;
40
42
 
41
43
  type PaddingStyle = {
42
- paddingTop: number;
43
- paddingBottom: number;
44
+ paddingVertical: number;
44
45
  paddingLeft: number;
45
46
  paddingRight: number;
46
47
  };
@@ -51,42 +52,36 @@ const useStyles = ({
51
52
  > = {
52
53
  md: {
53
54
  flat: {
54
- paddingTop: t.spacings.s12,
55
- paddingBottom: t.spacings.s12,
55
+ paddingVertical: t.spacings.s12,
56
56
  paddingLeft: t.spacings.s16,
57
- paddingRight: t.spacings.s16,
57
+ paddingRight: hideChevron ? t.spacings.s16 : t.spacings.s12,
58
58
  },
59
59
  rounded: {
60
- paddingTop: t.spacings.s8,
61
- paddingBottom: t.spacings.s8,
60
+ paddingVertical: t.spacings.s8,
62
61
  paddingLeft: t.spacings.s8,
63
- paddingRight: t.spacings.s16,
62
+ paddingRight: hideChevron ? t.spacings.s16 : t.spacings.s12,
64
63
  },
65
64
  none: {
66
- paddingTop: t.spacings.s14,
67
- paddingBottom: t.spacings.s14,
65
+ paddingVertical: t.spacings.s14,
68
66
  paddingLeft: t.spacings.s16,
69
- paddingRight: t.spacings.s16,
67
+ paddingRight: hideChevron ? t.spacings.s16 : t.spacings.s12,
70
68
  },
71
69
  },
72
70
  sm: {
73
71
  flat: {
74
- paddingTop: t.spacings.s10,
75
- paddingBottom: t.spacings.s10,
72
+ paddingVertical: t.spacings.s10,
76
73
  paddingLeft: t.spacings.s12,
77
- paddingRight: t.spacings.s12,
74
+ paddingRight: hideChevron ? t.spacings.s12 : t.spacings.s8,
78
75
  },
79
76
  rounded: {
80
- paddingTop: t.spacings.s8,
81
- paddingBottom: t.spacings.s8,
77
+ paddingVertical: t.spacings.s8,
82
78
  paddingLeft: t.spacings.s8,
83
- paddingRight: t.spacings.s10,
79
+ paddingRight: hideChevron ? t.spacings.s10 : t.spacings.s8,
84
80
  },
85
81
  none: {
86
- paddingTop: t.spacings.s10,
87
- paddingBottom: t.spacings.s10,
82
+ paddingVertical: t.spacings.s10,
88
83
  paddingLeft: t.spacings.s12,
89
- paddingRight: t.spacings.s12,
84
+ paddingRight: hideChevron ? t.spacings.s12 : t.spacings.s8,
90
85
  },
91
86
  },
92
87
  };
@@ -127,7 +122,7 @@ const useStyles = ({
127
122
  },
128
123
  };
129
124
  },
130
- [appearance, size, disabled, pressed, leadingContentShape],
125
+ [appearance, size, disabled, pressed, leadingContentShape, hideChevron],
131
126
  );
132
127
  };
133
128
 
@@ -221,6 +216,7 @@ const MediaButtonContent = ({
221
216
  disabled,
222
217
  pressed,
223
218
  leadingContentShape,
219
+ hideChevron,
224
220
  });
225
221
 
226
222
  return (
@@ -12,72 +12,164 @@ const TestWrapper = ({ children }: { children: React.ReactNode }) => (
12
12
  );
13
13
 
14
14
  describe('SegmentedControl', () => {
15
- it('renders segments with labels', () => {
16
- const { getByText } = render(
17
- <TestWrapper>
18
- <SegmentedControl
19
- selectedValue='send'
20
- onSelectedChange={() => {
21
- /* empty */
22
- }}
23
- accessibilityLabel='Transaction type'
24
- >
25
- <SegmentedControlButton value='send'>Send</SegmentedControlButton>
26
- <SegmentedControlButton value='receive'>
27
- Receive
28
- </SegmentedControlButton>
29
- </SegmentedControl>
30
- </TestWrapper>,
31
- );
32
- expect(getByText('Send')).toBeTruthy();
33
- expect(getByText('Receive')).toBeTruthy();
15
+ describe('Rendering', () => {
16
+ it('renders segments with labels', () => {
17
+ const { getByText } = render(
18
+ <TestWrapper>
19
+ <SegmentedControl
20
+ selectedValue='send'
21
+ onSelectedChange={() => {
22
+ /* empty */
23
+ }}
24
+ accessibilityLabel='Transaction type'
25
+ >
26
+ <SegmentedControlButton value='send'>Send</SegmentedControlButton>
27
+ <SegmentedControlButton value='receive'>
28
+ Receive
29
+ </SegmentedControlButton>
30
+ </SegmentedControl>
31
+ </TestWrapper>,
32
+ );
33
+ expect(getByText('Send')).toBeTruthy();
34
+ expect(getByText('Receive')).toBeTruthy();
35
+ });
36
+
37
+ it('renders trailingContent inside segment buttons', () => {
38
+ const { getByLabelText } = render(
39
+ <TestWrapper>
40
+ <SegmentedControl
41
+ selectedValue='tokens'
42
+ onSelectedChange={() => {
43
+ /* empty */
44
+ }}
45
+ accessibilityLabel='Asset section'
46
+ >
47
+ <SegmentedControlButton
48
+ value='tokens'
49
+ trailingContent={
50
+ <DotCount value={3} accessibilityLabel='3 tokens' />
51
+ }
52
+ >
53
+ Tokens
54
+ </SegmentedControlButton>
55
+ <SegmentedControlButton value='nfts'>NFTs</SegmentedControlButton>
56
+ </SegmentedControl>
57
+ </TestWrapper>,
58
+ );
59
+
60
+ expect(getByLabelText('3 tokens')).toBeTruthy();
61
+ });
34
62
  });
35
63
 
36
- it('calls onSelectedChange with segment value when a segment is pressed', () => {
37
- const onSelectedChange = jest.fn();
38
- const { getByText } = render(
39
- <TestWrapper>
40
- <SegmentedControl
41
- selectedValue='send'
42
- onSelectedChange={onSelectedChange}
43
- accessibilityLabel='Transaction type'
44
- >
45
- <SegmentedControlButton value='send'>Send</SegmentedControlButton>
46
- <SegmentedControlButton value='receive'>
47
- Receive
48
- </SegmentedControlButton>
49
- </SegmentedControl>
50
- </TestWrapper>,
51
- );
64
+ describe('States', () => {
65
+ it('marks the selected segment with accessibilityState', () => {
66
+ const { getByTestId } = render(
67
+ <TestWrapper>
68
+ <SegmentedControl
69
+ selectedValue='receive'
70
+ onSelectedChange={() => {}}
71
+ accessibilityLabel='Transaction type'
72
+ >
73
+ <SegmentedControlButton value='send' testID='seg-send'>
74
+ Send
75
+ </SegmentedControlButton>
76
+ <SegmentedControlButton value='receive' testID='seg-receive'>
77
+ Receive
78
+ </SegmentedControlButton>
79
+ </SegmentedControl>
80
+ </TestWrapper>,
81
+ );
52
82
 
53
- fireEvent.press(getByText('Receive'));
83
+ expect(getByTestId('seg-send').props.accessibilityState).toMatchObject({
84
+ selected: false,
85
+ });
86
+ expect(getByTestId('seg-receive').props.accessibilityState).toMatchObject(
87
+ { selected: true },
88
+ );
89
+ });
54
90
 
55
- expect(onSelectedChange).toHaveBeenCalledWith('receive');
56
- });
91
+ it('marks a pre-selected non-first segment as selected on initial render (fixed layout)', () => {
92
+ const { getByTestId } = render(
93
+ <TestWrapper>
94
+ <SegmentedControl
95
+ selectedValue='blame'
96
+ onSelectedChange={() => {}}
97
+ tabLayout='fixed'
98
+ accessibilityLabel='File view'
99
+ >
100
+ <SegmentedControlButton value='preview' testID='seg-preview'>
101
+ Preview
102
+ </SegmentedControlButton>
103
+ <SegmentedControlButton value='raw' testID='seg-raw'>
104
+ Raw
105
+ </SegmentedControlButton>
106
+ <SegmentedControlButton value='blame' testID='seg-blame'>
107
+ Blame
108
+ </SegmentedControlButton>
109
+ </SegmentedControl>
110
+ </TestWrapper>,
111
+ );
112
+
113
+ expect(getByTestId('seg-preview').props.accessibilityState).toMatchObject(
114
+ { selected: false },
115
+ );
116
+ expect(getByTestId('seg-blame').props.accessibilityState).toMatchObject({
117
+ selected: true,
118
+ });
119
+ });
120
+
121
+ it('marks a pre-selected non-first segment as selected on initial render (fit layout)', () => {
122
+ const { getByTestId } = render(
123
+ <TestWrapper>
124
+ <SegmentedControl
125
+ selectedValue='blame'
126
+ onSelectedChange={() => {}}
127
+ tabLayout='fit'
128
+ accessibilityLabel='File view'
129
+ >
130
+ <SegmentedControlButton value='preview' testID='seg-preview'>
131
+ Preview
132
+ </SegmentedControlButton>
133
+ <SegmentedControlButton value='raw' testID='seg-raw'>
134
+ Raw
135
+ </SegmentedControlButton>
136
+ <SegmentedControlButton value='blame' testID='seg-blame'>
137
+ Blame
138
+ </SegmentedControlButton>
139
+ </SegmentedControl>
140
+ </TestWrapper>,
141
+ );
142
+
143
+ expect(getByTestId('seg-preview').props.accessibilityState).toMatchObject(
144
+ { selected: false },
145
+ );
146
+ expect(getByTestId('seg-blame').props.accessibilityState).toMatchObject({
147
+ selected: true,
148
+ });
149
+ });
57
150
 
58
- it('renders trailingContent inside segment buttons', () => {
59
- const { getByLabelText } = render(
60
- <TestWrapper>
61
- <SegmentedControl
62
- selectedValue='tokens'
63
- onSelectedChange={() => {
64
- /* empty */
65
- }}
66
- accessibilityLabel='Asset section'
67
- >
68
- <SegmentedControlButton
69
- value='tokens'
70
- trailingContent={
71
- <DotCount value={3} accessibilityLabel='3 tokens' />
72
- }
151
+ it('can change selection away from a pre-selected non-first segment (fit layout)', () => {
152
+ const onSelectedChange = jest.fn();
153
+ const { getByText } = render(
154
+ <TestWrapper>
155
+ <SegmentedControl
156
+ selectedValue='blame'
157
+ onSelectedChange={onSelectedChange}
158
+ tabLayout='fit'
159
+ accessibilityLabel='File view'
73
160
  >
74
- Tokens
75
- </SegmentedControlButton>
76
- <SegmentedControlButton value='nfts'>NFTs</SegmentedControlButton>
77
- </SegmentedControl>
78
- </TestWrapper>,
79
- );
161
+ <SegmentedControlButton value='preview'>
162
+ Preview
163
+ </SegmentedControlButton>
164
+ <SegmentedControlButton value='raw'>Raw</SegmentedControlButton>
165
+ <SegmentedControlButton value='blame'>Blame</SegmentedControlButton>
166
+ </SegmentedControl>
167
+ </TestWrapper>,
168
+ );
169
+
170
+ fireEvent.press(getByText('Preview'));
80
171
 
81
- expect(getByLabelText('3 tokens')).toBeTruthy();
172
+ expect(onSelectedChange).toHaveBeenCalledWith('preview');
173
+ });
82
174
  });
83
175
  });