@ledgerhq/lumen-ui-rnative 0.1.38 → 0.1.40

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 (65) hide show
  1. package/dist/module/lib/Components/AmountDisplay/AmountDisplay.js +28 -11
  2. package/dist/module/lib/Components/AmountDisplay/AmountDisplay.js.map +1 -1
  3. package/dist/module/lib/Components/AmountDisplay/AmountDisplay.test.js +71 -0
  4. package/dist/module/lib/Components/AmountDisplay/AmountDisplay.test.js.map +1 -1
  5. package/dist/module/lib/Components/AmountInput/AmountInput.js +9 -4
  6. package/dist/module/lib/Components/AmountInput/AmountInput.js.map +1 -1
  7. package/dist/module/lib/Components/AmountInput/AmountInput.test.js +152 -0
  8. package/dist/module/lib/Components/AmountInput/AmountInput.test.js.map +1 -0
  9. package/dist/module/lib/Components/Avatar/Avatar.figma.js +5 -0
  10. package/dist/module/lib/Components/Avatar/Avatar.figma.js.map +1 -1
  11. package/dist/module/lib/Components/Avatar/Avatar.js +9 -2
  12. package/dist/module/lib/Components/Avatar/Avatar.js.map +1 -1
  13. package/dist/module/lib/Components/Avatar/Avatar.mdx +9 -0
  14. package/dist/module/lib/Components/Avatar/Avatar.stories.js +47 -0
  15. package/dist/module/lib/Components/Avatar/Avatar.stories.js.map +1 -1
  16. package/dist/module/lib/Components/Avatar/Avatar.test.js +23 -1
  17. package/dist/module/lib/Components/Avatar/Avatar.test.js.map +1 -1
  18. package/dist/module/lib/Components/BottomSheet/BottomSheet.js +3 -1
  19. package/dist/module/lib/Components/BottomSheet/BottomSheet.js.map +1 -1
  20. package/dist/module/lib/Components/BottomSheet/BottomSheet.stories.js +1 -0
  21. package/dist/module/lib/Components/BottomSheet/BottomSheet.stories.js.map +1 -1
  22. package/dist/module/lib/Components/BottomSheet/BottomSheet.test.js +33 -1
  23. package/dist/module/lib/Components/BottomSheet/BottomSheet.test.js.map +1 -1
  24. package/dist/module/lib/Components/BottomSheet/BottomSheetHeader.js +7 -3
  25. package/dist/module/lib/Components/BottomSheet/BottomSheetHeader.js.map +1 -1
  26. package/dist/module/lib/Components/Switch/Switch.js +144 -8
  27. package/dist/module/lib/Components/Switch/Switch.js.map +1 -1
  28. package/dist/typescript/src/lib/Components/AmountDisplay/AmountDisplay.d.ts.map +1 -1
  29. package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts.map +1 -1
  30. package/dist/typescript/src/lib/Components/Avatar/Avatar.d.ts +1 -1
  31. package/dist/typescript/src/lib/Components/Avatar/Avatar.d.ts.map +1 -1
  32. package/dist/typescript/src/lib/Components/Avatar/types.d.ts +6 -0
  33. package/dist/typescript/src/lib/Components/Avatar/types.d.ts.map +1 -1
  34. package/dist/typescript/src/lib/Components/BottomSheet/BottomSheet.d.ts +2 -2
  35. package/dist/typescript/src/lib/Components/BottomSheet/BottomSheet.d.ts.map +1 -1
  36. package/dist/typescript/src/lib/Components/BottomSheet/BottomSheetHeader.d.ts.map +1 -1
  37. package/dist/typescript/src/lib/Components/BottomSheet/types.d.ts +9 -0
  38. package/dist/typescript/src/lib/Components/BottomSheet/types.d.ts.map +1 -1
  39. package/dist/typescript/src/lib/Components/Switch/Switch.d.ts +1 -1
  40. package/dist/typescript/src/lib/Components/Switch/Switch.d.ts.map +1 -1
  41. package/dist/typescript/src/lib/Components/Switch/types.d.ts +2 -1
  42. package/dist/typescript/src/lib/Components/Switch/types.d.ts.map +1 -1
  43. package/package.json +1 -1
  44. package/src/lib/Components/AmountDisplay/AmountDisplay.test.tsx +92 -0
  45. package/src/lib/Components/AmountDisplay/AmountDisplay.tsx +37 -15
  46. package/src/lib/Components/AmountInput/AmountInput.test.tsx +166 -0
  47. package/src/lib/Components/AmountInput/AmountInput.tsx +6 -1
  48. package/src/lib/Components/Avatar/Avatar.figma.tsx +5 -0
  49. package/src/lib/Components/Avatar/Avatar.mdx +9 -0
  50. package/src/lib/Components/Avatar/Avatar.stories.tsx +41 -0
  51. package/src/lib/Components/Avatar/Avatar.test.tsx +31 -1
  52. package/src/lib/Components/Avatar/Avatar.tsx +17 -4
  53. package/src/lib/Components/Avatar/types.ts +6 -0
  54. package/src/lib/Components/BottomSheet/BottomSheet.stories.tsx +1 -0
  55. package/src/lib/Components/BottomSheet/BottomSheet.test.tsx +32 -1
  56. package/src/lib/Components/BottomSheet/BottomSheet.tsx +10 -4
  57. package/src/lib/Components/BottomSheet/BottomSheetHeader.tsx +10 -6
  58. package/src/lib/Components/BottomSheet/types.ts +9 -0
  59. package/src/lib/Components/Switch/Switch.tsx +132 -11
  60. package/src/lib/Components/Switch/types.ts +3 -1
  61. package/dist/module/lib/Components/Switch/BaseSwitch.js +0 -221
  62. package/dist/module/lib/Components/Switch/BaseSwitch.js.map +0 -1
  63. package/dist/typescript/src/lib/Components/Switch/BaseSwitch.d.ts +0 -13
  64. package/dist/typescript/src/lib/Components/Switch/BaseSwitch.d.ts.map +0 -1
  65. package/src/lib/Components/Switch/BaseSwitch.tsx +0 -249
