@ledgerhq/lumen-ui-rnative 0.1.15 → 0.1.16

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 (75) hide show
  1. package/dist/module/lib/Components/AddressInput/AddressInput.js +21 -10
  2. package/dist/module/lib/Components/AddressInput/AddressInput.js.map +1 -1
  3. package/dist/module/lib/Components/AddressInput/AddressInput.mdx +18 -2
  4. package/dist/module/lib/Components/AddressInput/AddressInput.stories.js +1 -23
  5. package/dist/module/lib/Components/AddressInput/AddressInput.stories.js.map +1 -1
  6. package/dist/module/lib/Components/AmountInput/AmountInput.js +7 -6
  7. package/dist/module/lib/Components/AmountInput/AmountInput.js.map +1 -1
  8. package/dist/module/lib/Components/AmountInput/AmountInput.mdx +5 -1
  9. package/dist/module/lib/Components/AmountInput/AmountInput.stories.js +1 -36
  10. package/dist/module/lib/Components/AmountInput/AmountInput.stories.js.map +1 -1
  11. package/dist/module/lib/Components/BaseInput/BaseInput.js +54 -48
  12. package/dist/module/lib/Components/BaseInput/BaseInput.js.map +1 -1
  13. package/dist/module/lib/Components/MediaImage/MediaImage.js +102 -0
  14. package/dist/module/lib/Components/MediaImage/MediaImage.js.map +1 -0
  15. package/dist/module/lib/Components/MediaImage/MediaImage.mdx +103 -0
  16. package/dist/module/lib/Components/MediaImage/MediaImage.stories.js +91 -0
  17. package/dist/module/lib/Components/MediaImage/MediaImage.stories.js.map +1 -0
  18. package/dist/module/lib/Components/MediaImage/MediaImage.test.js +204 -0
  19. package/dist/module/lib/Components/MediaImage/MediaImage.test.js.map +1 -0
  20. package/dist/module/lib/Components/MediaImage/index.js +5 -0
  21. package/dist/module/lib/Components/MediaImage/index.js.map +1 -0
  22. package/dist/module/lib/Components/MediaImage/types.js +4 -0
  23. package/dist/module/lib/Components/MediaImage/types.js.map +1 -0
  24. package/dist/module/lib/Components/SearchInput/SearchInput.js +11 -2
  25. package/dist/module/lib/Components/SearchInput/SearchInput.js.map +1 -1
  26. package/dist/module/lib/Components/SearchInput/SearchInput.mdx +14 -2
  27. package/dist/module/lib/Components/SearchInput/SearchInput.stories.js +1 -19
  28. package/dist/module/lib/Components/SearchInput/SearchInput.stories.js.map +1 -1
  29. package/dist/module/lib/Components/TextInput/TextInput.mdx +14 -2
  30. package/dist/module/lib/Components/TextInput/TextInput.stories.js +1 -28
  31. package/dist/module/lib/Components/TextInput/TextInput.stories.js.map +1 -1
  32. package/dist/module/lib/Components/index.js +1 -0
  33. package/dist/module/lib/Components/index.js.map +1 -1
  34. package/dist/typescript/src/lib/Components/AddressInput/AddressInput.d.ts +1 -1
  35. package/dist/typescript/src/lib/Components/AddressInput/AddressInput.d.ts.map +1 -1
  36. package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts +1 -1
  37. package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts.map +1 -1
  38. package/dist/typescript/src/lib/Components/AmountInput/types.d.ts +7 -0
  39. package/dist/typescript/src/lib/Components/AmountInput/types.d.ts.map +1 -1
  40. package/dist/typescript/src/lib/Components/BaseInput/BaseInput.d.ts +1 -1
  41. package/dist/typescript/src/lib/Components/BaseInput/BaseInput.d.ts.map +1 -1
  42. package/dist/typescript/src/lib/Components/BaseInput/types.d.ts +7 -0
  43. package/dist/typescript/src/lib/Components/BaseInput/types.d.ts.map +1 -1
  44. package/dist/typescript/src/lib/Components/MediaImage/MediaImage.d.ts +18 -0
  45. package/dist/typescript/src/lib/Components/MediaImage/MediaImage.d.ts.map +1 -0
  46. package/dist/typescript/src/lib/Components/MediaImage/index.d.ts +3 -0
  47. package/dist/typescript/src/lib/Components/MediaImage/index.d.ts.map +1 -0
  48. package/dist/typescript/src/lib/Components/MediaImage/types.d.ts +25 -0
  49. package/dist/typescript/src/lib/Components/MediaImage/types.d.ts.map +1 -0
  50. package/dist/typescript/src/lib/Components/SearchInput/SearchInput.d.ts +1 -1
  51. package/dist/typescript/src/lib/Components/SearchInput/SearchInput.d.ts.map +1 -1
  52. package/dist/typescript/src/lib/Components/index.d.ts +1 -0
  53. package/dist/typescript/src/lib/Components/index.d.ts.map +1 -1
  54. package/package.json +1 -1
  55. package/src/lib/Components/AddressInput/AddressInput.mdx +18 -2
  56. package/src/lib/Components/AddressInput/AddressInput.stories.tsx +1 -23
  57. package/src/lib/Components/AddressInput/AddressInput.tsx +15 -7
  58. package/src/lib/Components/AmountInput/AmountInput.mdx +5 -1
  59. package/src/lib/Components/AmountInput/AmountInput.stories.tsx +1 -36
  60. package/src/lib/Components/AmountInput/AmountInput.tsx +4 -3
  61. package/src/lib/Components/AmountInput/types.ts +7 -0
  62. package/src/lib/Components/BaseInput/BaseInput.tsx +66 -60
  63. package/src/lib/Components/BaseInput/types.ts +7 -0
  64. package/src/lib/Components/MediaImage/MediaImage.mdx +103 -0
  65. package/src/lib/Components/MediaImage/MediaImage.stories.tsx +55 -0
  66. package/src/lib/Components/MediaImage/MediaImage.test.tsx +179 -0
  67. package/src/lib/Components/MediaImage/MediaImage.tsx +117 -0
  68. package/src/lib/Components/MediaImage/index.ts +2 -0
  69. package/src/lib/Components/MediaImage/types.ts +27 -0
  70. package/src/lib/Components/SearchInput/SearchInput.mdx +14 -2
  71. package/src/lib/Components/SearchInput/SearchInput.stories.tsx +1 -19
  72. package/src/lib/Components/SearchInput/SearchInput.tsx +8 -1
  73. package/src/lib/Components/TextInput/TextInput.mdx +14 -2
  74. package/src/lib/Components/TextInput/TextInput.stories.tsx +1 -28
  75. package/src/lib/Components/index.ts +1 -0
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useState } from 'react';
4
+ import { Image, StyleSheet } from 'react-native';
5
+ import { useStyleSheet } from "../../../styles/index.js";
6
+ import { Box } from "../Utility/index.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const borderRadiusMap = {
9
+ 12: 'xs',
10
+ 16: 'xs',
11
+ 20: 'xs',
12
+ 24: 'sm',
13
+ 32: 'sm',
14
+ 40: 'md',
15
+ 48: 'md',
16
+ 56: 'lg'
17
+ };
18
+ export const mediaImageDotSizeMap = {
19
+ 12: 8,
20
+ 16: 8,
21
+ 20: 8,
22
+ 24: 10,
23
+ 32: 12,
24
+ 40: 16,
25
+ 48: 20,
26
+ 56: 24
27
+ };
28
+ const useStyles = ({
29
+ size,
30
+ shape
31
+ }) => {
32
+ return useStyleSheet(t => {
33
+ const sizeValue = t.sizes[`s${size}`];
34
+ const radius = shape === 'circle' ? t.borderRadius.full : t.borderRadius[borderRadiusMap[size]];
35
+ return {
36
+ root: {
37
+ width: sizeValue,
38
+ height: sizeValue,
39
+ borderRadius: radius,
40
+ overflow: 'hidden',
41
+ alignItems: 'center',
42
+ justifyContent: 'center',
43
+ backgroundColor: t.colors.bg.mutedTransparent
44
+ },
45
+ image: {
46
+ width: '100%',
47
+ height: '100%'
48
+ }
49
+ };
50
+ }, [size, shape]);
51
+ };
52
+
53
+ /**
54
+ * A generic media image component that displays an image with optional shape variants.
55
+ * Supports square and circular appearances with consistent sizing.
56
+ *
57
+ * When the image fails to load or no src is provided, displays a background placeholder.
58
+ *
59
+ * @example
60
+ * import { MediaImage } from '@ledgerhq/lumen-ui-rnative';
61
+ *
62
+ * <MediaImage src="https://example.com/icon.png" alt="Bitcoin" size={32} />
63
+ */
64
+ export const MediaImage = ({
65
+ src,
66
+ alt,
67
+ size = 48,
68
+ shape = 'square',
69
+ lx = {},
70
+ style,
71
+ ref,
72
+ ...props
73
+ }) => {
74
+ const [error, setError] = useState(false);
75
+ const shouldFallback = !src || error;
76
+ const styles = useStyles({
77
+ size,
78
+ shape
79
+ });
80
+ useEffect(() => {
81
+ setError(false);
82
+ }, [src]);
83
+ return /*#__PURE__*/_jsx(Box, {
84
+ ref: ref,
85
+ lx: lx,
86
+ style: StyleSheet.flatten([styles.root, style]),
87
+ accessibilityRole: "image",
88
+ accessibilityLabel: alt,
89
+ ...props,
90
+ children: !shouldFallback && /*#__PURE__*/_jsx(Image, {
91
+ source: {
92
+ uri: src
93
+ },
94
+ style: styles.image,
95
+ accessible: false,
96
+ onError: () => setError(true),
97
+ testID: "media-image-img"
98
+ })
99
+ });
100
+ };
101
+ MediaImage.displayName = 'MediaImage';
102
+ //# sourceMappingURL=MediaImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useState","Image","StyleSheet","useStyleSheet","Box","jsx","_jsx","borderRadiusMap","mediaImageDotSizeMap","useStyles","size","shape","t","sizeValue","sizes","radius","borderRadius","full","root","width","height","overflow","alignItems","justifyContent","backgroundColor","colors","bg","mutedTransparent","image","MediaImage","src","alt","lx","style","ref","props","error","setError","shouldFallback","styles","flatten","accessibilityRole","accessibilityLabel","children","source","uri","accessible","onError","testID","displayName"],"sourceRoot":"../../../../../src","sources":["lib/Components/MediaImage/MediaImage.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,103 @@
1
+ import { Meta, Canvas, Controls } from '@storybook/addon-docs/blocks';
2
+ import * as MediaImageStories from './MediaImage.stories';
3
+ import { MediaImage } from './MediaImage';
4
+ import { CustomTabs, Tab } from '../../../../.storybook/components';
5
+ import CommonRulesDoAndDont from '../../../../.storybook/components/DoVsDont/CommonRulesDoAndDont.mdx';
6
+
7
+
8
+ <Meta title='Communication/MediaImage' of={MediaImageStories} />
9
+
10
+ # MediaImage
11
+
12
+ <CustomTabs>
13
+ <Tab label="Overview">
14
+
15
+ ## Introduction
16
+
17
+ MediaImage displays an image with consistent sizing and shape. When the image fails to load or no source is provided, a background placeholder is shown automatically. This React Native implementation ensures consistent behavior across mobile platforms.
18
+
19
+ > View in [Figma](https://www.figma.com/design/zSkvGGiqcnhywp2l3HTHxA/1.-Symbol-Library?node-id=6159-1866).
20
+
21
+ ## Anatomy
22
+
23
+ <Canvas of={MediaImageStories.Base} />
24
+
25
+ - **Container**: Sized wrapper with rounded corners and overflow clipping
26
+ - **Image**: Fills the container using React Native's `Image` component
27
+ - **Fallback**: Background placeholder shown on missing or broken source
28
+
29
+ ## Properties
30
+
31
+ ### Overview
32
+
33
+ <Canvas of={MediaImageStories.Base} />
34
+ <Controls of={MediaImageStories.Base} />
35
+
36
+ ### Sizes
37
+
38
+ Eight sizes are available (12, 16, 20, 24, 32, 40, 48, 56). Border radius scales with size.
39
+
40
+ <Canvas of={MediaImageStories.SizeShowcase} />
41
+
42
+ ### Shapes
43
+
44
+ <Canvas of={MediaImageStories.ShapeShowcase} />
45
+
46
+ - **square** (default): Rounded corners that scale with size
47
+ - **circle**: Fully rounded
48
+
49
+ ## Accessibility
50
+
51
+ - The root element uses `accessibilityRole="image"` with `accessibilityLabel` derived from `alt`.
52
+ - The inner `Image` is marked `accessible={false}` to avoid duplicate announcements.
53
+ - Always provide a meaningful `alt` prop so screen readers can announce the image.
54
+
55
+ </Tab>
56
+ <Tab label="Implementation">
57
+
58
+ ## Setup
59
+
60
+ Install and set up the library with our [Setup Guide →](?path=/docs/getting-started-setup--docs).
61
+
62
+ ### Basic Usage
63
+
64
+ ```tsx
65
+ import { MediaImage } from '@ledgerhq/lumen-ui-rnative';
66
+
67
+ function MyComponent() {
68
+ return <MediaImage src='https://example.com/icon.png' alt='Bitcoin' size={32} />;
69
+ }
70
+ ```
71
+
72
+ ### With Circle Shape
73
+
74
+ ```tsx
75
+ <MediaImage src='https://example.com/icon.png' alt='Ethereum' size={48} shape='circle' />
76
+ ```
77
+
78
+ ### Custom Styling
79
+
80
+ Use the `lx` prop for token-based layout adjustments:
81
+
82
+ ```tsx
83
+ <MediaImage
84
+ src='https://example.com/icon.png'
85
+ alt='Token'
86
+ size={40}
87
+ lx={{ marginRight: 's8' }}
88
+ />
89
+ ```
90
+
91
+ You can also use the `style` prop for escape-hatch styling:
92
+
93
+ ```tsx
94
+ <MediaImage
95
+ src='https://example.com/icon.png'
96
+ alt='Token'
97
+ size={40}
98
+ style={{ marginRight: 8 }}
99
+ />
100
+ ```
101
+
102
+ </Tab>
103
+ </CustomTabs>
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ import { Box } from "../Utility/index.js";
4
+ import { MediaImage } from "./MediaImage.js";
5
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ const meta = {
7
+ component: MediaImage,
8
+ title: 'Communication/MediaImage',
9
+ parameters: {
10
+ docs: {
11
+ source: {
12
+ language: 'tsx',
13
+ format: true,
14
+ type: 'code'
15
+ }
16
+ }
17
+ }
18
+ };
19
+ export default meta;
20
+ const exampleSrc = 'https://crypto-icons.ledger.com/ADA.png';
21
+ export const Base = {
22
+ args: {
23
+ src: exampleSrc,
24
+ alt: 'Cardano',
25
+ size: 40,
26
+ shape: 'square'
27
+ }
28
+ };
29
+ export const SizeShowcase = {
30
+ render: () => /*#__PURE__*/_jsxs(Box, {
31
+ lx: {
32
+ flexDirection: 'row',
33
+ alignItems: 'flex-end',
34
+ gap: 's16'
35
+ },
36
+ children: [/*#__PURE__*/_jsx(MediaImage, {
37
+ src: exampleSrc,
38
+ alt: "Size 12",
39
+ size: 12
40
+ }), /*#__PURE__*/_jsx(MediaImage, {
41
+ src: exampleSrc,
42
+ alt: "Size 16",
43
+ size: 16
44
+ }), /*#__PURE__*/_jsx(MediaImage, {
45
+ src: exampleSrc,
46
+ alt: "Size 20",
47
+ size: 20
48
+ }), /*#__PURE__*/_jsx(MediaImage, {
49
+ src: exampleSrc,
50
+ alt: "Size 24",
51
+ size: 24
52
+ }), /*#__PURE__*/_jsx(MediaImage, {
53
+ src: exampleSrc,
54
+ alt: "Size 32",
55
+ size: 32
56
+ }), /*#__PURE__*/_jsx(MediaImage, {
57
+ src: exampleSrc,
58
+ alt: "Size 40",
59
+ size: 40
60
+ }), /*#__PURE__*/_jsx(MediaImage, {
61
+ src: exampleSrc,
62
+ alt: "Size 48",
63
+ size: 48
64
+ }), /*#__PURE__*/_jsx(MediaImage, {
65
+ src: exampleSrc,
66
+ alt: "Size 56",
67
+ size: 56
68
+ })]
69
+ })
70
+ };
71
+ export const ShapeShowcase = {
72
+ render: () => /*#__PURE__*/_jsxs(Box, {
73
+ lx: {
74
+ flexDirection: 'row',
75
+ alignItems: 'center',
76
+ gap: 's24'
77
+ },
78
+ children: [/*#__PURE__*/_jsx(MediaImage, {
79
+ src: exampleSrc,
80
+ alt: "Square",
81
+ size: 48,
82
+ shape: "square"
83
+ }), /*#__PURE__*/_jsx(MediaImage, {
84
+ src: exampleSrc,
85
+ alt: "Circle",
86
+ size: 48,
87
+ shape: "circle"
88
+ })]
89
+ })
90
+ };
91
+ //# sourceMappingURL=MediaImage.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Box","MediaImage","jsx","_jsx","jsxs","_jsxs","meta","component","title","parameters","docs","source","language","format","type","exampleSrc","Base","args","src","alt","size","shape","SizeShowcase","render","lx","flexDirection","alignItems","gap","children","ShapeShowcase"],"sourceRoot":"../../../../../src","sources":["lib/Components/MediaImage/MediaImage.stories.tsx"],"mappings":";;AACA,SAASA,GAAG,QAAQ,qBAAY;AAChC,SAASC,UAAU,QAAQ,iBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE1C,MAAMC,IAAI,GAAG;EACXC,SAAS,EAAEN,UAAU;EACrBO,KAAK,EAAE,0BAA0B;EACjCC,UAAU,EAAE;IACVC,IAAI,EAAE;MACJC,MAAM,EAAE;QACNC,QAAQ,EAAE,KAAK;QACfC,MAAM,EAAE,IAAI;QACZC,IAAI,EAAE;MACR;IACF;EACF;AACF,CAAmC;AAEnC,eAAeR,IAAI;AAGnB,MAAMS,UAAU,GAAG,yCAAyC;AAE5D,OAAO,MAAMC,IAAW,GAAG;EACzBC,IAAI,EAAE;IACJC,GAAG,EAAEH,UAAU;IACfI,GAAG,EAAE,SAAS;IACdC,IAAI,EAAE,EAAE;IACRC,KAAK,EAAE;EACT;AACF,CAAC;AAED,OAAO,MAAMC,YAAmB,GAAG;EACjCC,MAAM,EAAEA,CAAA,kBACNlB,KAAA,CAACL,GAAG;IAACwB,EAAE,EAAE;MAAEC,aAAa,EAAE,KAAK;MAAEC,UAAU,EAAE,UAAU;MAAEC,GAAG,EAAE;IAAM,CAAE;IAAAC,QAAA,gBACpEzB,IAAA,CAACF,UAAU;MAACiB,GAAG,EAAEH,UAAW;MAACI,GAAG,EAAC,SAAS;MAACC,IAAI,EAAE;IAAG,CAAE,CAAC,eACvDjB,IAAA,CAACF,UAAU;MAACiB,GAAG,EAAEH,UAAW;MAACI,GAAG,EAAC,SAAS;MAACC,IAAI,EAAE;IAAG,CAAE,CAAC,eACvDjB,IAAA,CAACF,UAAU;MAACiB,GAAG,EAAEH,UAAW;MAACI,GAAG,EAAC,SAAS;MAACC,IAAI,EAAE;IAAG,CAAE,CAAC,eACvDjB,IAAA,CAACF,UAAU;MAACiB,GAAG,EAAEH,UAAW;MAACI,GAAG,EAAC,SAAS;MAACC,IAAI,EAAE;IAAG,CAAE,CAAC,eACvDjB,IAAA,CAACF,UAAU;MAACiB,GAAG,EAAEH,UAAW;MAACI,GAAG,EAAC,SAAS;MAACC,IAAI,EAAE;IAAG,CAAE,CAAC,eACvDjB,IAAA,CAACF,UAAU;MAACiB,GAAG,EAAEH,UAAW;MAACI,GAAG,EAAC,SAAS;MAACC,IAAI,EAAE;IAAG,CAAE,CAAC,eACvDjB,IAAA,CAACF,UAAU;MAACiB,GAAG,EAAEH,UAAW;MAACI,GAAG,EAAC,SAAS;MAACC,IAAI,EAAE;IAAG,CAAE,CAAC,eACvDjB,IAAA,CAACF,UAAU;MAACiB,GAAG,EAAEH,UAAW;MAACI,GAAG,EAAC,SAAS;MAACC,IAAI,EAAE;IAAG,CAAE,CAAC;EAAA,CACpD;AAET,CAAC;AAED,OAAO,MAAMS,aAAoB,GAAG;EAClCN,MAAM,EAAEA,CAAA,kBACNlB,KAAA,CAACL,GAAG;IAACwB,EAAE,EAAE;MAAEC,aAAa,EAAE,KAAK;MAAEC,UAAU,EAAE,QAAQ;MAAEC,GAAG,EAAE;IAAM,CAAE;IAAAC,QAAA,gBAClEzB,IAAA,CAACF,UAAU;MAACiB,GAAG,EAAEH,UAAW;MAACI,GAAG,EAAC,QAAQ;MAACC,IAAI,EAAE,EAAG;MAACC,KAAK,EAAC;IAAQ,CAAE,CAAC,eACrElB,IAAA,CAACF,UAAU;MAACiB,GAAG,EAAEH,UAAW;MAACI,GAAG,EAAC,QAAQ;MAACC,IAAI,EAAE,EAAG;MAACC,KAAK,EAAC;IAAQ,CAAE,CAAC;EAAA,CAClE;AAET,CAAC","ignoreList":[]}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+
3
+ import { describe, it, expect } from '@jest/globals';
4
+ import { ledgerLiveThemes } from '@ledgerhq/lumen-design-core';
5
+ import { render, waitFor } from '@testing-library/react-native';
6
+ import { ThemeProvider } from "../ThemeProvider/ThemeProvider.js";
7
+ import { MediaImage } from "./MediaImage.js";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const {
10
+ sizes,
11
+ borderRadius
12
+ } = ledgerLiveThemes.dark;
13
+ const TestWrapper = ({
14
+ children
15
+ }) => /*#__PURE__*/_jsx(ThemeProvider, {
16
+ themes: ledgerLiveThemes,
17
+ colorScheme: "dark",
18
+ locale: "en",
19
+ children: children
20
+ });
21
+ describe('MediaImage Component', () => {
22
+ const validSrc = 'https://crypto-icons.ledger.com/ADA.png';
23
+ it('should render with image when valid src is provided', () => {
24
+ const {
25
+ getByTestId
26
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
27
+ children: /*#__PURE__*/_jsx(MediaImage, {
28
+ src: validSrc,
29
+ alt: "Cardano"
30
+ })
31
+ }));
32
+ const img = getByTestId('media-image-img');
33
+ expect(img.props.source).toEqual({
34
+ uri: validSrc
35
+ });
36
+ });
37
+ it('should render fallback when no src is provided', () => {
38
+ const {
39
+ queryByTestId
40
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
41
+ children: /*#__PURE__*/_jsx(MediaImage, {
42
+ alt: "Empty"
43
+ })
44
+ }));
45
+ expect(queryByTestId('media-image-img')).toBeNull();
46
+ });
47
+ it('should render fallback when src is empty string', () => {
48
+ const {
49
+ queryByTestId
50
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
51
+ children: /*#__PURE__*/_jsx(MediaImage, {
52
+ src: "",
53
+ alt: "Empty"
54
+ })
55
+ }));
56
+ expect(queryByTestId('media-image-img')).toBeNull();
57
+ });
58
+ it('should render fallback when image fails to load', async () => {
59
+ const {
60
+ getByTestId,
61
+ queryByTestId,
62
+ rerender
63
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
64
+ children: /*#__PURE__*/_jsx(MediaImage, {
65
+ src: "https://broken-link.com/404.png",
66
+ alt: "Broken"
67
+ })
68
+ }));
69
+ const img = getByTestId('media-image-img');
70
+ img.props.onError();
71
+ rerender(/*#__PURE__*/_jsx(TestWrapper, {
72
+ children: /*#__PURE__*/_jsx(MediaImage, {
73
+ src: "https://broken-link.com/404.png",
74
+ alt: "Broken"
75
+ })
76
+ }));
77
+ await waitFor(() => {
78
+ expect(queryByTestId('media-image-img')).toBeNull();
79
+ });
80
+ });
81
+ it('should reset error state when src changes', async () => {
82
+ const {
83
+ getByTestId,
84
+ rerender
85
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
86
+ children: /*#__PURE__*/_jsx(MediaImage, {
87
+ src: "https://broken-link.com/404.png",
88
+ alt: "Test"
89
+ })
90
+ }));
91
+ const img = getByTestId('media-image-img');
92
+ img.props.onError();
93
+ rerender(/*#__PURE__*/_jsx(TestWrapper, {
94
+ children: /*#__PURE__*/_jsx(MediaImage, {
95
+ src: validSrc,
96
+ alt: "Test"
97
+ })
98
+ }));
99
+ await waitFor(() => {
100
+ const newImg = getByTestId('media-image-img');
101
+ expect(newImg.props.source).toEqual({
102
+ uri: validSrc
103
+ });
104
+ });
105
+ });
106
+ it('should apply default size (48)', () => {
107
+ const {
108
+ getByTestId
109
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
110
+ children: /*#__PURE__*/_jsx(MediaImage, {
111
+ testID: "mi",
112
+ src: validSrc,
113
+ alt: "Test"
114
+ })
115
+ }));
116
+ const root = getByTestId('mi');
117
+ expect(root.props.style.width).toBe(sizes.s48);
118
+ expect(root.props.style.height).toBe(sizes.s48);
119
+ });
120
+ it('should apply specified size', () => {
121
+ const {
122
+ getByTestId
123
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
124
+ children: /*#__PURE__*/_jsx(MediaImage, {
125
+ testID: "mi",
126
+ src: validSrc,
127
+ alt: "Test",
128
+ size: 24
129
+ })
130
+ }));
131
+ const root = getByTestId('mi');
132
+ expect(root.props.style.width).toBe(sizes.s24);
133
+ expect(root.props.style.height).toBe(sizes.s24);
134
+ });
135
+ it('should apply circle shape', () => {
136
+ const {
137
+ getByTestId
138
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
139
+ children: /*#__PURE__*/_jsx(MediaImage, {
140
+ testID: "mi",
141
+ src: validSrc,
142
+ alt: "Test",
143
+ shape: "circle"
144
+ })
145
+ }));
146
+ const root = getByTestId('mi');
147
+ expect(root.props.style.borderRadius).toBe(borderRadius.full);
148
+ });
149
+ it('should apply square shape with correct border radius', () => {
150
+ const {
151
+ getByTestId
152
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
153
+ children: /*#__PURE__*/_jsx(MediaImage, {
154
+ testID: "mi",
155
+ src: validSrc,
156
+ alt: "Test",
157
+ size: 48,
158
+ shape: "square"
159
+ })
160
+ }));
161
+ const root = getByTestId('mi');
162
+ expect(root.props.style.borderRadius).toBe(borderRadius.md);
163
+ });
164
+ it('should set accessibility label from alt prop', () => {
165
+ const {
166
+ getByLabelText
167
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
168
+ children: /*#__PURE__*/_jsx(MediaImage, {
169
+ src: validSrc,
170
+ alt: "Cardano icon"
171
+ })
172
+ }));
173
+ expect(getByLabelText('Cardano icon')).toBeTruthy();
174
+ });
175
+ it('should apply custom styles', () => {
176
+ const {
177
+ getByTestId
178
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
179
+ children: /*#__PURE__*/_jsx(MediaImage, {
180
+ testID: "mi",
181
+ src: validSrc,
182
+ alt: "Test",
183
+ style: {
184
+ borderWidth: 2
185
+ }
186
+ })
187
+ }));
188
+ const root = getByTestId('mi');
189
+ expect(root.props.style.borderWidth).toBe(2);
190
+ });
191
+ it('should pass additional props', () => {
192
+ const {
193
+ getByTestId
194
+ } = render(/*#__PURE__*/_jsx(TestWrapper, {
195
+ children: /*#__PURE__*/_jsx(MediaImage, {
196
+ testID: "custom-id",
197
+ src: validSrc,
198
+ alt: "Test"
199
+ })
200
+ }));
201
+ expect(getByTestId('custom-id')).toBeTruthy();
202
+ });
203
+ });
204
+ //# sourceMappingURL=MediaImage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","it","expect","ledgerLiveThemes","render","waitFor","ThemeProvider","MediaImage","jsx","_jsx","sizes","borderRadius","dark","TestWrapper","children","themes","colorScheme","locale","validSrc","getByTestId","src","alt","img","props","source","toEqual","uri","queryByTestId","toBeNull","rerender","onError","newImg","testID","root","style","width","toBe","s48","height","size","s24","shape","full","md","getByLabelText","toBeTruthy","borderWidth"],"sourceRoot":"../../../../../src","sources":["lib/Components/MediaImage/MediaImage.test.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export { MediaImage, mediaImageDotSizeMap } from "./MediaImage.js";
4
+ export * from "./types.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MediaImage","mediaImageDotSizeMap"],"sourceRoot":"../../../../../src","sources":["lib/Components/MediaImage/index.ts"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,oBAAoB,QAAQ,iBAAc;AAC/D,cAAc,YAAS","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["lib/Components/MediaImage/types.ts"],"mappings":"","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import { useDisabledContext } from '@ledgerhq/lumen-utils-shared';
3
4
  import { useStyleSheet } from "../../../styles/index.js";
4
5
  import { Search as SearchIcon } from "../../Symbols/index.js";
5
6
  import { BaseInput } from "../BaseInput/index.js";
@@ -9,20 +10,28 @@ export const SearchInput = ({
9
10
  style,
10
11
  containerStyle,
11
12
  inputStyle,
13
+ disabled: disabledProp,
12
14
  ref,
13
15
  ...props
14
16
  }) => {
17
+ const disabled = useDisabledContext({
18
+ consumerName: 'SearchInput',
19
+ mergeWith: {
20
+ disabled: disabledProp
21
+ }
22
+ });
15
23
  const styles = useAppearanceStyles(appearance);
16
24
  return /*#__PURE__*/_jsx(BaseInput, {
17
25
  ref: ref,
18
26
  prefix: /*#__PURE__*/_jsx(SearchIcon, {
19
27
  size: 20,
20
- color: "muted",
21
- accessible: false
28
+ accessible: false,
29
+ disabled: disabled
22
30
  }),
23
31
  style: style,
24
32
  containerStyle: [containerStyle, styles.container],
25
33
  inputStyle: [inputStyle, styles.input],
34
+ disabled: disabledProp,
26
35
  ...props
27
36
  });
28
37
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useStyleSheet","Search","SearchIcon","BaseInput","jsx","_jsx","SearchInput","appearance","style","containerStyle","inputStyle","ref","props","styles","useAppearanceStyles","prefix","size","color","accessible","container","input","t","backgroundColor","colors","bg","mutedTransparent","displayName"],"sourceRoot":"../../../../../src","sources":["lib/Components/SearchInput/SearchInput.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,0BAAiB;AAC/C,SAASC,MAAM,IAAIC,UAAU,QAAQ,wBAAe;AACpD,SAASC,SAAS,QAAQ,uBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzC,OAAO,MAAMC,WAAW,GAAGA,CAAC;EAC1BC,UAAU,GAAG,OAAO;EACpBC,KAAK;EACLC,cAAc;EACdC,UAAU;EACVC,GAAG;EACH,GAAGC;AACa,CAAC,KAAK;EACtB,MAAMC,MAAM,GAAGC,mBAAmB,CAACP,UAAU,CAAC;EAE9C,oBACEF,IAAA,CAACF,SAAS;IACRQ,GAAG,EAAEA,GAAI;IACTI,MAAM,eAAEV,IAAA,CAACH,UAAU;MAACc,IAAI,EAAE,EAAG;MAACC,KAAK,EAAC,OAAO;MAACC,UAAU,EAAE;IAAM,CAAE,CAAE;IAClEV,KAAK,EAAEA,KAAM;IACbC,cAAc,EAAE,CAACA,cAAc,EAAEI,MAAM,CAACM,SAAS,CAAE;IACnDT,UAAU,EAAE,CAACA,UAAU,EAAEG,MAAM,CAACO,KAAK,CAAE;IAAA,GACnCR;EAAK,CACV,CAAC;AAEN,CAAC;AAED,MAAME,mBAAmB,GAAIP,UAAmC,IAAK;EACnE,OAAOP,aAAa,CACjBqB,CAAC,KAAM;IACNF,SAAS,EACPZ,UAAU,KAAK,aAAa,GACxB;MAAEe,eAAe,EAAED,CAAC,CAACE,MAAM,CAACC,EAAE,CAACC;IAAiB,CAAC,GACjD,CAAC,CAAC;IACRL,KAAK,EAAE;MAAEE,eAAe,EAAE;IAAc;EAC1C,CAAC,CAAC,EACF,CAACf,UAAU,CACb,CAAC;AACH,CAAC;AAEDD,WAAW,CAACoB,WAAW,GAAG,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["useDisabledContext","useStyleSheet","Search","SearchIcon","BaseInput","jsx","_jsx","SearchInput","appearance","style","containerStyle","inputStyle","disabled","disabledProp","ref","props","consumerName","mergeWith","styles","useAppearanceStyles","prefix","size","accessible","container","input","t","backgroundColor","colors","bg","mutedTransparent","displayName"],"sourceRoot":"../../../../../src","sources":["lib/Components/SearchInput/SearchInput.tsx"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,aAAa,QAAQ,0BAAiB;AAC/C,SAASC,MAAM,IAAIC,UAAU,QAAQ,wBAAe;AACpD,SAASC,SAAS,QAAQ,uBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzC,OAAO,MAAMC,WAAW,GAAGA,CAAC;EAC1BC,UAAU,GAAG,OAAO;EACpBC,KAAK;EACLC,cAAc;EACdC,UAAU;EACVC,QAAQ,EAAEC,YAAY;EACtBC,GAAG;EACH,GAAGC;AACa,CAAC,KAAK;EACtB,MAAMH,QAAQ,GAAGZ,kBAAkB,CAAC;IAClCgB,YAAY,EAAE,aAAa;IAC3BC,SAAS,EAAE;MAAEL,QAAQ,EAAEC;IAAa;EACtC,CAAC,CAAC;EACF,MAAMK,MAAM,GAAGC,mBAAmB,CAACX,UAAU,CAAC;EAE9C,oBACEF,IAAA,CAACF,SAAS;IACRU,GAAG,EAAEA,GAAI;IACTM,MAAM,eAAEd,IAAA,CAACH,UAAU;MAACkB,IAAI,EAAE,EAAG;MAACC,UAAU,EAAE,KAAM;MAACV,QAAQ,EAAEA;IAAS,CAAE,CAAE;IACxEH,KAAK,EAAEA,KAAM;IACbC,cAAc,EAAE,CAACA,cAAc,EAAEQ,MAAM,CAACK,SAAS,CAAE;IACnDZ,UAAU,EAAE,CAACA,UAAU,EAAEO,MAAM,CAACM,KAAK,CAAE;IACvCZ,QAAQ,EAAEC,YAAa;IAAA,GACnBE;EAAK,CACV,CAAC;AAEN,CAAC;AAED,MAAMI,mBAAmB,GAAIX,UAAmC,IAAK;EACnE,OAAOP,aAAa,CACjBwB,CAAC,KAAM;IACNF,SAAS,EACPf,UAAU,KAAK,aAAa,GACxB;MAAEkB,eAAe,EAAED,CAAC,CAACE,MAAM,CAACC,EAAE,CAACC;IAAiB,CAAC,GACjD,CAAC,CAAC;IACRL,KAAK,EAAE;MAAEE,eAAe,EAAE;IAAc;EAC1C,CAAC,CAAC,EACF,CAAClB,UAAU,CACb,CAAC;AACH,CAAC;AAEDD,WAAW,CAACuB,WAAW,GAAG,aAAa","ignoreList":[]}
@@ -57,10 +57,14 @@ Use `onClear` to extend the default clear behavior with custom logic.
57
57
 
58
58
  ### Disabled State
59
59
 
60
- The search input can be disabled using the `editable` prop set to `false`.
60
+ The search input can be fully disabled using the `disabled` prop, which prevents interaction and applies a muted visual style.
61
61
 
62
62
  <Canvas of={SearchInputStories.DisabledSearchInput} />
63
63
 
64
+ ### Read-Only State
65
+
66
+ Alternatively, use `editable={false}` to prevent editing without applying the muted visual style. This is useful for displaying non-editable values that should still look like regular inputs.
67
+
64
68
  ### Error State
65
69
 
66
70
  The search component supports error handling through `errorMessage` which displays an error message below the input with error styling including a red border and text color.
@@ -273,7 +277,15 @@ Use the `keyboardType` prop to show the appropriate keyboard:
273
277
 
274
278
  ### Disabled State
275
279
 
276
- Use the `editable` prop to disable the search input:
280
+ Use the `disabled` prop to disable the search input with a muted visual style:
281
+
282
+ ```tsx
283
+ <SearchInput placeholder='Search' value='Current search' disabled />
284
+ ```
285
+
286
+ ### Read-Only State
287
+
288
+ Use the `editable` prop to make the search input non-editable without the muted visual style:
277
289
 
278
290
  ```tsx
279
291
  <SearchInput placeholder='Search' value='Current search' editable={false} />
@@ -18,24 +18,6 @@ const meta = {
18
18
  type: 'code'
19
19
  }
20
20
  }
21
- },
22
- argTypes: {
23
- placeholder: {
24
- control: 'text',
25
- description: 'Placeholder text when input is empty'
26
- },
27
- errorMessage: {
28
- control: 'text',
29
- description: 'Error message to display below input'
30
- },
31
- editable: {
32
- control: 'boolean',
33
- description: 'Whether the input is editable'
34
- },
35
- hideClearButton: {
36
- control: 'boolean',
37
- description: 'Hide the clear button'
38
- }
39
21
  }
40
22
  };
41
23
  export default meta;
@@ -103,7 +85,7 @@ export const DisabledSearchInput = {
103
85
  }),
104
86
  args: {
105
87
  placeholder: 'Search products',
106
- editable: false,
88
+ disabled: true,
107
89
  hideClearButton: false
108
90
  }
109
91
  };