@ledgerhq/lumen-ui-rnative 0.1.40 → 0.1.41

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/AmountInput/AmountInput.js +49 -159
  2. package/dist/module/lib/Components/AmountInput/AmountInput.js.map +1 -1
  3. package/dist/module/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.js +149 -0
  4. package/dist/module/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.js.map +1 -0
  5. package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.js +22 -0
  6. package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.js.map +1 -0
  7. package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.test.js +59 -0
  8. package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.test.js.map +1 -0
  9. package/dist/module/lib/Components/BottomSheet/BottomSheetHeader.js +0 -3
  10. package/dist/module/lib/Components/BottomSheet/BottomSheetHeader.js.map +1 -1
  11. package/dist/module/lib/Components/Icon/Icon.test.js +1 -1
  12. package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts +1 -1
  13. package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts.map +1 -1
  14. package/dist/typescript/src/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.d.ts +16 -0
  15. package/dist/typescript/src/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.d.ts.map +1 -0
  16. package/dist/typescript/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.d.ts +18 -0
  17. package/dist/typescript/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.d.ts.map +1 -0
  18. package/dist/typescript/src/lib/Components/BottomSheet/BottomSheetHeader.d.ts +1 -1
  19. package/dist/typescript/src/lib/Components/BottomSheet/BottomSheetHeader.d.ts.map +1 -1
  20. package/package.json +2 -2
  21. package/src/lib/Components/AmountInput/AmountInput.tsx +55 -115
  22. package/src/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.ts +100 -0
  23. package/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.test.ts +62 -0
  24. package/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.ts +48 -0
  25. package/src/lib/Components/BottomSheet/BottomSheetHeader.tsx +0 -4
  26. package/src/lib/Components/Icon/Icon.test.tsx +1 -1
@@ -1,27 +1,23 @@
1
1
  "use strict";
2
2
 
3
- import { getFontSize, textFormatter, useDisabledContext } from '@ledgerhq/lumen-utils-shared';
4
- import { useEffect, useImperativeHandle, useRef, useState } from 'react';
3
+ import { useDisabledContext } from '@ledgerhq/lumen-utils-shared';
4
+ import { useImperativeHandle, useRef, useState } from 'react';
5
5
  import { Pressable, StyleSheet, TextInput, View } from 'react-native';
6
- import Animated, { Easing, useAnimatedStyle, useSharedValue, withRepeat, withSequence, withTiming } from 'react-native-reanimated';
7
- import { useStyleSheet, useTheme } from "../../../styles/index.js";
6
+ import Animated from 'react-native-reanimated';
7
+ import { useStyleSheet } from "../../../styles/index.js";
8
8
  import { Box } from "../Utility/index.js";
