@ledgerhq/lumen-ui-rnative 0.0.70 → 0.0.72
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/.storybook/preview.tsx +4 -0
- package/dist/package.json +4 -4
- package/dist/src/i18n/locales/de.json +3 -0
- package/dist/src/i18n/locales/en.json +3 -0
- package/dist/src/i18n/locales/es.json +3 -0
- package/dist/src/i18n/locales/fr.json +3 -0
- package/dist/src/i18n/locales/ja.json +3 -0
- package/dist/src/i18n/locales/ko.json +3 -0
- package/dist/src/i18n/locales/pt.json +3 -0
- package/dist/src/i18n/locales/ru.json +3 -0
- package/dist/src/i18n/locales/th.json +3 -0
- package/dist/src/i18n/locales/tr.json +3 -0
- package/dist/src/i18n/locales/zh.json +3 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/lib/Animations/Pulse/Pulse.d.ts +3 -0
- package/dist/src/lib/Animations/Pulse/Pulse.d.ts.map +1 -0
- package/dist/src/lib/Animations/Pulse/Pulse.js +46 -0
- package/dist/src/lib/Animations/Pulse/Pulse.stories.d.ts +9 -0
- package/dist/src/lib/Animations/Pulse/Pulse.stories.d.ts.map +1 -0
- package/dist/src/lib/Animations/Pulse/Pulse.stories.js +38 -0
- package/dist/src/lib/Animations/Pulse/index.d.ts +3 -0
- package/dist/src/lib/Animations/Pulse/index.d.ts.map +1 -0
- package/dist/src/lib/Animations/Pulse/index.js +2 -0
- package/dist/src/lib/Animations/Pulse/types.d.ts +18 -0
- package/dist/src/lib/Animations/Pulse/types.d.ts.map +1 -0
- package/dist/src/lib/Animations/Pulse/types.js +1 -0
- package/dist/src/lib/Animations/Spin/Spin.d.ts +3 -0
- package/dist/src/lib/Animations/Spin/Spin.d.ts.map +1 -0
- package/dist/src/lib/Animations/Spin/Spin.js +23 -0
- package/dist/src/lib/Animations/Spin/Spin.stories.d.ts +9 -0
- package/dist/src/lib/Animations/Spin/Spin.stories.d.ts.map +1 -0
- package/dist/src/lib/Animations/Spin/Spin.stories.js +27 -0
- package/dist/src/lib/Animations/Spin/index.d.ts +3 -0
- package/dist/src/lib/Animations/Spin/index.d.ts.map +1 -0
- package/dist/src/lib/Animations/Spin/index.js +2 -0
- package/dist/src/lib/Animations/Spin/types.d.ts +14 -0
- package/dist/src/lib/Animations/Spin/types.d.ts.map +1 -0
- package/dist/src/lib/Animations/Spin/types.js +1 -0
- package/dist/src/lib/Animations/index.d.ts +4 -0
- package/dist/src/lib/Animations/index.d.ts.map +1 -0
- package/dist/src/lib/Animations/index.js +3 -0
- package/dist/src/lib/Animations/types.d.ts +2 -0
- package/dist/src/lib/Animations/types.d.ts.map +1 -0
- package/dist/src/lib/Animations/types.js +1 -0
- package/dist/src/lib/Components/AmountDisplay/AmountDisplay.d.ts +5 -7
- package/dist/src/lib/Components/AmountDisplay/AmountDisplay.d.ts.map +1 -1
- package/dist/src/lib/Components/AmountDisplay/AmountDisplay.js +7 -6
- package/dist/src/lib/Components/AmountDisplay/AmountDisplay.stories.d.ts +1 -0
- package/dist/src/lib/Components/AmountDisplay/AmountDisplay.stories.d.ts.map +1 -1
- package/dist/src/lib/Components/AmountDisplay/AmountDisplay.stories.js +5 -0
- package/dist/src/lib/Components/AmountDisplay/types.d.ts +7 -1
- package/dist/src/lib/Components/AmountDisplay/types.d.ts.map +1 -1
- package/dist/src/lib/Components/Skeleton/Skeleton.d.ts +21 -0
- package/dist/src/lib/Components/Skeleton/Skeleton.d.ts.map +1 -0
- package/dist/src/lib/Components/Skeleton/Skeleton.js +81 -0
- package/dist/src/lib/Components/Skeleton/Skeleton.stories.d.ts +11 -0
- package/dist/src/lib/Components/Skeleton/Skeleton.stories.d.ts.map +1 -0
- package/dist/src/lib/Components/Skeleton/Skeleton.stories.js +49 -0
- package/dist/src/lib/Components/Skeleton/index.d.ts +3 -0
- package/dist/src/lib/Components/Skeleton/index.d.ts.map +1 -0
- package/dist/src/lib/Components/Skeleton/index.js +2 -0
- package/dist/src/lib/Components/Skeleton/types.d.ts +10 -0
- package/dist/src/lib/Components/Skeleton/types.d.ts.map +1 -0
- package/dist/src/lib/Components/Skeleton/types.js +1 -0
- package/dist/src/lib/Components/Spinner/Spinner.d.ts.map +1 -1
- package/dist/src/lib/Components/Spinner/Spinner.js +2 -23
- package/dist/src/lib/Components/Stepper/Stepper.d.ts +16 -0
- package/dist/src/lib/Components/Stepper/Stepper.d.ts.map +1 -0
- package/dist/src/lib/Components/Stepper/Stepper.js +74 -0
- package/dist/src/lib/Components/Stepper/Stepper.stories.d.ts +9 -0
- package/dist/src/lib/Components/Stepper/Stepper.stories.d.ts.map +1 -0
- package/dist/src/lib/Components/Stepper/Stepper.stories.js +35 -0
- package/dist/src/lib/Components/Stepper/index.d.ts +3 -0
- package/dist/src/lib/Components/Stepper/index.d.ts.map +1 -0
- package/dist/src/lib/Components/Stepper/index.js +2 -0
- package/dist/src/lib/Components/Stepper/types.d.ts +21 -0
- package/dist/src/lib/Components/Stepper/types.d.ts.map +1 -0
- package/dist/src/lib/Components/Stepper/types.js +1 -0
- package/dist/src/lib/Components/TabBar/TabBar.d.ts +1 -0
- package/dist/src/lib/Components/TabBar/TabBar.d.ts.map +1 -1
- package/dist/src/lib/Components/TabBar/TabBar.js +2 -1
- package/dist/src/lib/Components/TabBar/index.d.ts +1 -1
- package/dist/src/lib/Components/TabBar/index.d.ts.map +1 -1
- package/dist/src/lib/Components/TabBar/index.js +1 -1
- package/dist/src/lib/Components/TileButton/TileButton.d.ts +4 -3
- package/dist/src/lib/Components/TileButton/TileButton.d.ts.map +1 -1
- package/dist/src/lib/Components/TileButton/TileButton.js +3 -4
- package/dist/src/lib/Components/index.d.ts +3 -0
- package/dist/src/lib/Components/index.d.ts.map +1 -1
- package/dist/src/lib/Components/index.js +3 -0
- package/dist/src/styles/types/factories.types.d.ts +1 -1
- package/dist/src/styles/types/factories.types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/i18n/locales/de.json +3 -0
- package/src/i18n/locales/en.json +3 -0
- package/src/i18n/locales/es.json +3 -0
- package/src/i18n/locales/fr.json +3 -0
- package/src/i18n/locales/ja.json +3 -0
- package/src/i18n/locales/ko.json +3 -0
- package/src/i18n/locales/pt.json +3 -0
- package/src/i18n/locales/ru.json +3 -0
- package/src/i18n/locales/th.json +3 -0
- package/src/i18n/locales/tr.json +3 -0
- package/src/i18n/locales/zh.json +3 -0
- package/src/index.ts +1 -0
- package/src/lib/Animations/Pulse/Pulse.mdx +86 -0
- package/src/lib/Animations/Pulse/Pulse.stories.tsx +90 -0
- package/src/lib/Animations/Pulse/Pulse.tsx +55 -0
- package/src/lib/Animations/Pulse/index.ts +2 -0
- package/src/lib/Animations/Pulse/types.ts +18 -0
- package/src/lib/Animations/Spin/Spin.mdx +85 -0
- package/src/lib/Animations/Spin/Spin.stories.tsx +72 -0
- package/src/lib/Animations/Spin/Spin.tsx +34 -0
- package/src/lib/Animations/Spin/index.ts +2 -0
- package/src/lib/Animations/Spin/types.ts +14 -0
- package/src/lib/Animations/index.ts +3 -0
- package/src/lib/Animations/types.ts +11 -0
- package/src/lib/Components/AmountDisplay/AmountDisplay.mdx +6 -0
- package/src/lib/Components/AmountDisplay/AmountDisplay.stories.tsx +12 -0
- package/src/lib/Components/AmountDisplay/AmountDisplay.test.tsx +13 -0
- package/src/lib/Components/AmountDisplay/AmountDisplay.tsx +39 -35
- package/src/lib/Components/AmountDisplay/types.ts +7 -1
- package/src/lib/Components/Skeleton/Skeleton.mdx +200 -0
- package/src/lib/Components/Skeleton/Skeleton.stories.tsx +89 -0
- package/src/lib/Components/Skeleton/Skeleton.test.tsx +54 -0
- package/src/lib/Components/Skeleton/Skeleton.tsx +137 -0
- package/src/lib/Components/Skeleton/index.ts +2 -0
- package/src/lib/Components/Skeleton/types.ts +10 -0
- package/src/lib/Components/Spinner/Spinner.tsx +3 -35
- package/src/lib/Components/Stepper/Stepper.mdx +217 -0
- package/src/lib/Components/Stepper/Stepper.stories.tsx +62 -0
- package/src/lib/Components/Stepper/Stepper.test.tsx +132 -0
- package/src/lib/Components/Stepper/Stepper.tsx +159 -0
- package/src/lib/Components/Stepper/index.ts +2 -0
- package/src/lib/Components/Stepper/types.ts +21 -0
- package/src/lib/Components/TabBar/TabBar.tsx +2 -1
- package/src/lib/Components/TabBar/index.ts +1 -1
- package/src/lib/Components/TileButton/TileButton.tsx +35 -44
- package/src/lib/Components/index.ts +3 -0
- package/src/styles/types/factories.types.ts +1 -1
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Pulse } from '../../Animations/Pulse';
|
|
3
|
+
import { Box } from '../Utility';
|
|
4
|
+
/** Internal base skeleton element */
|
|
5
|
+
const BaseSkeleton = ({ lx, ...props }) => {
|
|
6
|
+
return (_jsx(Box, { lx: {
|
|
7
|
+
borderRadius: 'md',
|
|
8
|
+
backgroundColor: 'mutedTransparent',
|
|
9
|
+
...lx,
|
|
10
|
+
}, ...props }));
|
|
11
|
+
};
|
|
12
|
+
BaseSkeleton.displayName = 'BaseSkeleton';
|
|
13
|
+
const ListItemSkeleton = ({ lx, ...props }) => {
|
|
14
|
+
return (_jsxs(Box, { lx: {
|
|
15
|
+
flexDirection: 'row',
|
|
16
|
+
width: 'full',
|
|
17
|
+
alignItems: 'center',
|
|
18
|
+
gap: 's16',
|
|
19
|
+
paddingVertical: 's8',
|
|
20
|
+
...lx,
|
|
21
|
+
}, ...props, children: [_jsx(BaseSkeleton, { lx: {
|
|
22
|
+
width: 's48',
|
|
23
|
+
height: 's48',
|
|
24
|
+
borderRadius: 'full',
|
|
25
|
+
flexShrink: 0,
|
|
26
|
+
} }), _jsxs(Box, { lx: { flex: 1, flexDirection: 'column', gap: 's10' }, children: [_jsx(BaseSkeleton, { lx: { height: 's12', width: 's176', borderRadius: 'full' } }), _jsx(BaseSkeleton, { lx: { height: 's12', width: 's112', borderRadius: 'full' } })] })] }));
|
|
27
|
+
};
|
|
28
|
+
ListItemSkeleton.displayName = 'ListItemSkeleton';
|
|
29
|
+
const TileSkeleton = ({ lx, ...props }) => {
|
|
30
|
+
return (_jsxs(Box, { lx: {
|
|
31
|
+
flexDirection: 'column',
|
|
32
|
+
width: 's112',
|
|
33
|
+
alignItems: 'center',
|
|
34
|
+
gap: 's12',
|
|
35
|
+
borderRadius: 'md',
|
|
36
|
+
paddingHorizontal: 's8',
|
|
37
|
+
paddingVertical: 's16',
|
|
38
|
+
...lx,
|
|
39
|
+
}, ...props, children: [_jsx(BaseSkeleton, { lx: {
|
|
40
|
+
width: 's48',
|
|
41
|
+
height: 's48',
|
|
42
|
+
borderRadius: 'full',
|
|
43
|
+
flexShrink: 0,
|
|
44
|
+
} }), _jsxs(Box, { lx: {
|
|
45
|
+
width: 'full',
|
|
46
|
+
flexDirection: 'column',
|
|
47
|
+
alignItems: 'center',
|
|
48
|
+
gap: 's8',
|
|
49
|
+
}, children: [_jsx(BaseSkeleton, { lx: { height: 's12', width: 's48', borderRadius: 'full' } }), _jsx(BaseSkeleton, { lx: { height: 's12', width: 's64', borderRadius: 'full' } })] })] }));
|
|
50
|
+
};
|
|
51
|
+
TileSkeleton.displayName = 'TileSkeleton';
|
|
52
|
+
const componentsMap = {
|
|
53
|
+
'list-item': ListItemSkeleton,
|
|
54
|
+
tile: TileSkeleton,
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* A skeleton component that displays a pulsing placeholder for loading content.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* <Skeleton lx={{ height: 's16', width: 's256' }} />
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* // List item variant
|
|
64
|
+
* <Skeleton component='list-item' lx={{ width: 's320' }} />
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* // Tile variant
|
|
68
|
+
* <Skeleton component='tile' />
|
|
69
|
+
*/
|
|
70
|
+
const Skeleton = ({ lx, component, ...props }) => {
|
|
71
|
+
/**
|
|
72
|
+
* Check if the component is a valid pre-built variant and return the corresponding component.
|
|
73
|
+
*/
|
|
74
|
+
if (component && componentsMap[component]) {
|
|
75
|
+
const Component = componentsMap[component];
|
|
76
|
+
return (_jsx(Pulse, { animate: true, children: _jsx(Component, { ...props, lx: lx }) }));
|
|
77
|
+
}
|
|
78
|
+
return (_jsx(Pulse, { animate: true, children: _jsx(BaseSkeleton, { testID: 'skeleton', lx: lx, ...props }) }));
|
|
79
|
+
};
|
|
80
|
+
Skeleton.displayName = 'Skeleton';
|
|
81
|
+
export { Skeleton };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-native-web-vite';
|
|
2
|
+
import { Skeleton } from './Skeleton';
|
|
3
|
+
declare const meta: Meta<typeof Skeleton>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Skeleton>;
|
|
6
|
+
export declare const Base: Story;
|
|
7
|
+
export declare const WithListItem: Story;
|
|
8
|
+
export declare const WithTile: Story;
|
|
9
|
+
export declare const SizeShowcase: Story;
|
|
10
|
+
export declare const ShapeShowcase: Story;
|
|
11
|
+
//# sourceMappingURL=Skeleton.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skeleton.stories.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Skeleton/Skeleton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,QAAQ,CAa/B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEvC,eAAO,MAAM,IAAI,EAAE,KAelB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAMtB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAe1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAgB3B,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box } from '../Utility/Box';
|
|
3
|
+
import { Skeleton } from './Skeleton';
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'Communication/Skeleton',
|
|
6
|
+
component: Skeleton,
|
|
7
|
+
parameters: {
|
|
8
|
+
actions: { disable: true },
|
|
9
|
+
},
|
|
10
|
+
argTypes: {
|
|
11
|
+
component: {
|
|
12
|
+
control: 'select',
|
|
13
|
+
options: [undefined, 'list-item', 'tile'],
|
|
14
|
+
description: 'Pre-built skeleton component variant',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
export default meta;
|
|
19
|
+
export const Base = {
|
|
20
|
+
args: {
|
|
21
|
+
lx: {
|
|
22
|
+
height: 's16',
|
|
23
|
+
width: 's256',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
render: (args) => (_jsx(Box, { lx: { padding: 's16', backgroundColor: 'canvas', borderRadius: 'md' }, children: _jsx(Skeleton, { component: args.component, lx: args.component ? undefined : args.lx }) })),
|
|
27
|
+
};
|
|
28
|
+
export const WithListItem = {
|
|
29
|
+
render: () => (_jsx(Box, { lx: { padding: 's16', backgroundColor: 'canvas', borderRadius: 'md' }, children: _jsx(Skeleton, { component: 'list-item' }) })),
|
|
30
|
+
};
|
|
31
|
+
export const WithTile = {
|
|
32
|
+
render: () => (_jsx(Box, { lx: { padding: 's16', backgroundColor: 'canvas', borderRadius: 'md' }, children: _jsx(Skeleton, { component: 'tile' }) })),
|
|
33
|
+
};
|
|
34
|
+
export const SizeShowcase = {
|
|
35
|
+
render: () => (_jsxs(Box, { lx: {
|
|
36
|
+
padding: 's16',
|
|
37
|
+
backgroundColor: 'canvas',
|
|
38
|
+
borderRadius: 'md',
|
|
39
|
+
gap: 's4',
|
|
40
|
+
}, children: [_jsx(Skeleton, { lx: { height: 's40', width: 's56' } }), _jsx(Skeleton, { lx: { height: 's12', width: 's112' } }), _jsx(Skeleton, { lx: { height: 's128', width: 's256' } })] })),
|
|
41
|
+
};
|
|
42
|
+
export const ShapeShowcase = {
|
|
43
|
+
render: () => (_jsxs(Box, { lx: {
|
|
44
|
+
padding: 's16',
|
|
45
|
+
backgroundColor: 'canvas',
|
|
46
|
+
borderRadius: 'md',
|
|
47
|
+
gap: 's4',
|
|
48
|
+
}, children: [_jsx(Skeleton, { lx: { height: 's40', width: 's256', borderRadius: 'none' } }), _jsx(Skeleton, { lx: { height: 's40', width: 's256', borderRadius: 'lg' } }), _jsx(Skeleton, { lx: { width: 's48', height: 's48', borderRadius: 'full' } }), _jsx(Skeleton, { lx: { width: 's48', height: 's48', borderRadius: 'md' } })] })),
|
|
49
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Skeleton/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { StyledViewProps } from '../../../styles';
|
|
2
|
+
export type SkeletonProps = {
|
|
3
|
+
/**
|
|
4
|
+
* Pre-built skeleton component variant
|
|
5
|
+
* - `list-item`: Horizontal layout with circle and two text lines
|
|
6
|
+
* - `tile`: Vertical centered layout with circle and two text lines in a rounded container
|
|
7
|
+
*/
|
|
8
|
+
component?: 'list-item' | 'tile';
|
|
9
|
+
} & Omit<StyledViewProps, 'children'>;
|
|
10
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Skeleton/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;CAClC,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Spinner/Spinner.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Spinner/Spinner.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO;yCAMjB,YAAY;;CA2Bd,CAAC"}
|
|
@@ -1,30 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { memo, useEffect, useRef } from 'react';
|
|
3
|
-
import { Animated, Easing } from 'react-native';
|
|
4
2
|
import Svg, { Path } from 'react-native-svg';
|
|
5
3
|
import { useCommonTranslation } from '../../../i18n';
|
|
6
4
|
import { useResolveTextStyle, useTheme } from '../../../styles';
|
|
7
|
-
import {
|
|
5
|
+
import { Spin } from '../../Animations/Spin';
|
|
8
6
|
import { Box } from '../Utility';
|
|
9
|
-
const SpinAnimation = memo(({ children }) => {
|
|
10
|
-
const spinValue = useRef(new Animated.Value(0)).current;
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
const animation = Animated.loop(Animated.timing(spinValue, {
|
|
13
|
-
toValue: 1,
|
|
14
|
-
duration: 1000,
|
|
15
|
-
easing: Easing.linear,
|
|
16
|
-
useNativeDriver: RuntimeConstants.isNative,
|
|
17
|
-
}));
|
|
18
|
-
animation.start();
|
|
19
|
-
return () => animation.stop();
|
|
20
|
-
}, [spinValue]);
|
|
21
|
-
const spin = spinValue.interpolate({
|
|
22
|
-
inputRange: [0, 1],
|
|
23
|
-
outputRange: ['0deg', '360deg'],
|
|
24
|
-
});
|
|
25
|
-
return (_jsx(Animated.View, { style: { transform: [{ rotate: spin }] }, children: children }));
|
|
26
|
-
});
|
|
27
|
-
SpinAnimation.displayName = 'SpinAnimation';
|
|
28
7
|
/**
|
|
29
8
|
* A basic spinner component for loading states.
|
|
30
9
|
*
|
|
@@ -44,6 +23,6 @@ export const Spinner = ({ lx = {}, size = 16, color, ref, ...props }) => {
|
|
|
44
23
|
const { theme } = useTheme();
|
|
45
24
|
const resolvedColorStyle = useResolveTextStyle({ color });
|
|
46
25
|
const strokeColor = resolvedColorStyle?.color ?? color ?? theme.colors.text.base;
|
|
47
|
-
return (_jsx(Box, { ref: ref, lx: { flexShrink: 0, ...lx }, ...props, children: _jsx(
|
|
26
|
+
return (_jsx(Box, { ref: ref, lx: { flexShrink: 0, ...lx }, ...props, children: _jsx(Spin, { children: _jsx(Svg, { width: size, height: size, viewBox: '0 0 16 16', fill: 'none', accessibilityLabel: t('components.spinner.loadingAriaLabel'), children: _jsx(Path, { d: 'M8 1.5C11.5899 1.5 14.5 4.41015 14.5 8C14.5 11.5899 11.5899 14.5 8 14.5C4.41015 14.5 1.5 11.5899 1.5 8', stroke: strokeColor, strokeWidth: '1.5', strokeLinecap: 'round' }) }) }) }));
|
|
48
27
|
};
|
|
49
28
|
Spinner.displayName = 'Spinner';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { StepperProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* A circular stepper component showing progress as current step out of total steps.
|
|
4
|
+
* Renders a track arc with a progress arc and a center label.
|
|
5
|
+
*
|
|
6
|
+
* @see [Figma – Stepper](https://www.figma.com/design/JxaLVMTWirCpU0rsbZ30k7/2.-Components-Library?node-id=11977-94&m=dev)
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <Stepper currentStep={1} totalSteps={4} />
|
|
10
|
+
* <Stepper currentStep={0} totalSteps={9} disabled /> // Shows minimal dot, disabled style
|
|
11
|
+
*/
|
|
12
|
+
export declare const Stepper: {
|
|
13
|
+
({ lx, currentStep, totalSteps, disabled, label, ref, ...props }: StepperProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
displayName: string;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=Stepper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stepper.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Stepper/Stepper.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAOvC;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO;sEAQjB,YAAY;;CA2Hd,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { getStepperCalculations } from '@ledgerhq/lumen-utils-shared';
|
|
3
|
+
import { useEffect, useRef } from 'react';
|
|
4
|
+
import { Animated, Easing } from 'react-native';
|
|
5
|
+
import Svg, { Circle } from 'react-native-svg';
|
|
6
|
+
import { useCommonTranslation } from '../../../i18n';
|
|
7
|
+
import { useTheme } from '../../../styles';
|
|
8
|
+
import { Box } from '../Utility/Box';
|
|
9
|
+
import { Text } from '../Utility/Text';
|
|
10
|
+
const SIZE = 48;
|
|
11
|
+
const STROKE_WIDTH = 4;
|
|
12
|
+
const AnimatedCircle = Animated.createAnimatedComponent(Circle);
|
|
13
|
+
/**
|
|
14
|
+
* A circular stepper component showing progress as current step out of total steps.
|
|
15
|
+
* Renders a track arc with a progress arc and a center label.
|
|
16
|
+
*
|
|
17
|
+
* @see [Figma – Stepper](https://www.figma.com/design/JxaLVMTWirCpU0rsbZ30k7/2.-Components-Library?node-id=11977-94&m=dev)
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* <Stepper currentStep={1} totalSteps={4} />
|
|
21
|
+
* <Stepper currentStep={0} totalSteps={9} disabled /> // Shows minimal dot, disabled style
|
|
22
|
+
*/
|
|
23
|
+
export const Stepper = ({ lx = {}, currentStep, totalSteps, disabled = false, label, ref, ...props }) => {
|
|
24
|
+
const { t } = useCommonTranslation();
|
|
25
|
+
const { theme } = useTheme();
|
|
26
|
+
const { displayLabel, r, cx, cy, trackDashArray, progressDashArray, progressDashOffset, } = getStepperCalculations({
|
|
27
|
+
currentStep,
|
|
28
|
+
totalSteps,
|
|
29
|
+
size: SIZE,
|
|
30
|
+
label,
|
|
31
|
+
strokeWidth: STROKE_WIDTH,
|
|
32
|
+
});
|
|
33
|
+
const animatedOffset = useRef(new Animated.Value(progressDashOffset)).current;
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
const animation = Animated.timing(animatedOffset, {
|
|
36
|
+
toValue: progressDashOffset,
|
|
37
|
+
duration: 300,
|
|
38
|
+
easing: Easing.inOut(Easing.ease),
|
|
39
|
+
useNativeDriver: false,
|
|
40
|
+
});
|
|
41
|
+
animation.start();
|
|
42
|
+
return () => animation.stop();
|
|
43
|
+
}, [progressDashOffset, animatedOffset]);
|
|
44
|
+
return (_jsxs(Box, { ref: ref, accessibilityRole: 'progressbar', accessibilityValue: {
|
|
45
|
+
now: currentStep,
|
|
46
|
+
min: 1,
|
|
47
|
+
max: totalSteps,
|
|
48
|
+
text: displayLabel,
|
|
49
|
+
}, accessibilityLabel: label ??
|
|
50
|
+
t('components.stepper.progressAriaLabel', {
|
|
51
|
+
currentStep: Math.min(Math.max(currentStep, 0), totalSteps),
|
|
52
|
+
totalSteps,
|
|
53
|
+
}), lx: {
|
|
54
|
+
width: 's48',
|
|
55
|
+
height: 's48',
|
|
56
|
+
flexShrink: 0,
|
|
57
|
+
alignItems: 'center',
|
|
58
|
+
justifyContent: 'center',
|
|
59
|
+
borderRadius: 'full',
|
|
60
|
+
...lx,
|
|
61
|
+
}, ...props, children: [_jsxs(Svg, { width: SIZE, height: SIZE, viewBox: `0 0 ${SIZE} ${SIZE}`, style: { transform: [{ rotate: '135deg' }] }, children: [_jsx(Circle, { cx: cx, cy: cy, r: r, fill: 'none', stroke: theme.colors.border.mutedSubtle, strokeLinecap: 'round', strokeWidth: STROKE_WIDTH, strokeDasharray: trackDashArray, strokeDashoffset: 0 }), _jsx(AnimatedCircle, { cx: cx, cy: cy, r: r, fill: 'none', stroke: disabled
|
|
62
|
+
? theme.colors.border.mutedSubtleHover
|
|
63
|
+
: theme.colors.border.active, strokeLinecap: 'round', strokeWidth: STROKE_WIDTH, strokeDasharray: progressDashArray, strokeDashoffset: animatedOffset })] }), _jsx(Box, { lx: {
|
|
64
|
+
position: 'absolute',
|
|
65
|
+
alignItems: 'center',
|
|
66
|
+
justifyContent: 'center',
|
|
67
|
+
flexDirection: 'row',
|
|
68
|
+
top: 's0',
|
|
69
|
+
left: 's0',
|
|
70
|
+
right: 's0',
|
|
71
|
+
bottom: 's0',
|
|
72
|
+
}, children: label ? (_jsx(Text, { typography: 'body2SemiBold', lx: { color: 'base' }, children: label })) : (_jsxs(_Fragment, { children: [_jsx(Text, { typography: 'body1SemiBold', lx: { color: 'base' }, children: Math.min(Math.max(currentStep, 0), totalSteps) }), _jsxs(Text, { typography: 'body2SemiBold', lx: { color: 'muted' }, children: ["/", totalSteps] })] })) })] }));
|
|
73
|
+
};
|
|
74
|
+
Stepper.displayName = 'Stepper';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-native-web-vite';
|
|
2
|
+
import { Stepper } from './Stepper';
|
|
3
|
+
declare const meta: Meta<typeof Stepper>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Stepper>;
|
|
6
|
+
export declare const Base: Story;
|
|
7
|
+
export declare const DisabledShowcase: Story;
|
|
8
|
+
export declare const WithCustomLabel: Story;
|
|
9
|
+
//# sourceMappingURL=Stepper.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stepper.stories.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Stepper/Stepper.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAGlE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAW9B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;AAEtC,eAAO,MAAM,IAAI,EAAE,KAMlB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAuB9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAO7B,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box } from '../Utility/Box';
|
|
3
|
+
import { Text } from '../Utility/Text';
|
|
4
|
+
import { Stepper } from './Stepper';
|
|
5
|
+
const meta = {
|
|
6
|
+
title: 'Communication/Stepper',
|
|
7
|
+
component: Stepper,
|
|
8
|
+
parameters: {
|
|
9
|
+
actions: { disable: true },
|
|
10
|
+
},
|
|
11
|
+
argTypes: {
|
|
12
|
+
currentStep: { control: 'number' },
|
|
13
|
+
totalSteps: { control: 'number' },
|
|
14
|
+
disabled: { control: 'boolean' },
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
export default meta;
|
|
18
|
+
export const Base = {
|
|
19
|
+
args: {
|
|
20
|
+
currentStep: 2,
|
|
21
|
+
totalSteps: 4,
|
|
22
|
+
},
|
|
23
|
+
render: (args) => _jsx(Stepper, { ...args }),
|
|
24
|
+
};
|
|
25
|
+
export const DisabledShowcase = {
|
|
26
|
+
render: () => (_jsxs(Box, { lx: { gap: 's32', alignItems: 'center' }, children: [_jsxs(Box, { lx: { alignItems: 'center', gap: 's8' }, children: [_jsx(Text, { typography: 'body3', lx: { color: 'muted' }, children: "Default (2/4)" }), _jsx(Stepper, { currentStep: 2, totalSteps: 4 })] }), _jsxs(Box, { lx: { alignItems: 'center', gap: 's8' }, children: [_jsx(Text, { typography: 'body3', lx: { color: 'muted' }, children: "Disabled (2/4)" }), _jsx(Stepper, { currentStep: 2, totalSteps: 4, disabled: true })] }), _jsxs(Box, { lx: { alignItems: 'center', gap: 's8' }, children: [_jsx(Text, { typography: 'body3', lx: { color: 'muted' }, children: "Unstarted (0/9)" }), _jsx(Stepper, { currentStep: 0, totalSteps: 9 })] })] })),
|
|
27
|
+
};
|
|
28
|
+
export const WithCustomLabel = {
|
|
29
|
+
args: {
|
|
30
|
+
currentStep: 5,
|
|
31
|
+
totalSteps: 5,
|
|
32
|
+
label: '🎉',
|
|
33
|
+
},
|
|
34
|
+
render: (args) => _jsx(Stepper, { ...args }),
|
|
35
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Stepper/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { StyledViewProps } from '../../../styles';
|
|
2
|
+
export type StepperProps = {
|
|
3
|
+
/**
|
|
4
|
+
* Current step number (1-based). Use 0 or negative to show minimal dot (before starting).
|
|
5
|
+
*/
|
|
6
|
+
currentStep: number;
|
|
7
|
+
/**
|
|
8
|
+
* Total number of steps.
|
|
9
|
+
*/
|
|
10
|
+
totalSteps: number;
|
|
11
|
+
/**
|
|
12
|
+
* Whether the stepper is disabled. Changes the progress arc to a muted style.
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Optional custom label. Defaults to "{currentStep}/{totalSteps}".
|
|
18
|
+
*/
|
|
19
|
+
label?: string;
|
|
20
|
+
} & Omit<StyledViewProps, 'children'>;
|
|
21
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Stepper/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/TabBar/TabBar.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/TabBar/TabBar.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvD,eAAO,MAAM,cAAc,KAAK,CAAC;AAGjC;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,UAAU,GACX,EAAE,eAAe,2CA+FjB;yBApGe,UAAU;;;AAwG1B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,UAAU,EACV,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,WAAW,2CAiFb"}
|
|
@@ -7,6 +7,7 @@ import { useStyleSheet, useTheme } from '../../../styles';
|
|
|
7
7
|
import { Placeholder } from '../../Symbols';
|
|
8
8
|
import { Box, Pressable } from '../Utility';
|
|
9
9
|
import { TabBarContextProvider, useTabBarContext } from './TabBarContext';
|
|
10
|
+
export const TAB_BAR_HEIGHT = 56;
|
|
10
11
|
const PILL_INSET = 4;
|
|
11
12
|
/**
|
|
12
13
|
* Individual tab item component that displays an icon and label.
|
|
@@ -130,7 +131,7 @@ export function TabBar({ active, onTabPress, children, ...props }) {
|
|
|
130
131
|
}
|
|
131
132
|
const useStyles = () => useStyleSheet((t) => ({
|
|
132
133
|
container: {
|
|
133
|
-
height:
|
|
134
|
+
height: TAB_BAR_HEIGHT,
|
|
134
135
|
flexDirection: 'row',
|
|
135
136
|
justifyContent: 'center',
|
|
136
137
|
padding: t.spacings.s4,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/TabBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/TabBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9D,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { TabBar, TabBarItem } from './TabBar';
|
|
1
|
+
export { TabBar, TabBarItem, TAB_BAR_HEIGHT } from './TabBar';
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { View } from 'react-native';
|
|
3
1
|
import { TileButtonProps } from './types';
|
|
4
2
|
/**
|
|
5
3
|
* A compact button component displaying an icon above a label in a vertical layout.
|
|
@@ -15,5 +13,8 @@ import { TileButtonProps } from './types';
|
|
|
15
13
|
* Settings
|
|
16
14
|
* </TileButton>
|
|
17
15
|
*/
|
|
18
|
-
export declare const TileButton:
|
|
16
|
+
export declare const TileButton: {
|
|
17
|
+
({ lx, style, icon: IconProp, children, disabled, isFull, numberOfLines, ...props }: TileButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
displayName: string;
|
|
19
|
+
};
|
|
19
20
|
//# sourceMappingURL=TileButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TileButton.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/TileButton/TileButton.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TileButton.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/TileButton/TileButton.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAwD1C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU;yFASpB,eAAe;;CAyBjB,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { isTextChildren } from '@ledgerhq/lumen-utils-shared';
|
|
3
|
-
import React from 'react';
|
|
4
3
|
import { StyleSheet, View } from 'react-native';
|
|
5
4
|
import { useStyleSheet } from '../../../styles';
|
|
6
5
|
import { Pressable, Text } from '../Utility';
|
|
@@ -55,10 +54,10 @@ const useStyles = ({ disabled, pressed, isFull, }) => {
|
|
|
55
54
|
* Settings
|
|
56
55
|
* </TileButton>
|
|
57
56
|
*/
|
|
58
|
-
export const TileButton =
|
|
57
|
+
export const TileButton = ({ lx, style, icon: IconProp, children, disabled = false, isFull = false, numberOfLines = 2, ...props }) => {
|
|
59
58
|
const rootStyles = useRootStyles({ isFull });
|
|
60
|
-
return (_jsx(Pressable, {
|
|
61
|
-
}
|
|
59
|
+
return (_jsx(Pressable, { lx: lx, style: StyleSheet.flatten([style, rootStyles.root]), disabled: disabled, accessibilityRole: 'button', accessibilityState: { disabled }, ...props, children: ({ pressed }) => (_jsx(TileButtonContent, { disabled: disabled, pressed: pressed, isFull: isFull, IconProp: IconProp, numberOfLines: numberOfLines, children: children })) }));
|
|
60
|
+
};
|
|
62
61
|
const TileButtonContent = ({ disabled, pressed, isFull, IconProp, numberOfLines, children, }) => {
|
|
63
62
|
const styles = useStyles({ disabled, pressed, isFull });
|
|
64
63
|
return (_jsxs(View, { style: styles.container, testID: 'tile-button-content', children: [_jsx(IconProp, { size: ICON_SIZE, style: styles.icon }), isTextChildren(children) ? (_jsx(Text, { style: styles.label, numberOfLines: numberOfLines, children: children })) : (children)] }));
|
|
@@ -17,7 +17,10 @@ export * from './NavBar';
|
|
|
17
17
|
export * from './PageIndicator';
|
|
18
18
|
export * from './SearchInput';
|
|
19
19
|
export * from './Select';
|
|
20
|
+
export * from './Skeleton';
|
|
21
|
+
export * from './Spinner';
|
|
20
22
|
export * from './Spot';
|
|
23
|
+
export * from './Stepper';
|
|
21
24
|
export * from './Subheader';
|
|
22
25
|
export * from './Switch';
|
|
23
26
|
export * from './TabBar';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/Components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/Components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
|
@@ -17,7 +17,10 @@ export * from './NavBar';
|
|
|
17
17
|
export * from './PageIndicator';
|
|
18
18
|
export * from './SearchInput';
|
|
19
19
|
export * from './Select';
|
|
20
|
+
export * from './Skeleton';
|
|
21
|
+
export * from './Spinner';
|
|
20
22
|
export * from './Spot';
|
|
23
|
+
export * from './Stepper';
|
|
21
24
|
export * from './Subheader';
|
|
22
25
|
export * from './Switch';
|
|
23
26
|
export * from './TabBar';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ComponentPropsWithRef } from 'react';
|
|
1
|
+
import type { ComponentPropsWithRef } from 'react';
|
|
2
2
|
import { PressableProps, PressableStateCallbackType, TextProps as RNTextProps, ViewProps, ViewStyle, Text as RNText, View as RNView, Pressable as RNPressable } from 'react-native';
|
|
3
3
|
import { LumenTextStyle, LumenViewStyle } from './lx.types';
|
|
4
4
|
import { LumenTypographyTokenName } from './theme.types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.types.d.ts","sourceRoot":"","sources":["../../../../src/styles/types/factories.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"factories.types.d.ts","sourceRoot":"","sources":["../../../../src/styles/types/factories.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,SAAS,IAAI,WAAW,EACxB,SAAS,EACT,SAAS,EACT,IAAI,IAAI,MAAM,EACd,IAAI,IAAI,MAAM,EACd,SAAS,IAAI,WAAW,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,KAAK,OAAO,GAAG,CAAC,KAAK,EAAE,0BAA0B,KAAK,SAAS,CAAC;AAChE,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,OAAO,GACP,kBAAkB,EAAE,GACpB,IAAI,GACJ,SAAS,CAAC;AAEd,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IACnE,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB,GAAG,SAAS,GACX,qBAAqB,CAAC,OAAO,MAAM,CAAC,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,wBAAwB,CAAC;CACvC,GAAG,WAAW,GACb,qBAAqB,CAAC,OAAO,MAAM,CAAC,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB,GAAG,sBAAsB,GACxB,qBAAqB,CAAC,OAAO,WAAW,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/lumen-ui-rnative",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.72",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"./styles": "./src/styles/index.ts"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@ledgerhq/lumen-utils-shared": "0.0.
|
|
30
|
+
"@ledgerhq/lumen-utils-shared": "0.0.19",
|
|
31
31
|
"i18next": "^23.7.0",
|
|
32
32
|
"react-i18next": "^14.0.0"
|
|
33
33
|
},
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"@types/react": "^19.0.0",
|
|
39
39
|
"@gorhom/bottom-sheet": "^5.0.0",
|
|
40
|
-
"@ledgerhq/lumen-design-core": "0.0.
|
|
41
|
-
"react": "19.0.0",
|
|
40
|
+
"@ledgerhq/lumen-design-core": "0.0.52",
|
|
41
|
+
"react": "^19.0.0",
|
|
42
42
|
"react-native": "~0.79.7",
|
|
43
43
|
"react-native-reanimated": "^3.0.0",
|
|
44
44
|
"react-native-safe-area-context": "^4.0.0 || ^5.0.0",
|
package/src/i18n/locales/de.json
CHANGED
package/src/i18n/locales/en.json
CHANGED
package/src/i18n/locales/es.json
CHANGED