@@ -1,10 +1,126 @@
1
1
  "use strict";
2
2
 
3
3
  import { useDisabledContext } from '@ledgerhq/lumen-utils-shared';
4
+ import { useCallback } from 'react';
5
+ import { View, StyleSheet } from 'react-native';
6
+ import Animated, { useAnimatedStyle, withTiming } from 'react-native-reanimated';
7
+ import { useStyleSheet, useTheme } from "../../../styles/index.js";
8
+ import { useTimingConfig } from "../../Animations/useTimingConfig.js";
4
9
  import { useControllableState } from "../../utils/index.js";
5
10
  import { Pressable } from "../Utility/index.js";
6
- import { BaseSwitchThumb, BaseSwitchRoot } from "./BaseSwitch.js";
7
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
+ const useSwitchStyles = ({
13
+ checked,
14
+ disabled,
15
+ size
16
+ }) => {
17
+ const {
18
+ theme
19
+ } = useTheme();
20
+ const styles = useStyleSheet(t => {
21
+ const sizes = {
22
+ sm: {
23
+ width: t.sizes.s24,
24
+ height: t.sizes.s16
25
+ },
26
+ md: {
27
+ width: t.sizes.s40,
28
+ height: t.sizes.s24
29
+ }
30
+ };
31
+ const thumbSizes = {
32
+ sm: t.sizes.s12,
33
+ md: t.sizes.s20
34
+ };
35
+ return {
36
+ root: StyleSheet.flatten([{
37
+ borderRadius: t.borderRadius.full,
38
+ padding: t.spacings.s2,
39
+ overflow: 'hidden',
40
+ ...sizes[size],
41
+ minWidth: sizes[size].width,
42
+ maxWidth: sizes[size].width,
43
+ minHeight: sizes[size].height,
44
+ maxHeight: sizes[size].height
45
+ }, !checked && !disabled && {
46
+ backgroundColor: t.colors.bg.mutedStrong
47
+ }, checked && !disabled && {
48
+ backgroundColor: t.colors.bg.active
49
+ }, disabled && {
50
+ backgroundColor: t.colors.bg.disabled
51
+ }]),
52
+ thumbWrapper: {
53
+ position: 'absolute',
54
+ top: t.spacings.s2,
55
+ left: t.spacings.s2
56
+ },
57
+ thumb: StyleSheet.flatten([{
58
+ borderRadius: t.borderRadius.full,
59
+ backgroundColor: 'white',
60
+ width: thumbSizes[size],
61
+ height: thumbSizes[size]
62
+ }, disabled && {
63
+ backgroundColor: t.colors.bg.base
64
+ }])
65
+ };
66
+ }, [checked, disabled, size]);
67
+ const thumbTranslations = {
68
+ sm: theme.spacings.s8,
69
+ md: theme.spacings.s16
70
+ };
71
+ return {
72
+ ...styles,
73
+ thumbTranslate: thumbTranslations[size]
74
+ };
75
+ };
76
+ const _worklet_8730516420979_init_data = {
77
+ code: "function SwitchTsx1(){const{withTiming,checked,translate,timing}=this.__closure;return{transform:[{translateX:withTiming(checked?translate:0,timing)}]};}",
78
+ location: "/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/Switch/Switch.tsx",
79
+ sourceMap: "{\"version\":3,\"names\":[\"SwitchTsx1\",\"withTiming\",\"checked\",\"translate\",\"timing\",\"__closure\",\"transform\",\"translateX\"],\"sources\":[\"/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/Switch/Switch.tsx\"],\"mappings\":\"AAkGI,SAAAA,WAAA,QAAAC,UAAA,CAAAC,OAAA,CAAAC,SAAA,CAAAC,MAAA,OAAAC,SAAA,OAAO,CACLC,SAAS,CAAE,CAAC,CAAEC,UAAU,CAAEN,UAAU,CAACC,OAAO,CAAGC,SAAS,CAAG,CAAC,CAAEC,MAAM,CAAE,CAAC,CACzE,CAAC\",\"ignoreList\":[]}"
80
+ };
81
+ const useAnimatedThumb = (checked, translate) => {
82
+ const timing = useTimingConfig({
83
+ duration: 200,
84
+ easing: 'easeInOut'
85
+ });
86
+
87
+ // Reanimated best practice: derive the animation reactively by calling
88
+ // `withTiming` inside `useAnimatedStyle`. When `checked` (or `translate`)
89
+ // changes the worklet re-runs and animates from the current value to the
90
+ // new target -- no shared value or effect required.
91
+ return useAnimatedStyle(function SwitchTsx1Factory({
92
+ _worklet_8730516420979_init_data,
93
+ withTiming,
94
+ checked,
95
+ translate,
96
+ timing
97
+ }) {
98
+ const _e = [new global.Error(), -5, -27];
99
+ const SwitchTsx1 = () => ({
100
+ transform: [{
101
+ translateX: withTiming(checked ? translate : 0, timing)
102
+ }]
103
+ });
104
+ SwitchTsx1.__closure = {
105
+ withTiming,
106
+ checked,
107
+ translate,
108
+ timing
109
+ };
110
+ SwitchTsx1.__workletHash = 8730516420979;
111
+ SwitchTsx1.__pluginVersion = "0.5.2";
112
+ SwitchTsx1.__initData = _worklet_8730516420979_init_data;
113
+ SwitchTsx1.__stackDetails = _e;
114
+ return SwitchTsx1;
115
+ }({
116
+ _worklet_8730516420979_init_data,
117
+ withTiming,
118
+ checked,
119
+ translate,
120
+ timing
121
+ }), [checked, translate, timing]);
122
+ };
123
+
8
124
  /**
9
125
  * The switch follows the design system tokens and supports checked, unchecked,
10
126
  * disabled, and focus states with proper active interactions.
@@ -36,6 +152,7 @@ export const Switch = ({
36
152
  defaultChecked = false,
37
153
  disabled: disabledProp,
38
154
  size = 'md',
155
+ onPress: onPressProp,
39
156
  ref,
40
157
  ...props
41
158
  }) => {
@@ -50,17 +167,36 @@ export const Switch = ({
50
167
  onChange: onCheckedChangeProp,
51
168
  defaultProp: defaultChecked
52
169
  });
170
+ const styles = useSwitchStyles({
171
+ checked: !!checked,
172
+ disabled: !!disabled,
173
+ size
174
+ });
175
+ const animatedStyle = useAnimatedThumb(!!checked, styles.thumbTranslate);
176
+ const onPress = useCallback(ev => {
177
+ if (disabled) return;
178
+ onCheckedChange(!checked);
179
+ onPressProp?.(ev);
180
+ }, [disabled, checked, onCheckedChange, onPressProp]);
53
181
  return /*#__PURE__*/_jsx(Pressable, {
54
182
  ref: ref,
55
183
  lx: lx,
56
- style: style,
184
+ role: "switch",
185
+ "aria-checked": checked,
186
+ "aria-disabled": disabled,
187
+ accessibilityState: {
188
+ checked,
189
+ disabled
190
+ },
191
+ disabled: disabled,
192
+ onPress: onPress,
193
+ style: [styles.root, style],
57
194
  ...props,
58
- children: /*#__PURE__*/_jsx(BaseSwitchRoot, {
59
- disabled: disabled,
60
- checked: checked,
61
- onCheckedChange: onCheckedChange,
62
- size: size,
63
- children: /*#__PURE__*/_jsx(BaseSwitchThumb, {})
195
+ children: /*#__PURE__*/_jsx(Animated.View, {
196
+ style: [styles.thumbWrapper, animatedStyle],
197
+ children: /*#__PURE__*/_jsx(View, {
198
+ style: styles.thumb
199
+ })
64
200
  })
65
201
  });
66
202
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useDisabledContext","useControllableState","Pressable","BaseSwitchThumb","BaseSwitchRoot","jsx","_jsx","Switch","lx","style","checked","checkedProp","onCheckedChange","onCheckedChangeProp","defaultChecked","disabled","disabledProp","size","ref","props","consumerName","mergeWith","prop","onChange","defaultProp","children"],"sourceRoot":"../../../../../src","sources":["lib/Components/Switch/Switch.tsx"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,oBAAoB,QAAQ,sBAAa;AAClD,SAASC,SAAS,QAAQ,qBAAY;AACtC,SAASC,eAAe,EAAEC,cAAc,QAAQ,iBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAI/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAGA,CAAC;EACrBC,EAAE;EACFC,KAAK;EACLC,OAAO,EAAEC,WAAW;EACpBC,eAAe,EAAEC,mBAAmB;EACpCC,cAAc,GAAG,KAAK;EACtBC,QAAQ,EAAEC,YAAY;EACtBC,IAAI,GAAG,IAAI;EACXC,GAAG;EACH,GAAGC;AACQ,CAAC,KAAK;EACjB,MAAMJ,QAAQ,GAAGf,kBAAkB,CAAC;IAClCoB,YAAY,EAAE,QAAQ;IACtBC,SAAS,EAAE;MAAEN,QAAQ,EAAEC;IAAa;EACtC,CAAC,CAAC;EACF,MAAM,CAACN,OAAO,EAAEE,eAAe,CAAC,GAAGX,oBAAoB,CAAC;IACtDqB,IAAI,EAAEX,WAAW;IACjBY,QAAQ,EAAEV,mBAAmB;IAC7BW,WAAW,EAAEV;EACf,CAAC,CAAC;EAEF,oBACER,IAAA,CAACJ,SAAS;IAACgB,GAAG,EAAEA,GAAI;IAACV,EAAE,EAAEA,EAAG;IAACC,KAAK,EAAEA,KAAM;IAAA,GAAKU,KAAK;IAAAM,QAAA,eAClDnB,IAAA,CAACF,cAAc;MACbW,QAAQ,EAAEA,QAAS;MACnBL,OAAO,EAAEA,OAAQ;MACjBE,eAAe,EAAEA,eAAgB;MACjCK,IAAI,EAAEA,IAAK;MAAAQ,QAAA,eAEXnB,IAAA,CAACH,eAAe,IAAE;IAAC,CACL;EAAC,CACR,CAAC;AAEhB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useDisabledContext","useCallback","View","StyleSheet","Animated","useAnimatedStyle","withTiming","useStyleSheet","useTheme","useTimingConfig","useControllableState","Pressable","jsx","_jsx","useSwitchStyles","checked","disabled","size","theme","styles","t","sizes","sm","width","s24","height","s16","md","s40","thumbSizes","s12","s20","root","flatten","borderRadius","full","padding","spacings","s2","overflow","minWidth","maxWidth","minHeight","maxHeight","backgroundColor","colors","bg","mutedStrong","active","thumbWrapper","position","top","left","thumb","base","thumbTranslations","s8","thumbTranslate","_worklet_8730516420979_init_data","code","location","sourceMap","useAnimatedThumb","translate","timing","duration","easing","SwitchTsx1Factory","_e","global","Error","SwitchTsx1","transform","translateX","__closure","__workletHash","__pluginVersion","__initData","__stackDetails","Switch","lx","style","checkedProp","onCheckedChange","onCheckedChangeProp","defaultChecked","disabledProp","onPress","onPressProp","ref","props","consumerName","mergeWith","prop","onChange","defaultProp","animatedStyle","ev","role","accessibilityState","children"],"sourceRoot":"../../../../../src","sources":["lib/Components/Switch/Switch.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"AmountDisplay.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/AmountDisplay/AmountDisplay.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,kBAAkB,EAKnB,MAAM,SAAS,CAAC;AA+MjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,MAAc,EACd,OAAe,EACf,OAAc,EACd,IAAW,EACX,GAAG,KAAK,EACT,EAAE,kBAAkB,2CA2EpB"}
1
+ {"version":3,"file":"AmountDisplay.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/AmountDisplay/AmountDisplay.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,kBAAkB,EAKnB,MAAM,SAAS,CAAC;AAqOjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,MAAc,EACd,OAAe,EACf,OAAc,EACd,IAAW,EACX,GAAG,KAAK,EACT,EAAE,kBAAkB,2CA2EpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"AmountInput.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/AmountInput/AmountInput.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,oNAkBzB,gBAAgB,4CA0JlB,CAAC"}
1
+ {"version":3,"file":"AmountInput.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/AmountInput/AmountInput.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,oNAkBzB,gBAAgB,4CA+JlB,CAAC"}
@@ -15,5 +15,5 @@ import type { AvatarProps } from './types';
15
15
  * // With notification indicator
16
16
  * <Avatar src="https://example.com/photo.jpg" showNotification />
17
17
  */
18
- export declare const Avatar: ({ lx, style, src, alt, size, showNotification: showNotificationProp, testID, ref, ...props }: AvatarProps) => import("react/jsx-runtime").JSX.Element;
18
+ export declare const Avatar: ({ lx, style, src, alt, appearance, size, showNotification: showNotificationProp, testID, ref, ...props }: AvatarProps) => import("react/jsx-runtime").JSX.Element;
19
19
  //# sourceMappingURL=Avatar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Avatar/Avatar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAmD3C;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,MAAM,GAAI,8FAUpB,WAAW,4CAyDb,CAAC"}
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Avatar/Avatar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA+D3C;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,MAAM,GAAI,0GAWpB,WAAW,4CAyDb,CAAC"}
@@ -10,6 +10,12 @@ export type AvatarProps = {
10
10
  * @optional
11
11
  */
12
12
  alt?: string;
13
+ /**
14
+ * The visual appearance of the avatar background: `gray` or `transparent`.
15
+ * @optional
16
+ * @default transparent
17
+ */
18
+ appearance?: 'gray' | 'transparent';
13
19
  /**
14
20
  * The size variant of the avatar.
15
21
  * @optional
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Avatar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Avatar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACpC;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import type { BottomSheetProps } from './types';
2
2
  declare const useBottomSheetContext: <ContextRequired extends boolean = boolean>({ consumerName, contextRequired, }: {
3
3
  consumerName: string;
4
4
  contextRequired: ContextRequired;
5
- }) => ContextRequired extends true ? Pick<BottomSheetProps, "onBack" | "hideCloseButton"> : Partial<Pick<BottomSheetProps, "onBack" | "hideCloseButton">>;
6
- export declare const BottomSheet: ({ onOpen, onClose, onDismiss, onBack, onAnimate, children, hideCloseButton, enablePanDownToClose, enableDynamicSizing, enableBlurKeyboardOnGesture, enableHandlePanningGesture, maxDynamicContentSize, detached, hideBackdrop, backdropPressBehavior, onBackdropPress, onChange, snapPoints, backgroundComponent, hideHandle, ref, ...props }: BottomSheetProps) => import("react/jsx-runtime").JSX.Element;
5
+ }) => ContextRequired extends true ? Pick<BottomSheetProps, "onBack" | "hideCloseButton" | "onHeaderClosePressed"> : Partial<Pick<BottomSheetProps, "onBack" | "hideCloseButton" | "onHeaderClosePressed">>;
6
+ export declare const BottomSheet: ({ onOpen, onClose, onDismiss, onHeaderClosePressed, onBack, onAnimate, children, hideCloseButton, enablePanDownToClose, enableDynamicSizing, enableBlurKeyboardOnGesture, enableHandlePanningGesture, maxDynamicContentSize, detached, hideBackdrop, backdropPressBehavior, onBackdropPress, onChange, snapPoints, backgroundComponent, hideHandle, ref, ...props }: BottomSheetProps) => import("react/jsx-runtime").JSX.Element;
7
7
  export { useBottomSheetContext };
8
8
  //# sourceMappingURL=BottomSheet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAiDhD,QAAA,MAA4B,qBAAqB;;;yJAG9C,CAAC;AAEJ,eAAO,MAAM,WAAW,GAAI,+UAuBzB,gBAAgB,4CA4HlB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAiDhD,QAAA,MAA4B,qBAAqB;;;2MAM/B,CAAC;AAEnB,eAAO,MAAM,WAAW,GAAI,qWAwBzB,gBAAgB,4CA8HlB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheetHeader.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/BottomSheet/BottomSheetHeader.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AA+EtD,eAAO,MAAM,iBAAiB,GAAI,+DAQ/B,sBAAsB,mDA+ExB,CAAC"}
1
+ {"version":3,"file":"BottomSheetHeader.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/BottomSheet/BottomSheetHeader.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AA+EtD,eAAO,MAAM,iBAAiB,GAAI,+DAQ/B,sBAAsB,mDAmFxB,CAAC"}
@@ -67,6 +67,15 @@ export type BottomSheetProps = PropsWithChildren & {
67
67
  * @default undefined
68
68
  */
69
69
  onClose?: () => void;
70
+ /**
71
+ * Callback function to handle when the close button in the header is pressed.
72
+ * This is distinct from {@link onClose} and {@link onDismiss}—those will always
73
+ * also be called after this event if the close button results in a full sheet dismissal.
74
+ * Use this to react specifically to header close intent (e.g., tracking, custom UI),
75
+ * but do cleanup/unmount logic in {@link onClose} or {@link onDismiss}.
76
+ * @default undefined
77
+ */
78
+ onHeaderClosePressed?: () => void;
70
79
  /**
71
80
  * Callback function to handle the open event.
72
81
  * @default undefined
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/BottomSheet/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/BottomSheet/types.ts"],"names":[],"mappings":"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"}
@@ -22,5 +22,5 @@ import type { SwitchProps } from './types';
22
22
  * // Uncontrolled switch with default state
23
23
  * <Switch defaultChecked={true} onCheckedChange={handleChange} />
24
24
  */
25
- export declare const Switch: ({ lx, style, checked: checkedProp, onCheckedChange: onCheckedChangeProp, defaultChecked, disabled: disabledProp, size, ref, ...props }: SwitchProps) => import("react/jsx-runtime").JSX.Element;
25
+ export declare const Switch: ({ lx, style, checked: checkedProp, onCheckedChange: onCheckedChangeProp, defaultChecked, disabled: disabledProp, size, onPress: onPressProp, ref, ...props }: SwitchProps) => import("react/jsx-runtime").JSX.Element;
26
26
  //# sourceMappingURL=Switch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Switch/Switch.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,MAAM,GAAI,wIAUpB,WAAW,4CAuBb,CAAC"}
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Switch/Switch.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,SAAS,CAAC;AA6FvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,MAAM,GAAI,8JAWpB,WAAW,4CA6Cb,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { StyledPressableProps } from '../../../styles';
2
+ export type SwitchSize = 'sm' | 'md';
2
3
  export type SwitchProps = {
3
4
  /**
4
5
  * The disabled state of the switch.
@@ -14,7 +15,7 @@ export type SwitchProps = {
14
15
  * The size of the switch.
15
16
  * @default 'md'
16
17
  */
17
- size?: 'sm' | 'md';
18
+ size?: SwitchSize;
18
19
  /**
19
20
  * The callback function called when the checked state changes.
20
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Switch/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Switch/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/lumen-ui-rnative",
3
- "version": "0.1.38",
3
+ "version": "0.1.40",
4
4
  "license": "Apache-2.0",
5
5
  "keywords": [
6
6
  "react-native",
@@ -31,6 +31,7 @@ describe('AmountDisplay', () => {
31
31
  accessibilityValue?: { text?: string };
32
32
  [key: string]: unknown;
33
33
  };
34
+ findAll: (predicate: (node: TestNode) => boolean) => TestNode[];
34
35
  };
35
36
 
36
37
  const getDigitStripValues = (): number[] => {
@@ -43,6 +44,32 @@ describe('AmountDisplay', () => {
43
44
  .map((node: TestNode) => Number(node.props.accessibilityValue?.text));
44
45
  };
45
46
 
47
+ const getDigitStripWidths = (): unknown[] => {
48
+ return screen.root
49
+ .findAll(
50
+ (node: TestNode) =>
51
+ typeof node.type !== 'function' &&
52
+ node.props.accessibilityValue?.text !== undefined,
53
+ )
54
+ .map(
55
+ (node: TestNode) =>
56
+ (node.props.style as { width?: unknown } | undefined)?.width,
57
+ );
58
+ };
59
+
60
+ const getDigitStripContainers = (): TestNode[] => {
61
+ return screen.root.findAll(
62
+ (node: TestNode) =>
63
+ typeof node.type !== 'function' &&
64
+ node.props.accessibilityValue?.text !== undefined,
65
+ );
66
+ };
67
+
68
+ const getStyleOverflow = (node: TestNode): unknown => {
69
+ const style = node.props.style as { overflow?: unknown } | undefined;
70
+ return style?.overflow;
71
+ };
72
+
46
73
  it('renders with basic formatter', () => {
47
74
  const formatter = createFormatter();
48
75
  render(
@@ -240,4 +267,69 @@ describe('AmountDisplay', () => {
240
267
 
241
268
  expect(screen.getAllByText(',', hidden)).toHaveLength(2);
242
269
  });
270
+
271
+ it('animates the digit strip width when animate is true', () => {
272
+ const formatter = createFormatter();
273
+ render(
274
+ <TestWrapper>
275
+ <AmountDisplay value={1234.56} formatter={formatter} animate={true} />
276
+ </TestWrapper>,
277
+ );
278
+
279
+ const widths = getDigitStripWidths();
280
+ expect(widths.length).toBeGreaterThan(0);
281
+ widths.forEach((width) => {
282
+ expect(typeof width).not.toBe('number');
283
+ });
284
+ });
285
+
286
+ it('uses a static digit strip width when animate is false', () => {
287
+ const formatter = createFormatter();
288
+ render(
289
+ <TestWrapper>
290
+ <AmountDisplay value={1234.56} formatter={formatter} animate={false} />
291
+ </TestWrapper>,
292
+ );
293
+
294
+ const widths = getDigitStripWidths();
295
+ expect(widths.length).toBeGreaterThan(0);
296
+ widths.forEach((width) => {
297
+ expect(typeof width).toBe('number');
298
+ });
299
+ });
300
+
301
+ describe('digit strip clipping', () => {
302
+ it('does not set overflow:hidden on the digit strip container', () => {
303
+ const formatter = createFormatter();
304
+ render(
305
+ <TestWrapper>
306
+ <AmountDisplay value={1234.56} formatter={formatter} />
307
+ </TestWrapper>,
308
+ );
309
+
310
+ const containers = getDigitStripContainers();
311
+ expect(containers.length).toBeGreaterThan(0);
312
+ containers.forEach((container) => {
313
+ expect(getStyleOverflow(container)).not.toBe('hidden');
314
+ });
315
+ });
316
+
317
+ it('clips overflow on an inner wrapper inside each digit strip', () => {
318
+ const formatter = createFormatter();
319
+ render(
320
+ <TestWrapper>
321
+ <AmountDisplay value={1234.56} formatter={formatter} />
322
+ </TestWrapper>,
323
+ );
324
+
325
+ const containers = getDigitStripContainers();
326
+ expect(containers.length).toBeGreaterThan(0);
327
+ containers.forEach((container) => {
328
+ const clippingWrapper = container.findAll(
329
+ (node: TestNode) => getStyleOverflow(node) === 'hidden',
330
+ );
331
+ expect(clippingWrapper.length).toBeGreaterThan(0);
332
+ });
333
+ });
334
+ });
243
335
  });
@@ -164,6 +164,12 @@ const useAnimatedDigitStrip = ({
164
164
  return { animatedStyle };
165
165
  };
166
166
 
167
+ // Horizontal breathing room for the clip box so glyphs that are slightly wider
168
+ // than the measured `targetWidth` are not cut on their left/right edges. RN has
169
+ // no per-axis overflow, so we extend the clip box horizontally while keeping the
170
+ // vertical clip tight to `lineHeight`
171
+ const HORIZONTAL_CLIP_PADDING = 8;
172
+
167
173
  const DigitStrip = memo(
168
174
  ({ value, textStyle, animate, widths }: DigitStripProps) => {
169
175
  const targetWidth = widths[value];
@@ -179,23 +185,39 @@ const DigitStrip = memo(
179
185
 
180
186
  return (
181
187
  <Animated.View
182
- style={{ height: lineHeight, overflow: 'hidden', width: width }}
188
+ style={{
189
+ height: lineHeight,
190
+ width: animate ? width : targetWidth,
191
+ }}
183
192
  accessibilityValue={{ text: String(value) }}
184
193
  >
185
- <Animated.View style={[animatedStyle, { alignItems: 'center' }]}>
186
- {DIGITS.map((d) => (
187
- <Text
188
- allowFontScaling={false}
189
- key={d}
190
- style={[
191
- textStyle,
192
- RuntimeConstants.isAndroid && { height: lineHeight },
193
- ]}
194
- >
195
- {d}
196
- </Text>
197
- ))}
198
- </Animated.View>
194
+ <View
195
+ pointerEvents='none'
196
+ style={{
197
+ position: 'absolute',
198
+ top: 0,
199
+ bottom: 0,
200
+ left: -HORIZONTAL_CLIP_PADDING,
201
+ right: -HORIZONTAL_CLIP_PADDING,
202
+ overflow: 'hidden',
203
+ alignItems: 'center',
204
+ }}
205
+ >
206
+ <Animated.View style={[animatedStyle, { alignItems: 'center' }]}>
207
+ {DIGITS.map((d) => (
208
+ <Text
209
+ allowFontScaling={false}
210
+ key={d}
211
+ style={[
212
+ textStyle,
213
+ RuntimeConstants.isAndroid && { height: lineHeight },
214
+ ]}
215
+ >
216
+ {d}
217
+ </Text>
218
+ ))}
219
+ </Animated.View>
220
+ </View>
199
221
  </Animated.View>
200
222
  );
201
223
  },