9
+ import { useAmountInputAnimations } from "./useAmountInputAnimations/useAmountInputAnimations.js";
10
+ import { useAmountInputFormatting } from "./useAmountInputFormatting/useAmountInputFormatting.js";
9
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
- const _worklet_6265560095994_init_data = {
11
- code: "function AmountInputTsx1(){const{translateX,animatedFontSize}=this.__closure;return{transform:[{translateX:translateX.value}],fontSize:animatedFontSize.value,letterSpacing:0};}",
12
- location: "/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/AmountInput.tsx",
13
- sourceMap: "{\"version\":3,\"names\":[\"AmountInputTsx1\",\"translateX\",\"animatedFontSize\",\"__closure\",\"transform\",\"value\",\"fontSize\",\"letterSpacing\"],\"sources\":[\"/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/AmountInput.tsx\"],\"mappings\":\"AA6EI,SAAAA,gBAAA,QAAAC,UAAA,CAAAC,gBAAA,OAAAC,SAAA,OAAO,CACLC,SAAS,CAAE,CAAC,CAAEH,UAAU,CAAEA,UAAU,CAACI,KAAM,CAAC,CAAC,CAC7CC,QAAQ,CAAEJ,gBAAgB,CAACG,KAAK,CAChCE,aAAa,CAAE,CACjB,CAAC\",\"ignoreList\":[]}"
14
- };
15
- const _worklet_2185066569390_init_data = {
16
- code: "function AmountInputTsx2(){const{animatedFontSize}=this.__closure;return{fontSize:animatedFontSize.value,letterSpacing:0};}",
17
- location: "/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/AmountInput.tsx",
18
- sourceMap: "{\"version\":3,\"names\":[\"AmountInputTsx2\",\"animatedFontSize\",\"__closure\",\"fontSize\",\"value\",\"letterSpacing\"],\"sources\":[\"/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/AmountInput.tsx\"],\"mappings\":\"AAsFI,SAAAA,gBAAA,QAAAC,gBAAA,OAAAC,SAAA,OAAO,CACLC,QAAQ,CAAEF,gBAAgB,CAACG,KAAK,CAChCC,aAAa,CAAE,CACjB,CAAC\",\"ignoreList\":[]}"
19
- };
20
- const _worklet_7003701264031_init_data = {
21
- code: "function AmountInputTsx3(){const{caretOpacity,size,caretFixedHeight,animatedFontSize}=this.__closure;return{opacity:caretOpacity.value,height:size==='sm'?caretFixedHeight:animatedFontSize.value};}",
22
- location: "/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/AmountInput.tsx",
23
- sourceMap: "{\"version\":3,\"names\":[\"AmountInputTsx3\",\"caretOpacity\",\"size\",\"caretFixedHeight\",\"animatedFontSize\",\"__closure\",\"opacity\",\"value\",\"height\"],\"sources\":[\"/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/AmountInput.tsx\"],\"mappings\":\"AA8FI,SAAAA,gBAAA,QAAAC,YAAA,CAAAC,IAAA,CAAAC,gBAAA,CAAAC,gBAAA,OAAAC,SAAA,OAAO,CACLC,OAAO,CAAEL,YAAY,CAACM,KAAK,CAC3BC,MAAM,CAAEN,IAAI,GAAK,IAAI,CAAGC,gBAAgB,CAAGC,gBAAgB,CAACG,KAC9D,CAAC\",\"ignoreList\":[]}"
24
- };
12
+ const Currency = ({
13
+ style,
14
+ children
15
+ }) => /*#__PURE__*/_jsx(Animated.Text, {
16
+ style: style,
17
+ allowFontScaling: false,
18
+ children: children
19
+ });
20
+
25
21
  /**
26
22
  * AmountInput component for handling numeric input with currency display.
27
23
  * This is a controlled component - both `value` and `onChange` props are required.
@@ -47,12 +43,6 @@ export const AmountInput = ({
47
43
  ...props
48
44
  }) => {
49
45
  const inputRef = useRef(null);
50
- const inputValue = textFormatter(String(value), {
51
- allowDecimals,
52
- thousandsSeparator,
53
- maxIntegerLength,
54
- maxDecimalLength
55
- });
56
46
  const [isFocused, setIsFocused] = useState(false);
57
47
  const disabled = useDisabledContext({
58
48
  consumerName: 'AmountInput',
@@ -60,143 +50,37 @@ export const AmountInput = ({
60
50
  disabled: disabledProp
61
51
  }
62
52
  });
63
- const translateX = useSharedValue(0);
64
- const animatedFontSize = useSharedValue(getFontSize(inputValue, size));
65
- const caretOpacity = useSharedValue(0);
66
- useImperativeHandle(ref, () => inputRef.current, []);
67
53
  const {
68
- theme
69
- } = useTheme();
54
+ formattedValue,
55
+ handleChangeText
56
+ } = useAmountInputFormatting({
57
+ value,
58
+ onChangeText,
59
+ formatOptions: {
60
+ allowDecimals,
61
+ thousandsSeparator,
62
+ maxIntegerLength,
63
+ maxDecimalLength
64
+ }
65
+ });
66
+ const {
67
+ animatedInputStyle,
68
+ animatedCurrencyStyle,
69
+ animatedCaretStyle
70
+ } = useAmountInputAnimations({
71
+ formattedValue,
72
+ size,
73
+ isFocused,
74
+ disabled
75
+ });
70
76
  const styles = useStyles({
71
77
  size,
72
78
  align,
73
- hasValue: !!inputValue,
79
+ hasValue: !!formattedValue,
74
80
  isEditable: !disabled,
75
81
  isInvalid
76
82
  });
77
- const caretFixedHeight = size === 'sm' ? theme.sizes.s28 : 0;
78
- const animatedInputStyle = useAnimatedStyle(function AmountInputTsx1Factory({
79
- _worklet_6265560095994_init_data,
80
- translateX,
81
- animatedFontSize
82
- }) {
83
- const _e = [new global.Error(), -3, -27];
84
- const AmountInputTsx1 = () => ({
85
- transform: [{
86
- translateX: translateX.value
87
- }],
88
- fontSize: animatedFontSize.value,
89
- letterSpacing: 0
90
- });
91
- AmountInputTsx1.__closure = {
92
- translateX,
93
- animatedFontSize
94
- };
95
- AmountInputTsx1.__workletHash = 6265560095994;
96
- AmountInputTsx1.__pluginVersion = "0.5.2";
97
- AmountInputTsx1.__initData = _worklet_6265560095994_init_data;
98
- AmountInputTsx1.__stackDetails = _e;
99
- return AmountInputTsx1;
100
- }({
101
- _worklet_6265560095994_init_data,
102
- translateX,
103
- animatedFontSize
104
- }), [translateX, animatedFontSize]);
105
- const animatedCurrencyStyle = useAnimatedStyle(function AmountInputTsx2Factory({
106
- _worklet_2185066569390_init_data,
107
- animatedFontSize
108
- }) {
109
- const _e = [new global.Error(), -2, -27];
110
- const AmountInputTsx2 = () => ({
111
- fontSize: animatedFontSize.value,
112
- letterSpacing: 0
113
- });
114
- AmountInputTsx2.__closure = {
115
- animatedFontSize
116
- };
117
- AmountInputTsx2.__workletHash = 2185066569390;
118
- AmountInputTsx2.__pluginVersion = "0.5.2";
119
- AmountInputTsx2.__initData = _worklet_2185066569390_init_data;
120
- AmountInputTsx2.__stackDetails = _e;
121
- return AmountInputTsx2;
122
- }({
123
- _worklet_2185066569390_init_data,
124
- animatedFontSize
125
- }), [animatedFontSize]);
126
- const animatedCaretStyle = useAnimatedStyle(function AmountInputTsx3Factory({
127
- _worklet_7003701264031_init_data,
128
- caretOpacity,
129
- size,
130
- caretFixedHeight,
131
- animatedFontSize
132
- }) {
133
- const _e = [new global.Error(), -5, -27];
134
- const AmountInputTsx3 = () => ({
135
- opacity: caretOpacity.value,
136
- height: size === 'sm' ? caretFixedHeight : animatedFontSize.value
137
- });
138
- AmountInputTsx3.__closure = {
139
- caretOpacity,
140
- size,
141
- caretFixedHeight,
142
- animatedFontSize
143
- };
144
- AmountInputTsx3.__workletHash = 7003701264031;
145
- AmountInputTsx3.__pluginVersion = "0.5.2";
146
- AmountInputTsx3.__initData = _worklet_7003701264031_init_data;
147
- AmountInputTsx3.__stackDetails = _e;
148
- return AmountInputTsx3;
149
- }({
150
- _worklet_7003701264031_init_data,
151
- caretOpacity,
152
- size,
153
- caretFixedHeight,
154
- animatedFontSize
155
- }), [caretOpacity, animatedFontSize, size, caretFixedHeight]);
156
- useEffect(() => {
157
- const newSize = getFontSize(inputValue, size);
158
- translateX.value = withSequence(withTiming(4, {
159
- duration: 0
160
- }), withTiming(0, {
161
- duration: 250,
162
- easing: Easing.bezier(0.4, 0, 0.2, 1)
163
- }));
164
- animatedFontSize.value = withTiming(newSize, {
165
- duration: 250,
166
- easing: Easing.bezier(0.4, 0, 0.2, 1)
167
- });
168
- }, [inputValue, size, animatedFontSize, translateX]);
169
- useEffect(() => {
170
- if (isFocused && !disabled) {
171
- caretOpacity.value = withRepeat(withSequence(withTiming(1, {
172
- duration: 150,
173
- easing: Easing.ease
174
- }), withTiming(1, {
175
- duration: 500
176
- }), withTiming(0, {
177
- duration: 150,
178
- easing: Easing.ease
179
- }), withTiming(0, {
180
- duration: 500
181
- })), -1, false);
182
- } else {
183
- caretOpacity.value = 0;
184
- }
185
- }, [isFocused, disabled, caretOpacity]);
186
- const handleChangeText = text => {
187
- const formatted = textFormatter(text, {
188
- allowDecimals,
189
- thousandsSeparator,
190
- maxIntegerLength,
191
- maxDecimalLength
192
- });
193
- onChangeText(formatted);
194
- };
195
- const CurrencyText = currencyText ? /*#__PURE__*/_jsx(Animated.Text, {
196
- style: [styles.currency, animatedCurrencyStyle],
197
- allowFontScaling: false,
198
- children: currencyText
199
- }) : null;
83
+ useImperativeHandle(ref, () => inputRef.current, []);
200
84
  const handlePress = () => {
201
85
  if (!disabled) {
202
86
  inputRef.current?.focus();
@@ -209,7 +93,7 @@ export const AmountInput = ({
209
93
  ref: inputRef,
210
94
  keyboardType: "decimal-pad",
211
95
  editable: editable !== false && !disabled,
212
- value: inputValue,
96
+ value: formattedValue,
213
97
  onChangeText: handleChangeText,
214
98
  onFocus: e => {
215
99
  setIsFocused(true);
@@ -227,13 +111,19 @@ export const AmountInput = ({
227
111
  onPress: handlePress,
228
112
  style: styles.pressable,
229
113
  accessibilityLabel: props.accessibilityLabel || 'Amount input',
230
- children: [currencyPosition === 'left' && CurrencyText, /*#__PURE__*/_jsx(Animated.Text, {
114
+ children: [currencyText && currencyPosition === 'left' && /*#__PURE__*/_jsx(Currency, {
115
+ style: [styles.currency, animatedCurrencyStyle],
116
+ children: currencyText
117
+ }), /*#__PURE__*/_jsx(Animated.Text, {
231
118
  style: [styles.displayText, animatedInputStyle, style],
232
119
  allowFontScaling: false,
233
- children: inputValue || '0'
120
+ children: formattedValue || '0'
234
121
  }), /*#__PURE__*/_jsx(Animated.View, {
235
122
  style: [styles.caret, animatedCaretStyle]
236
- }), currencyPosition === 'right' && CurrencyText]
123
+ }), currencyText && currencyPosition === 'right' && /*#__PURE__*/_jsx(Currency, {
124
+ style: [styles.currency, animatedCurrencyStyle],
125
+ children: currencyText
126
+ })]
237
127
  })
238
128
  })]
239
129
  });
