@ledgerhq/lumen-ui-rnative 0.1.37 → 0.1.39
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.
- package/dist/module/lib/Components/AmountInput/AmountInput.js +109 -72
- package/dist/module/lib/Components/AmountInput/AmountInput.js.map +1 -1
- package/dist/module/lib/Components/AmountInput/AmountInput.mdx +12 -0
- package/dist/module/lib/Components/AmountInput/AmountInput.stories.js +53 -0
- package/dist/module/lib/Components/AmountInput/AmountInput.stories.js.map +1 -1
- package/dist/module/lib/Components/Avatar/Avatar.js +6 -5
- package/dist/module/lib/Components/Avatar/Avatar.js.map +1 -1
- package/dist/module/lib/Components/Avatar/Avatar.mdx +2 -0
- package/dist/module/lib/Components/Avatar/Avatar.test.js +10 -13
- package/dist/module/lib/Components/Avatar/Avatar.test.js.map +1 -1
- package/dist/module/lib/Components/BottomSheet/BottomSheet.js +3 -1
- package/dist/module/lib/Components/BottomSheet/BottomSheet.js.map +1 -1
- package/dist/module/lib/Components/BottomSheet/BottomSheet.stories.js +1 -0
- package/dist/module/lib/Components/BottomSheet/BottomSheet.stories.js.map +1 -1
- package/dist/module/lib/Components/BottomSheet/BottomSheet.test.js +33 -1
- package/dist/module/lib/Components/BottomSheet/BottomSheet.test.js.map +1 -1
- package/dist/module/lib/Components/BottomSheet/BottomSheetHeader.js +7 -3
- package/dist/module/lib/Components/BottomSheet/BottomSheetHeader.js.map +1 -1
- package/dist/module/lib/Components/DotIcon/DotIcon.js +7 -4
- package/dist/module/lib/Components/DotIcon/DotIcon.js.map +1 -1
- package/dist/module/lib/Components/DotIcon/DotIcon.stories.js +10 -0
- package/dist/module/lib/Components/DotIcon/DotIcon.stories.js.map +1 -1
- package/dist/module/lib/Components/DotIndicator/DotIndicator.js +5 -5
- package/dist/module/lib/Components/DotIndicator/DotIndicator.js.map +1 -1
- package/dist/module/lib/Components/DotIndicator/DotIndicator.mdx +4 -4
- package/dist/module/lib/Components/DotIndicator/DotIndicator.stories.js +3 -3
- package/dist/module/lib/Components/DotIndicator/DotIndicator.test.js +12 -2
- package/dist/module/lib/Components/DotIndicator/DotIndicator.test.js.map +1 -1
- package/dist/module/lib/Components/DotSymbol/DotSymbol.js +7 -4
- package/dist/module/lib/Components/DotSymbol/DotSymbol.js.map +1 -1
- package/dist/module/lib/Components/DotSymbol/DotSymbol.stories.js +19 -0
- package/dist/module/lib/Components/DotSymbol/DotSymbol.stories.js.map +1 -1
- package/dist/module/lib/Components/Label/Label.js +1 -1
- package/dist/module/lib/Components/MediaButton/MediaButton.js +2 -2
- package/dist/module/lib/Components/MediaButton/MediaButton.mdx +2 -2
- package/dist/module/lib/Components/MediaImage/MediaImage.js +4 -2
- package/dist/module/lib/Components/MediaImage/MediaImage.js.map +1 -1
- package/dist/module/lib/Components/MediaImage/MediaImage.mdx +1 -1
- package/dist/module/lib/Components/MediaImage/MediaImage.stories.js +12 -0
- package/dist/module/lib/Components/MediaImage/MediaImage.stories.js.map +1 -1
- package/dist/module/lib/Components/OptionList/OptionList.mdx +1 -1
- package/dist/module/lib/Components/ThemeProvider/ThemeProvider.js +2 -5
- package/dist/module/lib/Components/ThemeProvider/ThemeProvider.js.map +1 -1
- package/dist/module/lib/Components/index.js +0 -1
- package/dist/module/lib/Components/index.js.map +1 -1
- package/dist/module/lib/Symbols/Icons/Lightbulb.js +3 -3
- package/dist/module/lib/Symbols/Icons/Lightbulb.js.map +1 -1
- package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts +1 -1
- package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/AmountInput/types.d.ts +12 -0
- package/dist/typescript/src/lib/Components/AmountInput/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/Avatar/Avatar.d.ts +1 -1
- package/dist/typescript/src/lib/Components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/BottomSheet/BottomSheet.d.ts +2 -2
- package/dist/typescript/src/lib/Components/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/BottomSheet/BottomSheetHeader.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/BottomSheet/types.d.ts +9 -0
- package/dist/typescript/src/lib/Components/BottomSheet/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/DotIcon/DotIcon.d.ts +2 -1
- package/dist/typescript/src/lib/Components/DotIcon/DotIcon.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/DotIcon/types.d.ts +1 -1
- package/dist/typescript/src/lib/Components/DotIcon/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/DotIndicator/types.d.ts +2 -2
- package/dist/typescript/src/lib/Components/DotSymbol/DotSymbol.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/DotSymbol/types.d.ts +1 -1
- package/dist/typescript/src/lib/Components/DotSymbol/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/Label/Label.d.ts +1 -1
- package/dist/typescript/src/lib/Components/MediaButton/MediaButton.d.ts +2 -2
- package/dist/typescript/src/lib/Components/MediaImage/MediaImage.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/MediaImage/types.d.ts +1 -1
- package/dist/typescript/src/lib/Components/MediaImage/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/index.d.ts +0 -1
- package/dist/typescript/src/lib/Components/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/lib/Components/AmountInput/AmountInput.mdx +12 -0
- package/src/lib/Components/AmountInput/AmountInput.stories.tsx +68 -1
- package/src/lib/Components/AmountInput/AmountInput.tsx +118 -75
- package/src/lib/Components/AmountInput/types.ts +14 -0
- package/src/lib/Components/Avatar/Avatar.mdx +2 -0
- package/src/lib/Components/Avatar/Avatar.test.tsx +16 -18
- package/src/lib/Components/Avatar/Avatar.tsx +9 -8
- package/src/lib/Components/BottomSheet/BottomSheet.stories.tsx +1 -0
- package/src/lib/Components/BottomSheet/BottomSheet.test.tsx +32 -1
- package/src/lib/Components/BottomSheet/BottomSheet.tsx +10 -4
- package/src/lib/Components/BottomSheet/BottomSheetHeader.tsx +10 -6
- package/src/lib/Components/BottomSheet/types.ts +9 -0
- package/src/lib/Components/DotIcon/DotIcon.stories.tsx +8 -0
- package/src/lib/Components/DotIcon/DotIcon.tsx +4 -1
- package/src/lib/Components/DotIcon/types.ts +1 -1
- package/src/lib/Components/DotIndicator/DotIndicator.mdx +4 -4
- package/src/lib/Components/DotIndicator/DotIndicator.stories.tsx +2 -2
- package/src/lib/Components/DotIndicator/DotIndicator.test.tsx +12 -2
- package/src/lib/Components/DotIndicator/DotIndicator.tsx +5 -5
- package/src/lib/Components/DotIndicator/types.ts +2 -2
- package/src/lib/Components/DotSymbol/DotSymbol.stories.tsx +15 -0
- package/src/lib/Components/DotSymbol/DotSymbol.tsx +4 -1
- package/src/lib/Components/DotSymbol/types.ts +1 -1
- package/src/lib/Components/Label/Label.tsx +1 -1
- package/src/lib/Components/MediaButton/MediaButton.mdx +2 -2
- package/src/lib/Components/MediaButton/MediaButton.tsx +2 -2
- package/src/lib/Components/MediaImage/MediaImage.mdx +1 -1
- package/src/lib/Components/MediaImage/MediaImage.stories.tsx +3 -0
- package/src/lib/Components/MediaImage/MediaImage.tsx +2 -0
- package/src/lib/Components/MediaImage/types.ts +1 -1
- package/src/lib/Components/OptionList/OptionList.mdx +1 -1
- package/src/lib/Components/ThemeProvider/ThemeProvider.tsx +1 -4
- package/src/lib/Components/index.ts +0 -1
- package/src/lib/Symbols/Icons/Lightbulb.tsx +3 -3
- package/dist/module/lib/Components/Select/GlobalSelectBottomSheet.js +0 -155
- package/dist/module/lib/Components/Select/GlobalSelectBottomSheet.js.map +0 -1
- package/dist/module/lib/Components/Select/GlobalSelectContext.js +0 -78
- package/dist/module/lib/Components/Select/GlobalSelectContext.js.map +0 -1
- package/dist/module/lib/Components/Select/Select.js +0 -366
- package/dist/module/lib/Components/Select/Select.js.map +0 -1
- package/dist/module/lib/Components/Select/Select.mdx +0 -596
- package/dist/module/lib/Components/Select/Select.stories.js +0 -304
- package/dist/module/lib/Components/Select/Select.stories.js.map +0 -1
- package/dist/module/lib/Components/Select/Select.test.js +0 -123
- package/dist/module/lib/Components/Select/Select.test.js.map +0 -1
- package/dist/module/lib/Components/Select/SelectContext.js +0 -38
- package/dist/module/lib/Components/Select/SelectContext.js.map +0 -1
- package/dist/module/lib/Components/Select/index.js +0 -6
- package/dist/module/lib/Components/Select/index.js.map +0 -1
- package/dist/module/lib/Components/Select/types.js +0 -4
- package/dist/module/lib/Components/Select/types.js.map +0 -1
- package/dist/typescript/src/lib/Components/Select/GlobalSelectBottomSheet.d.ts +0 -20
- package/dist/typescript/src/lib/Components/Select/GlobalSelectBottomSheet.d.ts.map +0 -1
- package/dist/typescript/src/lib/Components/Select/GlobalSelectContext.d.ts +0 -44
- package/dist/typescript/src/lib/Components/Select/GlobalSelectContext.d.ts.map +0 -1
- package/dist/typescript/src/lib/Components/Select/Select.d.ts +0 -52
- package/dist/typescript/src/lib/Components/Select/Select.d.ts.map +0 -1
- package/dist/typescript/src/lib/Components/Select/SelectContext.d.ts +0 -36
- package/dist/typescript/src/lib/Components/Select/SelectContext.d.ts.map +0 -1
- package/dist/typescript/src/lib/Components/Select/index.d.ts +0 -4
- package/dist/typescript/src/lib/Components/Select/index.d.ts.map +0 -1
- package/dist/typescript/src/lib/Components/Select/types.d.ts +0 -130
- package/dist/typescript/src/lib/Components/Select/types.d.ts.map +0 -1
- package/src/lib/Components/Select/GlobalSelectBottomSheet.tsx +0 -180
- package/src/lib/Components/Select/GlobalSelectContext.tsx +0 -103
- package/src/lib/Components/Select/Select.mdx +0 -596
- package/src/lib/Components/Select/Select.stories.tsx +0 -266
- package/src/lib/Components/Select/Select.test.tsx +0 -117
- package/src/lib/Components/Select/Select.tsx +0 -469
- package/src/lib/Components/Select/SelectContext.tsx +0 -68
- package/src/lib/Components/Select/index.ts +0 -3
- package/src/lib/Components/Select/types.ts +0 -149
|
@@ -57,14 +57,18 @@ const useStyles = ({
|
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
const [BottomSheetProvider, useBottomSheetContext] =
|
|
60
|
-
createSafeContext<
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
createSafeContext<
|
|
61
|
+
Pick<
|
|
62
|
+
BottomSheetProps,
|
|
63
|
+
'onBack' | 'hideCloseButton' | 'onHeaderClosePressed'
|
|
64
|
+
>
|
|
65
|
+
>('BottomSheet');
|
|
63
66
|
|
|
64
67
|
export const BottomSheet = ({
|
|
65
68
|
onOpen,
|
|
66
69
|
onClose,
|
|
67
70
|
onDismiss,
|
|
71
|
+
onHeaderClosePressed,
|
|
68
72
|
onBack,
|
|
69
73
|
onAnimate,
|
|
70
74
|
children,
|
|
@@ -203,7 +207,9 @@ export const BottomSheet = ({
|
|
|
203
207
|
handleComponent={hideHandle ? HiddenHandle : CustomHandle}
|
|
204
208
|
backdropComponent={hideBackdrop ? undefined : renderBackdrop}
|
|
205
209
|
>
|
|
206
|
-
<BottomSheetProvider
|
|
210
|
+
<BottomSheetProvider
|
|
211
|
+
value={{ onBack, hideCloseButton, onHeaderClosePressed }}
|
|
212
|
+
>
|
|
207
213
|
{children}
|
|
208
214
|
</BottomSheetProvider>
|
|
209
215
|
</GorhomBottomSheetModal>
|
|
@@ -97,14 +97,18 @@ export const BottomSheetHeader = ({
|
|
|
97
97
|
}: BottomSheetHeaderProps) => {
|
|
98
98
|
const { t } = useCommonTranslation();
|
|
99
99
|
const { close } = useBottomSheet();
|
|
100
|
-
const { onBack, hideCloseButton } =
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
100
|
+
const { onBack, hideCloseButton, onHeaderClosePressed } =
|
|
101
|
+
useBottomSheetContext({
|
|
102
|
+
consumerName: 'BottomSheetHeader',
|
|
103
|
+
contextRequired: true,
|
|
104
|
+
});
|
|
104
105
|
|
|
105
106
|
const handleClose = useCallback(() => {
|
|
107
|
+
if (onHeaderClosePressed) {
|
|
108
|
+
onHeaderClosePressed();
|
|
109
|
+
}
|
|
106
110
|
close();
|
|
107
|
-
}, [close]);
|
|
111
|
+
}, [close, onHeaderClosePressed]);
|
|
108
112
|
|
|
109
113
|
const hasTitleSection = Boolean(title || description);
|
|
110
114
|
const hasIcons = Boolean(onBack || !hideCloseButton);
|
|
@@ -115,7 +119,7 @@ export const BottomSheetHeader = ({
|
|
|
115
119
|
hidden: !hasIcons && density !== 'compact',
|
|
116
120
|
});
|
|
117
121
|
|
|
118
|
-
if (!
|
|
122
|
+
if (!hasTitleSection && !onBack && hideCloseButton) {
|
|
119
123
|
return null;
|
|
120
124
|
}
|
|
121
125
|
|
|
@@ -94,6 +94,15 @@ export type BottomSheetProps = PropsWithChildren & {
|
|
|
94
94
|
* @default undefined
|
|
95
95
|
*/
|
|
96
96
|
onClose?: () => void;
|
|
97
|
+
/**
|
|
98
|
+
* Callback function to handle when the close button in the header is pressed.
|
|
99
|
+
* This is distinct from {@link onClose} and {@link onDismiss}—those will always
|
|
100
|
+
* also be called after this event if the close button results in a full sheet dismissal.
|
|
101
|
+
* Use this to react specifically to header close intent (e.g., tracking, custom UI),
|
|
102
|
+
* but do cleanup/unmount logic in {@link onClose} or {@link onDismiss}.
|
|
103
|
+
* @default undefined
|
|
104
|
+
*/
|
|
105
|
+
onHeaderClosePressed?: () => void;
|
|
97
106
|
/**
|
|
98
107
|
* Callback function to handle the open event.
|
|
99
108
|
* @default undefined
|
|
@@ -184,6 +184,14 @@ export const SizeShowcase: Story = {
|
|
|
184
184
|
>
|
|
185
185
|
<MediaImage src={parentSrc} size={64} shape='circle' />
|
|
186
186
|
</DotIcon>
|
|
187
|
+
<DotIcon
|
|
188
|
+
appearance='muted'
|
|
189
|
+
icon={Spinner}
|
|
190
|
+
size={mediaImageDotIconSizeMap[72]}
|
|
191
|
+
pin='bottom-end'
|
|
192
|
+
>
|
|
193
|
+
<MediaImage src={parentSrc} size={72} shape='circle' />
|
|
194
|
+
</DotIcon>
|
|
187
195
|
</Box>
|
|
188
196
|
),
|
|
189
197
|
};
|
|
@@ -16,12 +16,14 @@ const dotIconSizeMap: Record<DotIconSize, IconSize> = {
|
|
|
16
16
|
16: 12,
|
|
17
17
|
20: 16,
|
|
18
18
|
24: 16,
|
|
19
|
+
32: 20,
|
|
19
20
|
};
|
|
20
21
|
|
|
21
22
|
const dotSquareRadiusMap: Record<DotIconSize, number> = {
|
|
22
23
|
16: 5,
|
|
23
24
|
20: 6,
|
|
24
25
|
24: 8,
|
|
26
|
+
32: 10,
|
|
25
27
|
};
|
|
26
28
|
|
|
27
29
|
export const mediaImageDotIconSizeMap = {
|
|
@@ -29,13 +31,14 @@ export const mediaImageDotIconSizeMap = {
|
|
|
29
31
|
48: 20,
|
|
30
32
|
56: 24,
|
|
31
33
|
64: 24,
|
|
34
|
+
72: 32,
|
|
32
35
|
} as const satisfies Record<number, DotIconSize>;
|
|
33
36
|
|
|
34
37
|
export const spotDotIconSizeMap = {
|
|
35
38
|
40: 16,
|
|
36
39
|
48: 20,
|
|
37
40
|
56: 24,
|
|
38
|
-
72:
|
|
41
|
+
72: 32,
|
|
39
42
|
} as const satisfies Record<number, DotIconSize>;
|
|
40
43
|
|
|
41
44
|
const pinAxisMap: Record<DotIconPin, [vertical: string, horizontal: string]> = {
|
|
@@ -3,7 +3,7 @@ import type { StyleProp, TextStyle } from 'react-native';
|
|
|
3
3
|
import type { StyledViewProps } from '../../../styles';
|
|
4
4
|
import type { IconSize } from '../Icon';
|
|
5
5
|
|
|
6
|
-
export type DotIconSize = 16 | 20 | 24;
|
|
6
|
+
export type DotIconSize = 16 | 20 | 24 | 32;
|
|
7
7
|
|
|
8
8
|
export type DotIconPin =
|
|
9
9
|
| 'top-start'
|
|
@@ -24,10 +24,10 @@ import { CustomTabs, Tab } from '../../../../.storybook/components';
|
|
|
24
24
|
|
|
25
25
|
DotIndicator comes in four sizes:
|
|
26
26
|
|
|
27
|
-
- **
|
|
28
|
-
- **
|
|
29
|
-
- **
|
|
30
|
-
- **
|
|
27
|
+
- **sm** - compact dot for tight layouts.
|
|
28
|
+
- **md** (default) - standard dot for most use cases.
|
|
29
|
+
- **lg** - large dot for prominent indicators.
|
|
30
|
+
- **xl** - extra-large dot for maximum visibility.
|
|
31
31
|
|
|
32
32
|
<Canvas of={DotIndicatorStories.SizeShowcase} />
|
|
33
33
|
|
|
@@ -21,7 +21,7 @@ const meta = {
|
|
|
21
21
|
argTypes: {
|
|
22
22
|
size: {
|
|
23
23
|
control: 'radio',
|
|
24
|
-
options: ['
|
|
24
|
+
options: ['sm', 'md', 'lg', 'xl'],
|
|
25
25
|
},
|
|
26
26
|
appearance: {
|
|
27
27
|
control: 'radio',
|
|
@@ -42,10 +42,10 @@ export const Base: Story = {
|
|
|
42
42
|
export const SizeShowcase: Story = {
|
|
43
43
|
render: () => (
|
|
44
44
|
<Box lx={{ flexDirection: 'row', alignItems: 'center', gap: 's12' }}>
|
|
45
|
-
<DotIndicator size='xs' />
|
|
46
45
|
<DotIndicator size='sm' />
|
|
47
46
|
<DotIndicator size='md' />
|
|
48
47
|
<DotIndicator size='lg' />
|
|
48
|
+
<DotIndicator size='xl' />
|
|
49
49
|
</Box>
|
|
50
50
|
),
|
|
51
51
|
};
|
|
@@ -77,10 +77,10 @@ describe('DotIndicator', () => {
|
|
|
77
77
|
expect(ref.current).toBeTruthy();
|
|
78
78
|
});
|
|
79
79
|
|
|
80
|
-
it('should render in
|
|
80
|
+
it('should render in sm size', () => {
|
|
81
81
|
const { toJSON } = render(
|
|
82
82
|
<TestWrapper>
|
|
83
|
-
<DotIndicator size='
|
|
83
|
+
<DotIndicator size='sm' />
|
|
84
84
|
</TestWrapper>,
|
|
85
85
|
);
|
|
86
86
|
|
|
@@ -107,6 +107,16 @@ describe('DotIndicator', () => {
|
|
|
107
107
|
expect(toJSON()).toBeTruthy();
|
|
108
108
|
});
|
|
109
109
|
|
|
110
|
+
it('should render in xl size', () => {
|
|
111
|
+
const { toJSON } = render(
|
|
112
|
+
<TestWrapper>
|
|
113
|
+
<DotIndicator size='xl' />
|
|
114
|
+
</TestWrapper>,
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
expect(toJSON()).toBeTruthy();
|
|
118
|
+
});
|
|
119
|
+
|
|
110
120
|
it('should render with red appearance', () => {
|
|
111
121
|
const { toJSON } = render(
|
|
112
122
|
<TestWrapper>
|
|
@@ -5,7 +5,7 @@ import { Box } from '../Utility';
|
|
|
5
5
|
import type { DotIndicatorProps } from './types';
|
|
6
6
|
|
|
7
7
|
export function DotIndicator({
|
|
8
|
-
size = '
|
|
8
|
+
size = 'md',
|
|
9
9
|
appearance = 'base',
|
|
10
10
|
disabled: disabledProp = false,
|
|
11
11
|
lx = {},
|
|
@@ -63,10 +63,10 @@ const useStyles = ({
|
|
|
63
63
|
return useStyleSheet(
|
|
64
64
|
(t) => {
|
|
65
65
|
const sizeMap = {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
sm: t.sizes.s6,
|
|
67
|
+
md: t.sizes.s8,
|
|
68
|
+
lg: t.sizes.s10,
|
|
69
|
+
xl: t.sizes.s12,
|
|
70
70
|
};
|
|
71
71
|
|
|
72
72
|
const bgColorMap = {
|
|
@@ -4,9 +4,9 @@ import type { StyledViewProps } from '../../../styles';
|
|
|
4
4
|
export type DotIndicatorProps = {
|
|
5
5
|
/**
|
|
6
6
|
* The size of the dot indicator.
|
|
7
|
-
* @default
|
|
7
|
+
* @default md
|
|
8
8
|
*/
|
|
9
|
-
size?: '
|
|
9
|
+
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
10
10
|
/**
|
|
11
11
|
* The appearance of the dot indicator.
|
|
12
12
|
* @default base
|
|
@@ -163,6 +163,13 @@ export const SizeShowcase: Story = {
|
|
|
163
163
|
>
|
|
164
164
|
<MediaImage src={parentSrc} size={64} shape='circle' />
|
|
165
165
|
</DotSymbol>
|
|
166
|
+
<DotSymbol
|
|
167
|
+
src={dotSrc}
|
|
168
|
+
size={mediaImageDotSizeMap[72]}
|
|
169
|
+
pin='bottom-end'
|
|
170
|
+
>
|
|
171
|
+
<MediaImage src={parentSrc} size={72} shape='circle' />
|
|
172
|
+
</DotSymbol>
|
|
166
173
|
</Box>
|
|
167
174
|
<Box lx={{ flexDirection: 'row', alignItems: 'flex-end', gap: 's24' }}>
|
|
168
175
|
<DotSymbol
|
|
@@ -221,6 +228,14 @@ export const SizeShowcase: Story = {
|
|
|
221
228
|
>
|
|
222
229
|
<MediaImage src={parentSrc} size={64} shape='square' />
|
|
223
230
|
</DotSymbol>
|
|
231
|
+
<DotSymbol
|
|
232
|
+
shape='square'
|
|
233
|
+
src={dotSrc}
|
|
234
|
+
size={mediaImageDotSizeMap[72]}
|
|
235
|
+
pin='bottom-end'
|
|
236
|
+
>
|
|
237
|
+
<MediaImage src={parentSrc} size={72} shape='square' />
|
|
238
|
+
</DotSymbol>
|
|
224
239
|
</Box>
|
|
225
240
|
</Box>
|
|
226
241
|
),
|
|
@@ -17,6 +17,7 @@ const dotSquareRadiusMap: Record<DotSymbolSize, number> = {
|
|
|
17
17
|
16: 5,
|
|
18
18
|
20: 6,
|
|
19
19
|
24: 8,
|
|
20
|
+
32: 10,
|
|
20
21
|
};
|
|
21
22
|
|
|
22
23
|
const offsetBySize: Record<DotSymbolSize, number> = {
|
|
@@ -26,6 +27,7 @@ const offsetBySize: Record<DotSymbolSize, number> = {
|
|
|
26
27
|
16: -3,
|
|
27
28
|
20: -3,
|
|
28
29
|
24: -3,
|
|
30
|
+
32: -3,
|
|
29
31
|
};
|
|
30
32
|
|
|
31
33
|
export const mediaImageDotSizeMap: Record<MediaImageSize, DotSymbolSize> = {
|
|
@@ -38,6 +40,7 @@ export const mediaImageDotSizeMap: Record<MediaImageSize, DotSymbolSize> = {
|
|
|
38
40
|
48: 20,
|
|
39
41
|
56: 24,
|
|
40
42
|
64: 24,
|
|
43
|
+
72: 32,
|
|
41
44
|
};
|
|
42
45
|
|
|
43
46
|
export const spotDotSizeMap: Record<SpotSize, DotSymbolSize> = {
|
|
@@ -45,7 +48,7 @@ export const spotDotSizeMap: Record<SpotSize, DotSymbolSize> = {
|
|
|
45
48
|
40: 16,
|
|
46
49
|
48: 20,
|
|
47
50
|
56: 24,
|
|
48
|
-
72:
|
|
51
|
+
72: 32,
|
|
49
52
|
};
|
|
50
53
|
|
|
51
54
|
const pinAxisMap: Record<DotSymbolPin, [vertical: string, horizontal: string]> =
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
import type { StyledViewProps } from '../../../styles';
|
|
3
3
|
|
|
4
|
-
export type DotSymbolSize = 8 | 10 | 12 | 16 | 20 | 24;
|
|
4
|
+
export type DotSymbolSize = 8 | 10 | 12 | 16 | 20 | 24 | 32;
|
|
5
5
|
|
|
6
6
|
export type DotSymbolPin =
|
|
7
7
|
| 'top-start'
|
|
@@ -19,7 +19,7 @@ const useStyles = ({ disabled }: { disabled: boolean }) => {
|
|
|
19
19
|
* A label that should be used to describe a form field.
|
|
20
20
|
*
|
|
21
21
|
* Either choices fields like checkbox, switch or radio.
|
|
22
|
-
* Or text fields like input, textarea,
|
|
22
|
+
* Or text fields like input, textarea, option list, etc.
|
|
23
23
|
*/
|
|
24
24
|
export const Label = ({
|
|
25
25
|
style,
|
|
@@ -11,11 +11,11 @@ import * as MediaButtonStories from './MediaButton.stories';
|
|
|
11
11
|
|
|
12
12
|
## Introduction
|
|
13
13
|
|
|
14
|
-
A specialized media button designed exclusively for
|
|
14
|
+
A specialized media button designed exclusively for option list and dropdown patterns. It displays a label with an optional leading icon and a permanent trailing chevron indicator.
|
|
15
15
|
|
|
16
16
|
> View in [Figma](https://www.figma.com/design/JxaLVMTWirCpU0rsbZ30k7/2.-Components-Library?node-id=6389-45680&m=dev).
|
|
17
17
|
|
|
18
|
-
> **Important**: This component should only be used as a trigger inside
|
|
18
|
+
> **Important**: This component should only be used as a trigger inside an OptionList or dropdown. For standalone actions, use [Button](/docs/action-button--docs) or [IconButton](/docs/action-iconbutton--docs) instead.
|
|
19
19
|
|
|
20
20
|
## Properties
|
|
21
21
|
|
|
@@ -132,10 +132,10 @@ const useStyles = ({
|
|
|
132
132
|
};
|
|
133
133
|
|
|
134
134
|
/**
|
|
135
|
-
* Media button for
|
|
135
|
+
* Media button for option list/dropdown components. Displays a label with an optional
|
|
136
136
|
* leading content and a trailing chevron indicator.
|
|
137
137
|
*
|
|
138
|
-
* This component is intended to be used exclusively as the trigger inside
|
|
138
|
+
* This component is intended to be used exclusively as the trigger inside an OptionList or
|
|
139
139
|
* dropdown pattern. It should not be used as a standalone action button — use `Button`
|
|
140
140
|
* or `IconButton` instead.
|
|
141
141
|
*
|
|
@@ -37,7 +37,7 @@ MediaImage displays an image with consistent sizing and shape. When the image fa
|
|
|
37
37
|
|
|
38
38
|
### Sizes
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
Ten sizes are available (12, 16, 20, 24, 32, 40, 48, 56, 64, 72). Border radius scales with size.
|
|
41
41
|
|
|
42
42
|
<Canvas of={MediaImageStories.SizeShowcase} />
|
|
43
43
|
|
|
@@ -42,6 +42,7 @@ export const SizeShowcase: Story = {
|
|
|
42
42
|
<MediaImage src={exampleSrc} alt='Size 48' size={48} />
|
|
43
43
|
<MediaImage src={exampleSrc} alt='Size 56' size={56} />
|
|
44
44
|
<MediaImage src={exampleSrc} alt='Size 64' size={64} />
|
|
45
|
+
<MediaImage src={exampleSrc} alt='Size 72' size={72} />
|
|
45
46
|
</Box>
|
|
46
47
|
),
|
|
47
48
|
};
|
|
@@ -67,6 +68,7 @@ export const FallbackShowcase: Story = {
|
|
|
67
68
|
<MediaImage fallback='Bitcoin' alt='Bitcoin' size={48} />
|
|
68
69
|
<MediaImage fallback='Bitcoin' alt='Bitcoin' size={56} />
|
|
69
70
|
<MediaImage fallback='Bitcoin' alt='Bitcoin' size={64} />
|
|
71
|
+
<MediaImage fallback='Bitcoin' alt='Bitcoin' size={72} />
|
|
70
72
|
</Box>
|
|
71
73
|
),
|
|
72
74
|
};
|
|
@@ -83,6 +85,7 @@ export const LoadingShowcase: Story = {
|
|
|
83
85
|
<MediaImage loading alt='Loading' size={48} />
|
|
84
86
|
<MediaImage loading alt='Loading' size={56} />
|
|
85
87
|
<MediaImage loading alt='Loading' size={64} />
|
|
88
|
+
<MediaImage loading alt='Loading' size={72} />
|
|
86
89
|
</Box>
|
|
87
90
|
),
|
|
88
91
|
};
|
|
@@ -20,6 +20,7 @@ const borderRadiusMap: Record<MediaImageSize, BorderRadiusKey> = {
|
|
|
20
20
|
48: 'md',
|
|
21
21
|
56: 'lg',
|
|
22
22
|
64: 'lg',
|
|
23
|
+
72: 'lg',
|
|
23
24
|
};
|
|
24
25
|
|
|
25
26
|
export const fontSizeMap: Record<MediaImageSize, number> = {
|
|
@@ -32,6 +33,7 @@ export const fontSizeMap: Record<MediaImageSize, number> = {
|
|
|
32
33
|
48: 24,
|
|
33
34
|
56: 24,
|
|
34
35
|
64: 24,
|
|
36
|
+
72: 32,
|
|
35
37
|
};
|
|
36
38
|
|
|
37
39
|
const useStyles = ({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { StyledViewProps } from '../../../styles';
|
|
2
2
|
|
|
3
|
-
export type MediaImageSize = 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64;
|
|
3
|
+
export type MediaImageSize = 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64 | 72;
|
|
4
4
|
|
|
5
5
|
export type MediaImageShape = 'square' | 'circle';
|
|
6
6
|
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
|
|
18
18
|
## Introduction
|
|
19
19
|
|
|
20
|
-
OptionList is a data-driven, composable selection list designed to be embedded inside a `BottomSheet`, a new screen, or any container.
|
|
20
|
+
OptionList is a data-driven, composable selection list designed to be embedded inside a `BottomSheet`, a new screen, or any container.
|
|
21
21
|
|
|
22
22
|
It handles **selection state**, **automatic grouping** (via a `group` field on items), and exposes a `renderItem` callback for full control over item rendering.
|
|
23
23
|
|
|
@@ -3,7 +3,6 @@ import { createSafeContext } from '@ledgerhq/lumen-utils-shared';
|
|
|
3
3
|
import { I18nProvider } from '../../../i18n';
|
|
4
4
|
import { LumenStyleSheetProvider } from '../../../styles';
|
|
5
5
|
|
|
6
|
-
import { GlobalSelectProvider } from '../Select/GlobalSelectContext';
|
|
7
6
|
import { GlobalTooltipProvider } from '../Tooltip/GlobalTooltipContext';
|
|
8
7
|
import type { ThemeProviderProps } from './types';
|
|
9
8
|
|
|
@@ -19,9 +18,7 @@ const ThemeProvider = ({
|
|
|
19
18
|
<ThemeContextProvider value={{}}>
|
|
20
19
|
<LumenStyleSheetProvider colorScheme={colorScheme} themes={themes}>
|
|
21
20
|
<I18nProvider locale={locale}>
|
|
22
|
-
<
|
|
23
|
-
<GlobalTooltipProvider>{children}</GlobalTooltipProvider>
|
|
24
|
-
</GlobalSelectProvider>
|
|
21
|
+
<GlobalTooltipProvider>{children}</GlobalTooltipProvider>
|
|
25
22
|
</I18nProvider>
|
|
26
23
|
</LumenStyleSheetProvider>
|
|
27
24
|
</ThemeContextProvider>
|
|
@@ -33,13 +33,13 @@ import createIcon from '../../Components/Icon/createIcon';
|
|
|
33
33
|
*/
|
|
34
34
|
export const Lightbulb = createIcon(
|
|
35
35
|
'Lightbulb',
|
|
36
|
-
<Svg width={24} height={24} fill='currentColor' viewBox='0 0
|
|
36
|
+
<Svg width={24} height={24} fill='currentColor' viewBox='0 0 16 16'>
|
|
37
37
|
<Path
|
|
38
38
|
stroke='currentColor'
|
|
39
39
|
strokeLinecap='round'
|
|
40
40
|
strokeLinejoin='round'
|
|
41
|
-
strokeWidth={1.
|
|
42
|
-
d='
|
|
41
|
+
strokeWidth={1.3}
|
|
42
|
+
d='M10 10.127H6m7.333-6.794.794-.793M2.667 10l-.794.793m1.46-8.126-.793-.794M13.333 10l.794.793M14 6.667h1.127m-14.254 0H2M6 12h3.913m-4.22-2.07a3.99 3.99 0 0 1-1.646-3.906c.266-1.738 1.713-3.125 3.466-3.33a3.997 3.997 0 0 1 4.484 3.967c0 1.346-.674 2.54-1.7 3.265a.67.67 0 0 0-.307.553v1.84c0 .92-.747 1.667-1.667 1.667h-.666a1.663 1.663 0 0 1-1.667-1.667v-1.842a.71.71 0 0 0-.307-.566z'
|
|
43
43
|
/>
|
|
44
44
|
</Svg>,
|
|
45
45
|
);
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { useCallback, useEffect } from 'react';
|
|
4
|
-
import { Pressable } from 'react-native';
|
|
5
|
-
import { useStyleSheet } from "../../../styles/index.js";
|
|
6
|
-
import { Check } from "../../Symbols/index.js";
|
|
7
|
-
import { BottomSheet, BottomSheetHeader, BottomSheetView, useBottomSheetRef } from "../BottomSheet/index.js";
|
|
8
|
-
import { Divider } from "../Divider/index.js";
|
|
9
|
-
import { Box, Text } from "../Utility/index.js";
|
|
10
|
-
import { useGlobalSelectSafeContext } from "./GlobalSelectContext.js";
|
|
11
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
12
|
-
const useStyles = () => {
|
|
13
|
-
return useStyleSheet(t => ({
|
|
14
|
-
bottomSheetView: {
|
|
15
|
-
paddingHorizontal: t.spacings.s8
|
|
16
|
-
},
|
|
17
|
-
groupLabel: {
|
|
18
|
-
marginBottom: t.spacings.s4,
|
|
19
|
-
paddingHorizontal: t.spacings.s8,
|
|
20
|
-
paddingTop: t.spacings.s8,
|
|
21
|
-
color: t.colors.text.muted,
|
|
22
|
-
...t.typographies.body3SemiBold
|
|
23
|
-
},
|
|
24
|
-
item: {
|
|
25
|
-
flexDirection: 'row',
|
|
26
|
-
alignItems: 'center',
|
|
27
|
-
borderRadius: t.borderRadius.sm,
|
|
28
|
-
padding: t.spacings.s8,
|
|
29
|
-
backgroundColor: t.colors.bg.baseTransparent
|
|
30
|
-
},
|
|
31
|
-
itemPressed: {
|
|
32
|
-
backgroundColor: t.colors.bg.baseTransparentPressed
|
|
33
|
-
},
|
|
34
|
-
itemDisabled: {
|
|
35
|
-
opacity: 0.5
|
|
36
|
-
},
|
|
37
|
-
itemLabel: {
|
|
38
|
-
flex: 1,
|
|
39
|
-
color: t.colors.text.base,
|
|
40
|
-
...t.typographies.body2
|
|
41
|
-
},
|
|
42
|
-
itemLabelDisabled: {
|
|
43
|
-
color: t.colors.text.disabled
|
|
44
|
-
}
|
|
45
|
-
}), []);
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* BottomSheet component that displays select options.
|
|
50
|
-
* This should be placed at the root level inside GestureHandlerRootView.
|
|
51
|
-
*
|
|
52
|
-
* @see {@link https://ldls.vercel.app/?path=/docs/components-select-overview--docs Storybook}
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* import { GlobalSelectProvider, GlobalSelectBottomSheet } from '@ledgerhq/lumen-ui-rnative';
|
|
56
|
-
*
|
|
57
|
-
* function App() {
|
|
58
|
-
* return (
|
|
59
|
-
* <GestureHandlerRootView>
|
|
60
|
-
* <YourAppContent />
|
|
61
|
-
* <GlobalSelectBottomSheet />
|
|
62
|
-
* </GestureHandlerRootView>
|
|
63
|
-
* );
|
|
64
|
-
* }
|
|
65
|
-
*/
|
|
66
|
-
export const GlobalSelectBottomSheet = () => {
|
|
67
|
-
const bottomSheetRef = useBottomSheetRef();
|
|
68
|
-
const styles = useStyles();
|
|
69
|
-
/**
|
|
70
|
-
* This is the only component that subscribes to currentSelect
|
|
71
|
-
* All other components use refs to avoid re-renders
|
|
72
|
-
*/
|
|
73
|
-
const {
|
|
74
|
-
currentSelect,
|
|
75
|
-
hideSelectRef
|
|
76
|
-
} = useGlobalSelectSafeContext({
|
|
77
|
-
consumerName: 'useGlobalSelectBottomSheetContext',
|
|
78
|
-
contextRequired: true
|
|
79
|
-
});
|
|
80
|
-
useEffect(() => {
|
|
81
|
-
if (currentSelect) {
|
|
82
|
-
bottomSheetRef.current?.present();
|
|
83
|
-
} else {
|
|
84
|
-
bottomSheetRef.current?.dismiss();
|
|
85
|
-
}
|
|
86
|
-
}, [currentSelect, bottomSheetRef]);
|
|
87
|
-
const handleClose = useCallback(() => {
|
|
88
|
-
currentSelect?.setOpen?.(false);
|
|
89
|
-
hideSelectRef.current();
|
|
90
|
-
}, [hideSelectRef, currentSelect]);
|
|
91
|
-
const handleSelectItem = useCallback(value => {
|
|
92
|
-
if (currentSelect) {
|
|
93
|
-
currentSelect.onSelectValue(value);
|
|
94
|
-
currentSelect.setOpen?.(false);
|
|
95
|
-
hideSelectRef.current();
|
|
96
|
-
}
|
|
97
|
-
}, [currentSelect, hideSelectRef]);
|
|
98
|
-
return /*#__PURE__*/_jsx(BottomSheet, {
|
|
99
|
-
ref: bottomSheetRef,
|
|
100
|
-
snapPoints: null,
|
|
101
|
-
backdropPressBehavior: "close",
|
|
102
|
-
onClose: handleClose,
|
|
103
|
-
maxDynamicContentSize: "fullWithOffset",
|
|
104
|
-
enableDynamicSizing: true,
|
|
105
|
-
enablePanDownToClose: true,
|
|
106
|
-
children: /*#__PURE__*/_jsx(BottomSheetView, {
|
|
107
|
-
style: styles.bottomSheetView,
|
|
108
|
-
children: currentSelect && /*#__PURE__*/_jsxs(_Fragment, {
|
|
109
|
-
children: [currentSelect.label && /*#__PURE__*/_jsx(BottomSheetHeader, {
|
|
110
|
-
title: currentSelect.label,
|
|
111
|
-
density: "compact"
|
|
112
|
-
}), /*#__PURE__*/_jsx(Box, {
|
|
113
|
-
lx: {
|
|
114
|
-
gap: 's4'
|
|
115
|
-
},
|
|
116
|
-
children: currentSelect.items.map((item, index) => {
|
|
117
|
-
if (item.type === 'separator') {
|
|
118
|
-
return /*#__PURE__*/_jsx(Divider, {
|
|
119
|
-
lx: {
|
|
120
|
-
marginVertical: 's4',
|
|
121
|
-
marginHorizontal: 's8'
|
|
122
|
-
}
|
|
123
|
-
}, `separator-${index}`);
|
|
124
|
-
}
|
|
125
|
-
if (item.type === 'group-label') {
|
|
126
|
-
return /*#__PURE__*/_jsx(Text, {
|
|
127
|
-
style: styles.groupLabel,
|
|
128
|
-
children: item.label
|
|
129
|
-
}, `label-${index}`);
|
|
130
|
-
}
|
|
131
|
-
const isSelected = currentSelect.selectedValue === item.value;
|
|
132
|
-
return /*#__PURE__*/_jsx(Pressable, {
|
|
133
|
-
disabled: item.disabled,
|
|
134
|
-
onPress: () => handleSelectItem(item.value),
|
|
135
|
-
children: ({
|
|
136
|
-
pressed
|
|
137
|
-
}) => /*#__PURE__*/_jsxs(Box, {
|
|
138
|
-
style: [styles.item, pressed && styles.itemPressed, item.disabled && styles.itemDisabled],
|
|
139
|
-
children: [/*#__PURE__*/_jsx(Text, {
|
|
140
|
-
style: [styles.itemLabel, item.disabled && styles.itemLabelDisabled],
|
|
141
|
-
numberOfLines: 1,
|
|
142
|
-
children: item.label
|
|
143
|
-
}), isSelected && /*#__PURE__*/_jsx(Check, {
|
|
144
|
-
size: 24,
|
|
145
|
-
color: "active"
|
|
146
|
-
})]
|
|
147
|
-
})
|
|
148
|
-
}, item.value);
|
|
149
|
-
})
|
|
150
|
-
})]
|
|
151
|
-
})
|
|
152
|
-
})
|
|
153
|
-
});
|
|
154
|
-
};
|
|
155
|
-
//# sourceMappingURL=GlobalSelectBottomSheet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","Pressable","useStyleSheet","Check","BottomSheet","BottomSheetHeader","BottomSheetView","useBottomSheetRef","Divider","Box","Text","useGlobalSelectSafeContext","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","useStyles","t","bottomSheetView","paddingHorizontal","spacings","s8","groupLabel","marginBottom","s4","paddingTop","color","colors","text","muted","typographies","body3SemiBold","item","flexDirection","alignItems","borderRadius","sm","padding","backgroundColor","bg","baseTransparent","itemPressed","baseTransparentPressed","itemDisabled","opacity","itemLabel","flex","base","body2","itemLabelDisabled","disabled","GlobalSelectBottomSheet","bottomSheetRef","styles","currentSelect","hideSelectRef","consumerName","contextRequired","current","present","dismiss","handleClose","setOpen","handleSelectItem","value","onSelectValue","ref","snapPoints","backdropPressBehavior","onClose","maxDynamicContentSize","enableDynamicSizing","enablePanDownToClose","children","style","label","title","density","lx","gap","items","map","index","type","marginVertical","marginHorizontal","isSelected","selectedValue","onPress","pressed","numberOfLines","size"],"sourceRoot":"../../../../../src","sources":["lib/Components/Select/GlobalSelectBottomSheet.tsx"],"mappings":"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","ignoreList":[]}
|