@@ -1 +1 @@
1
- {"version":3,"names":["getFontSize","textFormatter","useDisabledContext","useEffect","useImperativeHandle","useRef","useState","Pressable","StyleSheet","TextInput","View","Animated","Easing","useAnimatedStyle","useSharedValue","withRepeat","withSequence","withTiming","useStyleSheet","useTheme","Box","jsx","_jsx","jsxs","_jsxs","_worklet_6265560095994_init_data","code","location","sourceMap","_worklet_2185066569390_init_data","_worklet_7003701264031_init_data","AmountInput","lx","style","size","align","currencyText","currencyPosition","editable","disabled","disabledProp","maxIntegerLength","maxDecimalLength","allowDecimals","thousandsSeparator","value","onChangeText","isInvalid","ref","props","inputRef","inputValue","String","isFocused","setIsFocused","consumerName","mergeWith","translateX","animatedFontSize","caretOpacity","current","theme","styles","useStyles","hasValue","isEditable","caretFixedHeight","sizes","s28","animatedInputStyle","AmountInputTsx1Factory","_e","global","Error","AmountInputTsx1","transform","fontSize","letterSpacing","__closure","__workletHash","__pluginVersion","__initData","__stackDetails","animatedCurrencyStyle","AmountInputTsx2Factory","AmountInputTsx2","animatedCaretStyle","AmountInputTsx3Factory","AmountInputTsx3","opacity","height","newSize","duration","easing","bezier","ease","handleChangeText","text","formatted","CurrencyText","Text","currency","allowFontScaling","children","handlePress","focus","container","keyboardType","onFocus","e","onBlur","hiddenInput","alignRow","onPress","pressable","accessibilityLabel","displayText","caret","SIZE_TYPOGRAPHY","md","sm","ALIGN_ROW_JUSTIFY","center","start","end","t","typography","typographies","displayHeight","s56","s36","position","width","full","flexDirection","justifyContent","alignItems","flatten","backgroundColor","color","colors","base","mutedSubtle","error","marginHorizontal","spacings","s2","active"],"sourceRoot":"../../../../../src","sources":["lib/Components/AmountInput/AmountInput.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useDisabledContext","useImperativeHandle","useRef","useState","Pressable","StyleSheet","TextInput","View","Animated","useStyleSheet","Box","useAmountInputAnimations","useAmountInputFormatting","jsx","_jsx","jsxs","_jsxs","Currency","style","children","Text","allowFontScaling","AmountInput","lx","size","align","currencyText","currencyPosition","editable","disabled","disabledProp","maxIntegerLength","maxDecimalLength","allowDecimals","thousandsSeparator","value","onChangeText","isInvalid","ref","props","inputRef","isFocused","setIsFocused","consumerName","mergeWith","formattedValue","handleChangeText","formatOptions","animatedInputStyle","animatedCurrencyStyle","animatedCaretStyle","styles","useStyles","hasValue","isEditable","current","handlePress","focus","container","keyboardType","onFocus","e","onBlur","hiddenInput","alignRow","onPress","pressable","accessibilityLabel","currency","displayText","caret","SIZE_TYPOGRAPHY","md","sm","ALIGN_ROW_JUSTIFY","center","start","end","t","typography","typographies","displayHeight","sizes","s56","s36","position","width","full","height","opacity","flexDirection","justifyContent","alignItems","flatten","backgroundColor","color","colors","text","base","mutedSubtle","error","marginHorizontal","spacings","s2","active"],"sourceRoot":"../../../../../src","sources":["lib/Components/AmountInput/AmountInput.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ import { getFontSize } from '@ledgerhq/lumen-utils-shared';
4
+ import { useEffect } from 'react';
5
+ import { Easing, useAnimatedStyle, useSharedValue, withRepeat, withSequence, withTiming } from 'react-native-reanimated';
6
+ import { useTheme } from "../../../../styles/index.js";
7
+ const _worklet_2992714507236_init_data = {
8
+ code: "function useAmountInputAnimationsTs1(){const{translateX,animatedFontSize}=this.__closure;return{transform:[{translateX:translateX.value}],fontSize:animatedFontSize.value,letterSpacing:0};}",
9
+ location: "/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.ts",
10
+ sourceMap: "{\"version\":3,\"names\":[\"useAmountInputAnimationsTs1\",\"translateX\",\"animatedFontSize\",\"__closure\",\"transform\",\"value\",\"fontSize\",\"letterSpacing\"],\"sources\":[\"/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.ts\"],\"mappings\":\"AAwCI,SAAAA,4BAAA,QAAAC,UAAA,CAAAC,gBAAA,OAAAC,SAAA,OAAO,CACLC,SAAS,CAAE,CAAC,CAAEH,UAAU,CAAEA,UAAU,CAACI,KAAM,CAAC,CAAC,CAC7CC,QAAQ,CAAEJ,gBAAgB,CAACG,KAAK,CAChCE,aAAa,CAAE,CACjB,CAAC\",\"ignoreList\":[]}"
11
+ };
12
+ const _worklet_14297416252336_init_data = {
13
+ code: "function useAmountInputAnimationsTs2(){const{animatedFontSize}=this.__closure;return{fontSize:animatedFontSize.value,letterSpacing:0};}",
14
+ location: "/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.ts",
15
+ sourceMap: "{\"version\":3,\"names\":[\"useAmountInputAnimationsTs2\",\"animatedFontSize\",\"__closure\",\"fontSize\",\"value\",\"letterSpacing\"],\"sources\":[\"/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.ts\"],\"mappings\":\"AAiDI,SAAAA,4BAAA,QAAAC,gBAAA,OAAAC,SAAA,OAAO,CACLC,QAAQ,CAAEF,gBAAgB,CAACG,KAAK,CAChCC,aAAa,CAAE,CACjB,CAAC\",\"ignoreList\":[]}"
16
+ };
17
+ const _worklet_6630748204929_init_data = {
18
+ code: "function useAmountInputAnimationsTs3(){const{caretOpacity,size,caretFixedHeight,animatedFontSize}=this.__closure;return{opacity:caretOpacity.value,height:size==='sm'?caretFixedHeight:animatedFontSize.value};}",
19
+ location: "/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.ts",
20
+ sourceMap: "{\"version\":3,\"names\":[\"useAmountInputAnimationsTs3\",\"caretOpacity\",\"size\",\"caretFixedHeight\",\"animatedFontSize\",\"__closure\",\"opacity\",\"value\",\"height\"],\"sources\":[\"/home/runner/work/lumen/lumen/libs/ui-rnative/src/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.ts\"],\"mappings\":\"AAyDI,SAAAA,4BAAA,QAAAC,YAAA,CAAAC,IAAA,CAAAC,gBAAA,CAAAC,gBAAA,OAAAC,SAAA,OAAO,CACLC,OAAO,CAAEL,YAAY,CAACM,KAAK,CAC3BC,MAAM,CAAEN,IAAI,GAAK,IAAI,CAAGC,gBAAgB,CAAGC,gBAAgB,CAACG,KAC9D,CAAC\",\"ignoreList\":[]}"
21
+ };
22
+ export const useAmountInputAnimations = ({
23
+ formattedValue,
24
+ size,
25
+ isFocused,
26
+ disabled
27
+ }) => {
28
+ const {
29
+ theme
30
+ } = useTheme();
31
+ const caretFixedHeight = size === 'sm' ? theme.sizes.s28 : 0;
32
+ const translateX = useSharedValue(0);
33
+ const animatedFontSize = useSharedValue(getFontSize(formattedValue, size));
34
+ const caretOpacity = useSharedValue(0);
35
+ const animatedInputStyle = useAnimatedStyle(function useAmountInputAnimationsTs1Factory({
36
+ _worklet_2992714507236_init_data,
37
+ translateX,
38
+ animatedFontSize
39
+ }) {
40
+ const _e = [new global.Error(), -3, -27];
41
+ const useAmountInputAnimationsTs1 = () => ({
42
+ transform: [{
43
+ translateX: translateX.value
44
+ }],
45
+ fontSize: animatedFontSize.value,
46
+ letterSpacing: 0
47
+ });
48
+ useAmountInputAnimationsTs1.__closure = {
49
+ translateX,
50
+ animatedFontSize
51
+ };
52
+ useAmountInputAnimationsTs1.__workletHash = 2992714507236;
53
+ useAmountInputAnimationsTs1.__pluginVersion = "0.5.2";
54
+ useAmountInputAnimationsTs1.__initData = _worklet_2992714507236_init_data;
55
+ useAmountInputAnimationsTs1.__stackDetails = _e;
56
+ return useAmountInputAnimationsTs1;
57
+ }({
58
+ _worklet_2992714507236_init_data,
59
+ translateX,
60
+ animatedFontSize
61
+ }), [translateX, animatedFontSize]);
62
+ const animatedCurrencyStyle = useAnimatedStyle(function useAmountInputAnimationsTs2Factory({
63
+ _worklet_14297416252336_init_data,
64
+ animatedFontSize
65
+ }) {
66
+ const _e = [new global.Error(), -2, -27];
67
+ const useAmountInputAnimationsTs2 = () => ({
68
+ fontSize: animatedFontSize.value,
69
+ letterSpacing: 0
70
+ });
71
+ useAmountInputAnimationsTs2.__closure = {
72
+ animatedFontSize
73
+ };
74
+ useAmountInputAnimationsTs2.__workletHash = 14297416252336;
75
+ useAmountInputAnimationsTs2.__pluginVersion = "0.5.2";
76
+ useAmountInputAnimationsTs2.__initData = _worklet_14297416252336_init_data;
77
+ useAmountInputAnimationsTs2.__stackDetails = _e;
78
+ return useAmountInputAnimationsTs2;
79
+ }({
80
+ _worklet_14297416252336_init_data,
81
+ animatedFontSize
82
+ }), [animatedFontSize]);
83
+ const animatedCaretStyle = useAnimatedStyle(function useAmountInputAnimationsTs3Factory({
84
+ _worklet_6630748204929_init_data,
85
+ caretOpacity,
86
+ size,
87
+ caretFixedHeight,
88
+ animatedFontSize
89
+ }) {
90
+ const _e = [new global.Error(), -5, -27];
91
+ const useAmountInputAnimationsTs3 = () => ({
92
+ opacity: caretOpacity.value,
93
+ height: size === 'sm' ? caretFixedHeight : animatedFontSize.value
94
+ });
95
+ useAmountInputAnimationsTs3.__closure = {
96
+ caretOpacity,
97
+ size,
98
+ caretFixedHeight,
99
+ animatedFontSize
100
+ };
101
+ useAmountInputAnimationsTs3.__workletHash = 6630748204929;
102
+ useAmountInputAnimationsTs3.__pluginVersion = "0.5.2";
103
+ useAmountInputAnimationsTs3.__initData = _worklet_6630748204929_init_data;
104
+ useAmountInputAnimationsTs3.__stackDetails = _e;
105
+ return useAmountInputAnimationsTs3;
106
+ }({
107
+ _worklet_6630748204929_init_data,
108
+ caretOpacity,
109
+ size,
110
+ caretFixedHeight,
111
+ animatedFontSize
112
+ }), [caretOpacity, animatedFontSize, size, caretFixedHeight]);
113
+ useEffect(() => {
114
+ const newSize = getFontSize(formattedValue, size);
115
+ translateX.value = withSequence(withTiming(4, {
116
+ duration: 0
117
+ }), withTiming(0, {
118
+ duration: 250,
119
+ easing: Easing.bezier(0.4, 0, 0.2, 1)
120
+ }));
121
+ animatedFontSize.value = withTiming(newSize, {
122
+ duration: 250,
123
+ easing: Easing.bezier(0.4, 0, 0.2, 1)
124
+ });
125
+ }, [formattedValue, size, animatedFontSize, translateX]);
126
+ useEffect(() => {
127
+ if (isFocused && !disabled) {
128
+ caretOpacity.value = withRepeat(withSequence(withTiming(1, {
129
+ duration: 150,
130
+ easing: Easing.ease
131
+ }), withTiming(1, {
132
+ duration: 500
133
+ }), withTiming(0, {
134
+ duration: 150,
135
+ easing: Easing.ease
136
+ }), withTiming(0, {
137
+ duration: 500
138
+ })), -1, false);
139
+ } else {
140
+ caretOpacity.value = 0;
141
+ }
142
+ }, [isFocused, disabled, caretOpacity]);
143
+ return {
144
+ animatedInputStyle,
145
+ animatedCurrencyStyle,
146
+ animatedCaretStyle
147
+ };
148
+ };
149
+ //# sourceMappingURL=useAmountInputAnimations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getFontSize","useEffect","Easing","useAnimatedStyle","useSharedValue","withRepeat","withSequence","withTiming","useTheme","_worklet_2992714507236_init_data","code","location","sourceMap","_worklet_14297416252336_init_data","_worklet_6630748204929_init_data","useAmountInputAnimations","formattedValue","size","isFocused","disabled","theme","caretFixedHeight","sizes","s28","translateX","animatedFontSize","caretOpacity","animatedInputStyle","useAmountInputAnimationsTs1Factory","_e","global","Error","useAmountInputAnimationsTs1","transform","value","fontSize","letterSpacing","__closure","__workletHash","__pluginVersion","__initData","__stackDetails","animatedCurrencyStyle","useAmountInputAnimationsTs2Factory","useAmountInputAnimationsTs2","animatedCaretStyle","useAmountInputAnimationsTs3Factory","useAmountInputAnimationsTs3","opacity","height","newSize","duration","easing","bezier","ease"],"sourceRoot":"../../../../../../src","sources":["lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import { textFormatter } from '@ledgerhq/lumen-utils-shared';
4
+ import { useCallback, useMemo } from 'react';
5
+ export const useAmountInputFormatting = ({
6
+ value,
7
+ onChangeText,
8
+ formatOptions
9
+ }) => {
10
+ const format = useCallback(v => textFormatter(String(v), formatOptions),
11
+ // eslint-disable-next-line react-hooks/exhaustive-deps
12
+ [formatOptions.allowDecimals, formatOptions.thousandsSeparator, formatOptions.maxIntegerLength, formatOptions.maxDecimalLength]);
13
+ const formattedValue = useMemo(() => format(value), [value, format]);
14
+ const handleChangeText = useCallback(text => {
15
+ onChangeText(format(text));
16
+ }, [format, onChangeText]);
17
+ return {
18
+ formattedValue,
19
+ handleChangeText
20
+ };
21
+ };
22
+ //# sourceMappingURL=useAmountInputFormatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["textFormatter","useCallback","useMemo","useAmountInputFormatting","value","onChangeText","formatOptions","format","v","String","allowDecimals","thousandsSeparator","maxIntegerLength","maxDecimalLength","formattedValue","handleChangeText","text"],"sourceRoot":"../../../../../../src","sources":["lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAoB5C,OAAO,MAAMC,wBAAwB,GAAGA,CAAC;EACvCC,KAAK;EACLC,YAAY;EACZC;AAC4B,CAAC,KAAqC;EAClE,MAAMC,MAAM,GAAGN,WAAW,CACvBO,CAAkB,IAAaR,aAAa,CAACS,MAAM,CAACD,CAAC,CAAC,EAAEF,aAAa,CAAC;EACvE;EACA,CACEA,aAAa,CAACI,aAAa,EAC3BJ,aAAa,CAACK,kBAAkB,EAChCL,aAAa,CAACM,gBAAgB,EAC9BN,aAAa,CAACO,gBAAgB,CAElC,CAAC;EAED,MAAMC,cAAc,GAAGZ,OAAO,CAAC,MAAMK,MAAM,CAACH,KAAK,CAAC,EAAE,CAACA,KAAK,EAAEG,MAAM,CAAC,CAAC;EAEpE,MAAMQ,gBAAgB,GAAGd,WAAW,CACjCe,IAAY,IAAW;IACtBX,YAAY,CAACE,MAAM,CAACS,IAAI,CAAC,CAAC;EAC5B,CAAC,EACD,CAACT,MAAM,EAAEF,YAAY,CACvB,CAAC;EAED,OAAO;IAAES,cAAc;IAAEC;EAAiB,CAAC;AAC7C,CAAC","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ import { describe, it, expect, jest } from '@jest/globals';
4
+ import { renderHook, act } from '@testing-library/react-native';
5
+ import { useAmountInputFormatting } from "./useAmountInputFormatting.js";
6
+ const defaultFormatOptions = {
7
+ allowDecimals: true,
8
+ thousandsSeparator: true,
9
+ maxIntegerLength: 9,
10
+ maxDecimalLength: 9
11
+ };
12
+ describe('useAmountInputFormatting', () => {
13
+ it('formats the value prop', () => {
14
+ const {
15
+ result
16
+ } = renderHook(() => useAmountInputFormatting({
17
+ value: '1000',
18
+ onChangeText: jest.fn(),
19
+ formatOptions: defaultFormatOptions
20
+ }));
21
+ expect(result.current.formattedValue).toBe('1 000');
22
+ });
23
+ it('updates formattedValue when the value prop changes', () => {
24
+ const {
25
+ result,
26
+ rerender
27
+ } = renderHook(({
28
+ value
29
+ }) => useAmountInputFormatting({
30
+ value,
31
+ onChangeText: jest.fn(),
32
+ formatOptions: defaultFormatOptions
33
+ }), {
34
+ initialProps: {
35
+ value: '100'
36
+ }
37
+ });
38
+ expect(result.current.formattedValue).toBe('100');
39
+ rerender({
40
+ value: '2000'
41
+ });
42
+ expect(result.current.formattedValue).toBe('2 000');
43
+ });
44
+ it('formats user input and calls onChangeText with the cleaned value', () => {
45
+ const onChangeText = jest.fn();
46
+ const {
47
+ result
48
+ } = renderHook(() => useAmountInputFormatting({
49
+ value: '',
50
+ onChangeText,
51
+ formatOptions: defaultFormatOptions
52
+ }));
53
+ act(() => {
54
+ result.current.handleChangeText('1000');
55
+ });
56
+ expect(onChangeText).toHaveBeenCalledWith('1 000');
57
+ });
58
+ });
59
+ //# sourceMappingURL=useAmountInputFormatting.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","it","expect","jest","renderHook","act","useAmountInputFormatting","defaultFormatOptions","allowDecimals","thousandsSeparator","maxIntegerLength","maxDecimalLength","result","value","onChangeText","fn","formatOptions","current","formattedValue","toBe","rerender","initialProps","handleChangeText","toHaveBeenCalledWith"],"sourceRoot":"../../../../../../src","sources":["lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.test.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,EAAE,EAAEC,MAAM,EAAEC,IAAI,QAAQ,eAAe;AAC1D,SAASC,UAAU,EAAEC,GAAG,QAAQ,+BAA+B;AAC/D,SAASC,wBAAwB,QAAQ,+BAA4B;AAErE,MAAMC,oBAAoB,GAAG;EAC3BC,aAAa,EAAE,IAAI;EACnBC,kBAAkB,EAAE,IAAI;EACxBC,gBAAgB,EAAE,CAAC;EACnBC,gBAAgB,EAAE;AACpB,CAAC;AAEDX,QAAQ,CAAC,0BAA0B,EAAE,MAAM;EACzCC,EAAE,CAAC,wBAAwB,EAAE,MAAM;IACjC,MAAM;MAAEW;IAAO,CAAC,GAAGR,UAAU,CAAC,MAC5BE,wBAAwB,CAAC;MACvBO,KAAK,EAAE,MAAM;MACbC,YAAY,EAAEX,IAAI,CAACY,EAAE,CAAC,CAAC;MACvBC,aAAa,EAAET;IACjB,CAAC,CACH,CAAC;IAEDL,MAAM,CAACU,MAAM,CAACK,OAAO,CAACC,cAAc,CAAC,CAACC,IAAI,CAAC,OAAO,CAAC;EACrD,CAAC,CAAC;EAEFlB,EAAE,CAAC,oDAAoD,EAAE,MAAM;IAC7D,MAAM;MAAEW,MAAM;MAAEQ;IAAS,CAAC,GAAGhB,UAAU,CAIrC,CAAC;MAAES;IAAM,CAAC,KACRP,wBAAwB,CAAC;MACvBO,KAAK;MACLC,YAAY,EAAEX,IAAI,CAACY,EAAE,CAAC,CAAC;MACvBC,aAAa,EAAET;IACjB,CAAC,CAAC,EACJ;MAAEc,YAAY,EAAE;QAAER,KAAK,EAAE;MAAM;IAAE,CACnC,CAAC;IAEDX,MAAM,CAACU,MAAM,CAACK,OAAO,CAACC,cAAc,CAAC,CAACC,IAAI,CAAC,KAAK,CAAC;IAEjDC,QAAQ,CAAC;MAAEP,KAAK,EAAE;IAAO,CAAC,CAAC;IAE3BX,MAAM,CAACU,MAAM,CAACK,OAAO,CAACC,cAAc,CAAC,CAACC,IAAI,CAAC,OAAO,CAAC;EACrD,CAAC,CAAC;EAEFlB,EAAE,CAAC,kEAAkE,EAAE,MAAM;IAC3E,MAAMa,YAAY,GAAGX,IAAI,CAACY,EAAE,CAAC,CAAC;IAC9B,MAAM;MAAEH;IAAO,CAAC,GAAGR,UAAU,CAAC,MAC5BE,wBAAwB,CAAC;MACvBO,KAAK,EAAE,EAAE;MACTC,YAAY;MACZE,aAAa,EAAET;IACjB,CAAC,CACH,CAAC;IAEDF,GAAG,CAAC,MAAM;MACRO,MAAM,CAACK,OAAO,CAACK,gBAAgB,CAAC,MAAM,CAAC;IACzC,CAAC,CAAC;IAEFpB,MAAM,CAACY,YAAY,CAAC,CAACS,oBAAoB,CAAC,OAAO,CAAC;EACpD,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -95,9 +95,6 @@ export const BottomSheetHeader = ({
95
95
  spacing,
96
96
  hidden: !hasIcons && density !== 'compact'
97
97
  });
98
- if (!hasTitleSection && !onBack && hideCloseButton) {
99
- return null;
100
- }
101
98
  const titleComponent = hasTitleSection ? /*#__PURE__*/_jsxs(Box, {
102
99
  style: styles.textWrapper,
103
100
  children: [title && /*#__PURE__*/_jsx(Text, {
@@ -1 +1 @@
1
- {"version":3,"names":["useBottomSheet","useCallback","StyleSheet","useCommonTranslation","useStyleSheet","ArrowLeft","Close","IconButton","Box","Text","useBottomSheetContext","jsx","_jsx","jsxs","_jsxs","Z_INDEX_DIALOG_CONTENT","useStyles","density","spacing","hidden","t","root","flatten","position","zIndex","backgroundColor","paddingBottom","spacings","s12","paddingHorizontal","s16","inner","flexDirection","alignItems","justifyContent","gap","marginBottom","display","textWrapper","flex","s4","title","color","colors","text","base","typographies","heading3SemiBold","textAlign","heading5SemiBold","description","body2","muted","iconPlaceholder","width","sizes","s32","height","BottomSheetHeader","lx","style","props","close","onBack","hideCloseButton","onHeaderClosePressed","consumerName","contextRequired","handleClose","hasTitleSection","Boolean","hasIcons","styles","titleComponent","children","testID","accessibilityLabel","size","onPress","icon","appearance"],"sourceRoot":"../../../../../src","sources":["lib/Components/BottomSheet/BottomSheetHeader.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useBottomSheet","useCallback","StyleSheet","useCommonTranslation","useStyleSheet","ArrowLeft","Close","IconButton","Box","Text","useBottomSheetContext","jsx","_jsx","jsxs","_jsxs","Z_INDEX_DIALOG_CONTENT","useStyles","density","spacing","hidden","t","root","flatten","position","zIndex","backgroundColor","paddingBottom","spacings","s12","paddingHorizontal","s16","inner","flexDirection","alignItems","justifyContent","gap","marginBottom","display","textWrapper","flex","s4","title","color","colors","text","base","typographies","heading3SemiBold","textAlign","heading5SemiBold","description","body2","muted","iconPlaceholder","width","sizes","s32","height","BottomSheetHeader","lx","style","props","close","onBack","hideCloseButton","onHeaderClosePressed","consumerName","contextRequired","handleClose","hasTitleSection","Boolean","hasIcons","styles","titleComponent","children","testID","accessibilityLabel","size","onPress","icon","appearance"],"sourceRoot":"../../../../../src","sources":["lib/Components/BottomSheet/BottomSheetHeader.tsx"],"mappings":"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","ignoreList":[]}
@@ -59,7 +59,7 @@ describe('Icon', () => {
59
59
  d: "M12 2L2 7l10 5 10-5-10-5z"
60
60
  })
61
61
  }));
62
- expect(screen.getByTestId('icon').props.color).toBe('#fca6a7');
62
+ expect(screen.getByTestId('icon').props.color).toBe('#f87274');
63
63
  });
64
64
  it('should forward ref and spread additional props', () => {
65
65
  const ref = {
@@ -1,4 +1,4 @@
1
- import { type AmountInputProps } from './types';
1
+ import type { AmountInputProps } from './types';
2
2
  /**
3
3
  * AmountInput component for handling numeric input with currency display.
4
4
  * This is a controlled component - both `value` and `onChange` props are required.
@@ -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,4CA+JlB,CAAC"}
1
+ {"version":3,"file":"AmountInput.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/AmountInput/AmountInput.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAejB;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,oNAkBzB,gBAAgB,4CAgGlB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { useAnimatedStyle } from 'react-native-reanimated';
2
+ import type { AmountInputSize } from '../types';
3
+ type UseAmountInputAnimationsArgs = {
4
+ formattedValue: string;
5
+ size: AmountInputSize;
6
+ isFocused: boolean;
7
+ disabled: boolean;
8
+ };
9
+ type UseAmountInputAnimationsReturn = {
10
+ animatedInputStyle: ReturnType<typeof useAnimatedStyle>;
11
+ animatedCurrencyStyle: ReturnType<typeof useAnimatedStyle>;
12
+ animatedCaretStyle: ReturnType<typeof useAnimatedStyle>;
13
+ };
14
+ export declare const useAmountInputAnimations: ({ formattedValue, size, isFocused, disabled, }: UseAmountInputAnimationsArgs) => UseAmountInputAnimationsReturn;
15
+ export {};
16
+ //# sourceMappingURL=useAmountInputAnimations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAmountInputAnimations.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/AmountInput/useAmountInputAnimations/useAmountInputAnimations.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,gBAAgB,EAKjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,KAAK,4BAA4B,GAAG;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,kBAAkB,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IACxD,qBAAqB,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAC3D,kBAAkB,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;CACzD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,gDAKtC,4BAA4B,KAAG,8BAoEjC,CAAC"}
@@ -0,0 +1,18 @@
1
+ type FormatOptions = {
2
+ allowDecimals: boolean;
3
+ thousandsSeparator: boolean;
4
+ maxIntegerLength: number;
5
+ maxDecimalLength: number;
6
+ };
7
+ type UseAmountInputFormattingArgs = {
8
+ value: string | number;
9
+ onChangeText: (text: string) => void;
10
+ formatOptions: FormatOptions;
11
+ };
12
+ type UseAmountInputFormattingReturn = {
13
+ formattedValue: string;
14
+ handleChangeText: (text: string) => void;
15
+ };
16
+ export declare const useAmountInputFormatting: ({ value, onChangeText, formatOptions, }: UseAmountInputFormattingArgs) => UseAmountInputFormattingReturn;
17
+ export {};
18
+ //# sourceMappingURL=useAmountInputFormatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAmountInputFormatting.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.ts"],"names":[],"mappings":"AAGA,KAAK,aAAa,GAAG;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,yCAItC,4BAA4B,KAAG,8BAsBjC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { BottomSheetHeaderProps } from './types';
2
- export declare const BottomSheetHeader: ({ lx, style, title, description, density, spacing, ...props }: BottomSheetHeaderProps) => import("react/jsx-runtime").JSX.Element | null;
2
+ export declare const BottomSheetHeader: ({ lx, style, title, description, density, spacing, ...props }: BottomSheetHeaderProps) => import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=BottomSheetHeader.d.ts.map
@@ -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,mDAmFxB,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,4CA+ExB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/lumen-ui-rnative",
3
- "version": "0.1.40",
3
+ "version": "0.1.41",
4
4
  "license": "Apache-2.0",
5
5
  "keywords": [
6
6
  "react-native",
@@ -52,7 +52,7 @@
52
52
  "peerDependencies": {
53
53
  "@types/react": "^19.0.0",
54
54
  "@gorhom/bottom-sheet": "^5.0.0",
55
- "@ledgerhq/lumen-design-core": "0.1.16",
55
+ "@ledgerhq/lumen-design-core": "0.1.17",
56
56
  "react": "^19.0.0",
57
57
  "react-native": "~0.79.7",
58
58
  "react-native-reanimated": "^4.1.0",
@@ -1,25 +1,28 @@
1
- import {
2
- getFontSize,
3
- textFormatter,
4
- useDisabledContext,
5
- } from '@ledgerhq/lumen-utils-shared';
6
- import { useEffect, useImperativeHandle, useRef, useState } from 'react';
1
+ import { useDisabledContext } from '@ledgerhq/lumen-utils-shared';
2
+ import { useImperativeHandle, useRef, useState } from 'react';
3
+ import type { StyleProp, TextStyle } from 'react-native';
7
4
  import { Pressable, StyleSheet, TextInput, View } from 'react-native';
8
- import Animated, {
9
- Easing,
10
- useAnimatedStyle,
11
- useSharedValue,
12
- withRepeat,
13
- withSequence,
14
- withTiming,
15
- } from 'react-native-reanimated';
16
- import { useStyleSheet, useTheme } from '../../../styles';
5
+ import Animated from 'react-native-reanimated';
6
+ import { useStyleSheet } from '../../../styles';
17
7
  import { Box } from '../Utility';
18
- import {
19
- type AmountInputAlign,
20
- type AmountInputProps,
21
- type AmountInputSize,
8
+ import type {
9
+ AmountInputAlign,
10
+ AmountInputProps,
11
+ AmountInputSize,
22
12
  } from './types';
13
+ import { useAmountInputAnimations } from './useAmountInputAnimations/useAmountInputAnimations';
14
+ import { useAmountInputFormatting } from './useAmountInputFormatting/useAmountInputFormatting';
15
+
16
+ type CurrencyProps = {
17
+ style: StyleProp<TextStyle>;
18
+ children: string;
19
+ };
20
+
21
+ const Currency = ({ style, children }: CurrencyProps) => (
22
+ <Animated.Text style={style} allowFontScaling={false}>
23
+ {children}
24
+ </Animated.Text>
25
+ );
23
26
 
24
27
  /**
25
28
  * AmountInput component for handling numeric input with currency display.
@@ -46,114 +49,43 @@ export const AmountInput = ({
46
49
  ...props
47
50
  }: AmountInputProps) => {
48
51
  const inputRef = useRef<TextInput>(null);
49
- const inputValue = textFormatter(String(value), {
50
- allowDecimals,
51
- thousandsSeparator,
52
- maxIntegerLength,
53
- maxDecimalLength,
54
- });
55
52
  const [isFocused, setIsFocused] = useState(false);
53
+
56
54
  const disabled = useDisabledContext({
57
55
  consumerName: 'AmountInput',
58
56
  mergeWith: { disabled: disabledProp },
59
57
  });
60
58
 
61
- const translateX = useSharedValue(0);
62
- const animatedFontSize = useSharedValue(getFontSize(inputValue, size));
63
- const caretOpacity = useSharedValue(0);
59
+ const { formattedValue, handleChangeText } = useAmountInputFormatting({
60
+ value,
61
+ onChangeText,
62
+ formatOptions: {
63
+ allowDecimals,
64
+ thousandsSeparator,
65
+ maxIntegerLength,
66
+ maxDecimalLength,
67
+ },
68
+ });
64
69
 
65
- useImperativeHandle(ref, () => inputRef.current as TextInput, []);
70
+ const { animatedInputStyle, animatedCurrencyStyle, animatedCaretStyle } =
71
+ useAmountInputAnimations({
72
+ formattedValue,
73
+ size,
74
+ isFocused,
75
+ disabled,
76
+ });
66
77
 
67
- const { theme } = useTheme();
68
78
  const styles = useStyles({
69
79
  size,
70
80
  align,
71
- hasValue: !!inputValue,
81
+ hasValue: !!formattedValue,
72
82
  isEditable: !disabled,
73
83
  isInvalid,
74
84
  });
75
- const caretFixedHeight = size === 'sm' ? theme.sizes.s28 : 0;
76
-
77
- const animatedInputStyle = useAnimatedStyle(
78
- () => ({
79
- transform: [{ translateX: translateX.value }],
80
- fontSize: animatedFontSize.value,
81
- letterSpacing: 0,
82
- }),
83
- [translateX, animatedFontSize],
84
- );
85
-
86
- const animatedCurrencyStyle = useAnimatedStyle(
87
- () => ({
88
- fontSize: animatedFontSize.value,
89
- letterSpacing: 0,
90
- }),
91
- [animatedFontSize],
92
- );
93
-
94
- const animatedCaretStyle = useAnimatedStyle(
95
- () => ({
96
- opacity: caretOpacity.value,
97
- height: size === 'sm' ? caretFixedHeight : animatedFontSize.value,
98
- }),
99
- [caretOpacity, animatedFontSize, size, caretFixedHeight],
100
- );
101
-
102
- useEffect(() => {
103
- const newSize = getFontSize(inputValue, size);
104
-
105
- translateX.value = withSequence(
106
- withTiming(4, { duration: 0 }),
107
- withTiming(0, {
108
- duration: 250,
109
- easing: Easing.bezier(0.4, 0, 0.2, 1),
110
- }),
111
- );
112
-
113
- animatedFontSize.value = withTiming(newSize, {
114
- duration: 250,
115
- easing: Easing.bezier(0.4, 0, 0.2, 1),
116
- });
117
- }, [inputValue, size, animatedFontSize, translateX]);
118
-
119
- useEffect(() => {
120
- if (isFocused && !disabled) {
121
- caretOpacity.value = withRepeat(
122
- withSequence(
123
- withTiming(1, { duration: 150, easing: Easing.ease }),
124
- withTiming(1, { duration: 500 }),
125
- withTiming(0, { duration: 150, easing: Easing.ease }),
126
- withTiming(0, { duration: 500 }),
127
- ),
128
- -1,
129
- false,
130
- );
131
- } else {
132
- caretOpacity.value = 0;
133
- }
134
- }, [isFocused, disabled, caretOpacity]);
135
85
 
136
- const handleChangeText = (text: string) => {
137
- const formatted = textFormatter(text, {
138
- allowDecimals,
139
- thousandsSeparator,
140
- maxIntegerLength,
141
- maxDecimalLength,
142
- });
143
-
144
- onChangeText(formatted);
145
- };
146
-
147
- const CurrencyText = currencyText ? (
148
- <Animated.Text
149
- style={[styles.currency, animatedCurrencyStyle]}
150
- allowFontScaling={false}
151
- >
152
- {currencyText}
153
- </Animated.Text>
154
- ) : null;
86
+ useImperativeHandle(ref, () => inputRef.current as TextInput, []);
155
87
 
156
- const handlePress = () => {
88
+ const handlePress = (): void => {
157
89
  if (!disabled) {
158
90
  inputRef.current?.focus();
159
91
  }
@@ -166,7 +98,7 @@ export const AmountInput = ({
166
98
  ref={inputRef}
167
99
  keyboardType='decimal-pad'
168
100
  editable={editable !== false && !disabled}
169
- value={inputValue}
101
+ value={formattedValue}
170
102
  onChangeText={handleChangeText}
171
103
  onFocus={(e) => {
172
104
  setIsFocused(true);
@@ -185,20 +117,28 @@ export const AmountInput = ({
185
117
  style={styles.pressable}
186
118
  accessibilityLabel={props.accessibilityLabel || 'Amount input'}
187
119
  >
188
- {currencyPosition === 'left' && CurrencyText}
120
+ {currencyText && currencyPosition === 'left' && (
121
+ <Currency style={[styles.currency, animatedCurrencyStyle]}>
122
+ {currencyText}
123
+ </Currency>
124
+ )}
189
125
 
190
126
  {/** display text that mirrors the hidden input's value */}
191
127
  <Animated.Text
192
128
  style={[styles.displayText, animatedInputStyle, style]}
193
129
  allowFontScaling={false}
194
130
  >
195
- {inputValue || '0'}
131
+ {formattedValue || '0'}
196
132
  </Animated.Text>
197
133
 
198
134
  {/** custom caret */}
199
135
  <Animated.View style={[styles.caret, animatedCaretStyle]} />
200
136
 
201
- {currencyPosition === 'right' && CurrencyText}
137
+ {currencyText && currencyPosition === 'right' && (
138
+ <Currency style={[styles.currency, animatedCurrencyStyle]}>
139
+ {currencyText}
140
+ </Currency>
141
+ )}
202
142
  </Pressable>
203
143
  </View>
204
144
  </Box>
@@ -0,0 +1,100 @@
1
+ import { getFontSize } from '@ledgerhq/lumen-utils-shared';
2
+ import { useEffect } from 'react';
3
+ import {
4
+ Easing,
5
+ useAnimatedStyle,
6
+ useSharedValue,
7
+ withRepeat,
8
+ withSequence,
9
+ withTiming,
10
+ } from 'react-native-reanimated';
11
+ import { useTheme } from '../../../../styles';
12
+ import type { AmountInputSize } from '../types';
13
+
14
+ type UseAmountInputAnimationsArgs = {
15
+ formattedValue: string;
16
+ size: AmountInputSize;
17
+ isFocused: boolean;
18
+ disabled: boolean;
19
+ };
20
+
21
+ type UseAmountInputAnimationsReturn = {
22
+ animatedInputStyle: ReturnType<typeof useAnimatedStyle>;
23
+ animatedCurrencyStyle: ReturnType<typeof useAnimatedStyle>;
24
+ animatedCaretStyle: ReturnType<typeof useAnimatedStyle>;
25
+ };
26
+
27
+ export const useAmountInputAnimations = ({
28
+ formattedValue,
29
+ size,
30
+ isFocused,
31
+ disabled,
32
+ }: UseAmountInputAnimationsArgs): UseAmountInputAnimationsReturn => {
33
+ const { theme } = useTheme();
34
+ const caretFixedHeight = size === 'sm' ? theme.sizes.s28 : 0;
35
+
36
+ const translateX = useSharedValue(0);
37
+ const animatedFontSize = useSharedValue(getFontSize(formattedValue, size));
38
+ const caretOpacity = useSharedValue(0);
39
+
40
+ const animatedInputStyle = useAnimatedStyle(
41
+ () => ({
42
+ transform: [{ translateX: translateX.value }],
43
+ fontSize: animatedFontSize.value,
44
+ letterSpacing: 0,
45
+ }),
46
+ [translateX, animatedFontSize],
47
+ );
48
+
49
+ const animatedCurrencyStyle = useAnimatedStyle(
50
+ () => ({
51
+ fontSize: animatedFontSize.value,
52
+ letterSpacing: 0,
53
+ }),
54
+ [animatedFontSize],
55
+ );
56
+
57
+ const animatedCaretStyle = useAnimatedStyle(
58
+ () => ({
59
+ opacity: caretOpacity.value,
60
+ height: size === 'sm' ? caretFixedHeight : animatedFontSize.value,
61
+ }),
62
+ [caretOpacity, animatedFontSize, size, caretFixedHeight],
63
+ );
64
+
65
+ useEffect(() => {
66
+ const newSize = getFontSize(formattedValue, size);
67
+
68
+ translateX.value = withSequence(
69
+ withTiming(4, { duration: 0 }),
70
+ withTiming(0, {
71
+ duration: 250,
72
+ easing: Easing.bezier(0.4, 0, 0.2, 1),
73
+ }),
74
+ );
75
+
76
+ animatedFontSize.value = withTiming(newSize, {
77
+ duration: 250,
78
+ easing: Easing.bezier(0.4, 0, 0.2, 1),
79
+ });
80
+ }, [formattedValue, size, animatedFontSize, translateX]);
81
+
82
+ useEffect(() => {
83
+ if (isFocused && !disabled) {
84
+ caretOpacity.value = withRepeat(
85
+ withSequence(
86
+ withTiming(1, { duration: 150, easing: Easing.ease }),
87
+ withTiming(1, { duration: 500 }),
88
+ withTiming(0, { duration: 150, easing: Easing.ease }),
89
+ withTiming(0, { duration: 500 }),
90
+ ),
91
+ -1,
92
+ false,
93
+ );
94
+ } else {
95
+ caretOpacity.value = 0;
96
+ }
97
+ }, [isFocused, disabled, caretOpacity]);
98
+
99
+ return { animatedInputStyle, animatedCurrencyStyle, animatedCaretStyle };
100
+ };
@@ -0,0 +1,62 @@
1
+ import { describe, it, expect, jest } from '@jest/globals';
2
+ import { renderHook, act } from '@testing-library/react-native';
3
+ import { useAmountInputFormatting } from './useAmountInputFormatting';
4
+
5
+ const defaultFormatOptions = {
6
+ allowDecimals: true,
7
+ thousandsSeparator: true,
8
+ maxIntegerLength: 9,
9
+ maxDecimalLength: 9,
10
+ };
11
+
12
+ describe('useAmountInputFormatting', () => {
13
+ it('formats the value prop', () => {
14
+ const { result } = renderHook(() =>
15
+ useAmountInputFormatting({
16
+ value: '1000',
17
+ onChangeText: jest.fn(),
18
+ formatOptions: defaultFormatOptions,
19
+ }),
20
+ );
21
+
22
+ expect(result.current.formattedValue).toBe('1 000');
23
+ });
24
+
25
+ it('updates formattedValue when the value prop changes', () => {
26
+ const { result, rerender } = renderHook<
27
+ ReturnType<typeof useAmountInputFormatting>,
28
+ { value: string }
29
+ >(
30
+ ({ value }) =>
31
+ useAmountInputFormatting({
32
+ value,
33
+ onChangeText: jest.fn(),
34
+ formatOptions: defaultFormatOptions,
35
+ }),
36
+ { initialProps: { value: '100' } },
37
+ );
38
+
39
+ expect(result.current.formattedValue).toBe('100');
40
+
41
+ rerender({ value: '2000' });
42
+
43
+ expect(result.current.formattedValue).toBe('2 000');
44
+ });
45
+
46
+ it('formats user input and calls onChangeText with the cleaned value', () => {
47
+ const onChangeText = jest.fn();
48
+ const { result } = renderHook(() =>
49
+ useAmountInputFormatting({
50
+ value: '',
51
+ onChangeText,
52
+ formatOptions: defaultFormatOptions,
53
+ }),
54
+ );
55
+
56
+ act(() => {
57
+ result.current.handleChangeText('1000');
58
+ });
59
+
60
+ expect(onChangeText).toHaveBeenCalledWith('1 000');
61
+ });
62
+ });
@@ -0,0 +1,48 @@
1
+ import { textFormatter } from '@ledgerhq/lumen-utils-shared';
2
+ import { useCallback, useMemo } from 'react';
3
+
4
+ type FormatOptions = {
5
+ allowDecimals: boolean;
6
+ thousandsSeparator: boolean;
7
+ maxIntegerLength: number;
8
+ maxDecimalLength: number;
9
+ };
10
+
11
+ type UseAmountInputFormattingArgs = {
12
+ value: string | number;
13
+ onChangeText: (text: string) => void;
14
+ formatOptions: FormatOptions;
15
+ };
16
+
17
+ type UseAmountInputFormattingReturn = {
18
+ formattedValue: string;
19
+ handleChangeText: (text: string) => void;
20
+ };
21
+
22
+ export const useAmountInputFormatting = ({
23
+ value,
24
+ onChangeText,
25
+ formatOptions,
26
+ }: UseAmountInputFormattingArgs): UseAmountInputFormattingReturn => {
27
+ const format = useCallback(
28
+ (v: string | number): string => textFormatter(String(v), formatOptions),
29
+ // eslint-disable-next-line react-hooks/exhaustive-deps
30
+ [
31
+ formatOptions.allowDecimals,
32
+ formatOptions.thousandsSeparator,
33
+ formatOptions.maxIntegerLength,
34
+ formatOptions.maxDecimalLength,
35
+ ],
36
+ );
37
+
38
+ const formattedValue = useMemo(() => format(value), [value, format]);
39
+
40
+ const handleChangeText = useCallback(
41
+ (text: string): void => {
42
+ onChangeText(format(text));
43
+ },
44
+ [format, onChangeText],
45
+ );
46
+
47
+ return { formattedValue, handleChangeText };
48
+ };
@@ -119,10 +119,6 @@ export const BottomSheetHeader = ({
119
119
  hidden: !hasIcons && density !== 'compact',
120
120
  });
121
121
 
122
- if (!hasTitleSection && !onBack && hideCloseButton) {
123
- return null;
124
- }
125
-
126
122
  const titleComponent = hasTitleSection ? (
127
123
  <Box style={styles.textWrapper}>
128
124
  {title && (
@@ -57,7 +57,7 @@ describe('Icon', () => {
57
57
  </Icon>,
58
58
  );
59
59
 
60
- expect(screen.getByTestId('icon').props.color).toBe('#fca6a7');
60
+ expect(screen.getByTestId('icon').props.color).toBe('#f87274');
61
61
  });
62
62
 
63
63
  it('should forward ref and spread additional props', () => {