@ledgerhq/lumen-ui-rnative 0.1.10 → 0.1.12

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 (233) hide show
  1. package/dist/module/i18n/locales/de.json +3 -0
  2. package/dist/module/i18n/locales/en.json +3 -0
  3. package/dist/module/i18n/locales/es.json +3 -0
  4. package/dist/module/i18n/locales/fr.json +3 -0
  5. package/dist/module/i18n/locales/ja.json +3 -0
  6. package/dist/module/i18n/locales/ko.json +3 -0
  7. package/dist/module/i18n/locales/pt.json +3 -0
  8. package/dist/module/i18n/locales/ru.json +3 -0
  9. package/dist/module/i18n/locales/th.json +3 -0
  10. package/dist/module/i18n/locales/tr.json +3 -0
  11. package/dist/module/i18n/locales/zh.json +3 -0
  12. package/dist/module/lib/Animations/Pulse/Pulse.js +1 -1
  13. package/dist/module/lib/Animations/Spin/Spin.js +1 -1
  14. package/dist/module/lib/Components/AmountDisplay/AmountDisplay.js +21 -21
  15. package/dist/module/lib/Components/AmountDisplay/AmountDisplay.js.map +1 -1
  16. package/dist/module/lib/Components/AmountInput/AmountInput.js +19 -13
  17. package/dist/module/lib/Components/AmountInput/AmountInput.js.map +1 -1
  18. package/dist/module/lib/Components/BaseInput/BaseInput.js +16 -9
  19. package/dist/module/lib/Components/BaseInput/BaseInput.js.map +1 -1
  20. package/dist/module/lib/Components/BottomSheet/BottomSheet.stories.js.map +1 -1
  21. package/dist/module/lib/Components/Button/BaseButton.js +8 -1
  22. package/dist/module/lib/Components/Button/BaseButton.js.map +1 -1
  23. package/dist/module/lib/Components/Card/Card.js +20 -14
  24. package/dist/module/lib/Components/Card/Card.js.map +1 -1
  25. package/dist/module/lib/Components/CardButton/CardButton.js +8 -1
  26. package/dist/module/lib/Components/CardButton/CardButton.js.map +1 -1
  27. package/dist/module/lib/Components/Checkbox/Checkbox.js +8 -1
  28. package/dist/module/lib/Components/Checkbox/Checkbox.js.map +1 -1
  29. package/dist/module/lib/Components/InteractiveIcon/InteractiveIcon.js +32 -5
  30. package/dist/module/lib/Components/InteractiveIcon/InteractiveIcon.js.map +1 -1
  31. package/dist/module/lib/Components/Label/Label.js +9 -2
  32. package/dist/module/lib/Components/Label/Label.js.map +1 -1
  33. package/dist/module/lib/Components/Link/Link.mdx +1 -0
  34. package/dist/module/lib/Components/ListItem/ListItem.js +14 -19
  35. package/dist/module/lib/Components/ListItem/ListItem.js.map +1 -1
  36. package/dist/module/lib/Components/MediaCard/MediaCard.js +183 -0
  37. package/dist/module/lib/Components/MediaCard/MediaCard.js.map +1 -0
  38. package/dist/module/lib/Components/MediaCard/MediaCard.mdx +111 -0
  39. package/dist/module/lib/Components/MediaCard/MediaCard.stories.js +199 -0
  40. package/dist/module/lib/Components/MediaCard/MediaCard.stories.js.map +1 -0
  41. package/dist/module/lib/Components/MediaCard/MediaCard.test.js +140 -0
  42. package/dist/module/lib/Components/MediaCard/MediaCard.test.js.map +1 -0
  43. package/dist/module/lib/Components/MediaCard/index.js +5 -0
  44. package/dist/module/lib/Components/MediaCard/index.js.map +1 -0
  45. package/dist/module/lib/Components/MediaCard/types.js +4 -0
  46. package/dist/module/lib/Components/MediaCard/types.js.map +1 -0
  47. package/dist/module/lib/Components/PageIndicator/PageIndicator.js +2 -2
  48. package/dist/module/lib/Components/SegmentedControl/SegmentedControl.js +8 -1
  49. package/dist/module/lib/Components/SegmentedControl/SegmentedControl.js.map +1 -1
  50. package/dist/module/lib/Components/SegmentedControl/usePillLayout.js +1 -1
  51. package/dist/module/lib/Components/Select/Select.js +8 -1
  52. package/dist/module/lib/Components/Select/Select.js.map +1 -1
  53. package/dist/module/lib/Components/Spot/Spot.js +4 -4
  54. package/dist/module/lib/Components/Spot/Spot.js.map +1 -1
  55. package/dist/module/lib/Components/Stepper/Stepper.js +10 -4
  56. package/dist/module/lib/Components/Stepper/Stepper.js.map +1 -1
  57. package/dist/module/lib/Components/Subheader/Subheader.js +1 -34
  58. package/dist/module/lib/Components/Subheader/Subheader.js.map +1 -1
  59. package/dist/module/lib/Components/Subheader/Subheader.mdx +26 -61
  60. package/dist/module/lib/Components/Subheader/Subheader.stories.js +23 -12
  61. package/dist/module/lib/Components/Subheader/Subheader.stories.js.map +1 -1
  62. package/dist/module/lib/Components/Subheader/Subheader.test.js +2 -26
  63. package/dist/module/lib/Components/Subheader/Subheader.test.js.map +1 -1
  64. package/dist/module/lib/Components/Subheader/index.js +1 -1
  65. package/dist/module/lib/Components/Subheader/index.js.map +1 -1
  66. package/dist/module/lib/Components/Switch/BaseSwitch.js +1 -1
  67. package/dist/module/lib/Components/Switch/Switch.js +8 -1
  68. package/dist/module/lib/Components/Switch/Switch.js.map +1 -1
  69. package/dist/module/lib/Components/TabBar/TabBar.js +8 -7
  70. package/dist/module/lib/Components/TabBar/TabBar.js.map +1 -1
  71. package/dist/module/lib/Components/Tag/Tag.js +9 -2
  72. package/dist/module/lib/Components/Tag/Tag.js.map +1 -1
  73. package/dist/module/lib/Components/ThemeProvider/ThemeProvider.test.js +22 -20
  74. package/dist/module/lib/Components/ThemeProvider/ThemeProvider.test.js.map +1 -1
  75. package/dist/module/lib/Components/Tile/Tile.js +27 -48
  76. package/dist/module/lib/Components/Tile/Tile.js.map +1 -1
  77. package/dist/module/lib/Components/Tile/Tile.mdx +34 -26
  78. package/dist/module/lib/Components/Tile/Tile.stories.js +31 -28
  79. package/dist/module/lib/Components/Tile/Tile.stories.js.map +1 -1
  80. package/dist/module/lib/Components/Tile/Tile.test.js +33 -188
  81. package/dist/module/lib/Components/Tile/Tile.test.js.map +1 -1
  82. package/dist/module/lib/Components/Tile/index.js +1 -1
  83. package/dist/module/lib/Components/Tile/index.js.map +1 -1
  84. package/dist/module/lib/Components/TileButton/TileButton.js +8 -2
  85. package/dist/module/lib/Components/TileButton/TileButton.js.map +1 -1
  86. package/dist/module/lib/Components/TriggerButton/TriggerButton.js +197 -0
  87. package/dist/module/lib/Components/TriggerButton/TriggerButton.js.map +1 -0
  88. package/dist/module/lib/Components/TriggerButton/TriggerButton.mdx +44 -0
  89. package/dist/module/lib/Components/TriggerButton/TriggerButton.stories.js +170 -0
  90. package/dist/module/lib/Components/TriggerButton/TriggerButton.stories.js.map +1 -0
  91. package/dist/module/lib/Components/TriggerButton/TriggerButton.test.js +146 -0
  92. package/dist/module/lib/Components/TriggerButton/TriggerButton.test.js.map +1 -0
  93. package/dist/module/lib/Components/TriggerButton/index.js +5 -0
  94. package/dist/module/lib/Components/TriggerButton/index.js.map +1 -0
  95. package/dist/module/lib/Components/TriggerButton/types.js +4 -0
  96. package/dist/module/lib/Components/TriggerButton/types.js.map +1 -0
  97. package/dist/module/lib/Components/Utility/Gradient/RadialGradient/RadialGradient.stories.js.map +1 -1
  98. package/dist/module/lib/Components/index.js +2 -0
  99. package/dist/module/lib/Components/index.js.map +1 -1
  100. package/dist/module/lib/Symbols/Icons/NanoGen5.js +49 -0
  101. package/dist/module/lib/Symbols/Icons/NanoGen5.js.map +1 -0
  102. package/dist/module/lib/Symbols/index.js +1 -0
  103. package/dist/module/lib/Symbols/index.js.map +1 -1
  104. package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts +1 -1
  105. package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts.map +1 -1
  106. package/dist/typescript/src/lib/Components/BaseInput/BaseInput.d.ts +1 -1
  107. package/dist/typescript/src/lib/Components/BaseInput/BaseInput.d.ts.map +1 -1
  108. package/dist/typescript/src/lib/Components/Button/BaseButton.d.ts +1 -1
  109. package/dist/typescript/src/lib/Components/Button/BaseButton.d.ts.map +1 -1
  110. package/dist/typescript/src/lib/Components/Card/Card.d.ts.map +1 -1
  111. package/dist/typescript/src/lib/Components/Card/types.d.ts +1 -3
  112. package/dist/typescript/src/lib/Components/Card/types.d.ts.map +1 -1
  113. package/dist/typescript/src/lib/Components/CardButton/CardButton.d.ts +1 -1
  114. package/dist/typescript/src/lib/Components/CardButton/CardButton.d.ts.map +1 -1
  115. package/dist/typescript/src/lib/Components/Checkbox/Checkbox.d.ts +1 -1
  116. package/dist/typescript/src/lib/Components/Checkbox/Checkbox.d.ts.map +1 -1
  117. package/dist/typescript/src/lib/Components/InteractiveIcon/InteractiveIcon.d.ts +1 -1
  118. package/dist/typescript/src/lib/Components/InteractiveIcon/InteractiveIcon.d.ts.map +1 -1
  119. package/dist/typescript/src/lib/Components/InteractiveIcon/types.d.ts +14 -1
  120. package/dist/typescript/src/lib/Components/InteractiveIcon/types.d.ts.map +1 -1
  121. package/dist/typescript/src/lib/Components/Label/Label.d.ts +1 -1
  122. package/dist/typescript/src/lib/Components/Label/Label.d.ts.map +1 -1
  123. package/dist/typescript/src/lib/Components/ListItem/ListItem.d.ts +1 -1
  124. package/dist/typescript/src/lib/Components/ListItem/ListItem.d.ts.map +1 -1
  125. package/dist/typescript/src/lib/Components/MediaCard/MediaCard.d.ts +32 -0
  126. package/dist/typescript/src/lib/Components/MediaCard/MediaCard.d.ts.map +1 -0
  127. package/dist/typescript/src/lib/Components/MediaCard/index.d.ts +3 -0
  128. package/dist/typescript/src/lib/Components/MediaCard/index.d.ts.map +1 -0
  129. package/dist/typescript/src/lib/Components/MediaCard/types.d.ts +38 -0
  130. package/dist/typescript/src/lib/Components/MediaCard/types.d.ts.map +1 -0
  131. package/dist/typescript/src/lib/Components/SegmentedControl/SegmentedControl.d.ts +1 -1
  132. package/dist/typescript/src/lib/Components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  133. package/dist/typescript/src/lib/Components/SegmentedControl/SegmentedControlContext.d.ts +1 -1
  134. package/dist/typescript/src/lib/Components/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
  135. package/dist/typescript/src/lib/Components/Select/Select.d.ts +1 -1
  136. package/dist/typescript/src/lib/Components/Select/Select.d.ts.map +1 -1
  137. package/dist/typescript/src/lib/Components/Stepper/Stepper.d.ts +1 -1
  138. package/dist/typescript/src/lib/Components/Stepper/Stepper.d.ts.map +1 -1
  139. package/dist/typescript/src/lib/Components/Subheader/Subheader.d.ts +2 -7
  140. package/dist/typescript/src/lib/Components/Subheader/Subheader.d.ts.map +1 -1
  141. package/dist/typescript/src/lib/Components/Subheader/index.d.ts +1 -1
  142. package/dist/typescript/src/lib/Components/Subheader/index.d.ts.map +1 -1
  143. package/dist/typescript/src/lib/Components/Subheader/types.d.ts +1 -11
  144. package/dist/typescript/src/lib/Components/Subheader/types.d.ts.map +1 -1
  145. package/dist/typescript/src/lib/Components/Switch/Switch.d.ts +1 -1
  146. package/dist/typescript/src/lib/Components/Switch/Switch.d.ts.map +1 -1
  147. package/dist/typescript/src/lib/Components/TabBar/TabBar.d.ts.map +1 -1
  148. package/dist/typescript/src/lib/Components/Tag/Tag.d.ts +1 -1
  149. package/dist/typescript/src/lib/Components/Tag/Tag.d.ts.map +1 -1
  150. package/dist/typescript/src/lib/Components/Tile/Tile.d.ts +17 -23
  151. package/dist/typescript/src/lib/Components/Tile/Tile.d.ts.map +1 -1
  152. package/dist/typescript/src/lib/Components/Tile/index.d.ts +1 -1
  153. package/dist/typescript/src/lib/Components/Tile/index.d.ts.map +1 -1
  154. package/dist/typescript/src/lib/Components/Tile/types.d.ts +0 -9
  155. package/dist/typescript/src/lib/Components/Tile/types.d.ts.map +1 -1
  156. package/dist/typescript/src/lib/Components/TileButton/TileButton.d.ts +1 -1
  157. package/dist/typescript/src/lib/Components/TileButton/TileButton.d.ts.map +1 -1
  158. package/dist/typescript/src/lib/Components/TriggerButton/TriggerButton.d.ts +26 -0
  159. package/dist/typescript/src/lib/Components/TriggerButton/TriggerButton.d.ts.map +1 -0
  160. package/dist/typescript/src/lib/Components/TriggerButton/index.d.ts +3 -0
  161. package/dist/typescript/src/lib/Components/TriggerButton/index.d.ts.map +1 -0
  162. package/dist/typescript/src/lib/Components/TriggerButton/types.d.ts +38 -0
  163. package/dist/typescript/src/lib/Components/TriggerButton/types.d.ts.map +1 -0
  164. package/dist/typescript/src/lib/Components/index.d.ts +2 -0
  165. package/dist/typescript/src/lib/Components/index.d.ts.map +1 -1
  166. package/dist/typescript/src/lib/Symbols/Icons/NanoGen5.d.ts +35 -0
  167. package/dist/typescript/src/lib/Symbols/Icons/NanoGen5.d.ts.map +1 -0
  168. package/dist/typescript/src/lib/Symbols/index.d.ts +1 -0
  169. package/dist/typescript/src/lib/Symbols/index.d.ts.map +1 -1
  170. package/package.json +4 -4
  171. package/src/i18n/locales/de.json +3 -0
  172. package/src/i18n/locales/en.json +3 -0
  173. package/src/i18n/locales/es.json +3 -0
  174. package/src/i18n/locales/fr.json +3 -0
  175. package/src/i18n/locales/ja.json +3 -0
  176. package/src/i18n/locales/ko.json +3 -0
  177. package/src/i18n/locales/pt.json +3 -0
  178. package/src/i18n/locales/ru.json +3 -0
  179. package/src/i18n/locales/th.json +3 -0
  180. package/src/i18n/locales/tr.json +3 -0
  181. package/src/i18n/locales/zh.json +3 -0
  182. package/src/lib/Components/AmountDisplay/AmountDisplay.tsx +20 -20
  183. package/src/lib/Components/AmountInput/AmountInput.tsx +15 -7
  184. package/src/lib/Components/BaseInput/BaseInput.tsx +12 -7
  185. package/src/lib/Components/BottomSheet/BottomSheet.stories.tsx +9 -9
  186. package/src/lib/Components/Button/BaseButton.tsx +6 -1
  187. package/src/lib/Components/Card/Card.tsx +16 -16
  188. package/src/lib/Components/Card/types.ts +1 -4
  189. package/src/lib/Components/CardButton/CardButton.tsx +7 -1
  190. package/src/lib/Components/Checkbox/Checkbox.tsx +7 -1
  191. package/src/lib/Components/InteractiveIcon/InteractiveIcon.tsx +34 -7
  192. package/src/lib/Components/InteractiveIcon/types.ts +14 -1
  193. package/src/lib/Components/Label/Label.tsx +7 -2
  194. package/src/lib/Components/Link/Link.mdx +1 -0
  195. package/src/lib/Components/ListItem/ListItem.tsx +15 -12
  196. package/src/lib/Components/MediaCard/MediaCard.mdx +111 -0
  197. package/src/lib/Components/MediaCard/MediaCard.stories.tsx +190 -0
  198. package/src/lib/Components/MediaCard/MediaCard.test.tsx +125 -0
  199. package/src/lib/Components/MediaCard/MediaCard.tsx +203 -0
  200. package/src/lib/Components/MediaCard/index.ts +2 -0
  201. package/src/lib/Components/MediaCard/types.ts +39 -0
  202. package/src/lib/Components/SegmentedControl/SegmentedControl.tsx +6 -1
  203. package/src/lib/Components/SegmentedControl/SegmentedControlContext.tsx +1 -1
  204. package/src/lib/Components/Select/Select.tsx +6 -1
  205. package/src/lib/Components/Spot/Spot.tsx +4 -4
  206. package/src/lib/Components/Stepper/Stepper.tsx +9 -2
  207. package/src/lib/Components/Subheader/Subheader.mdx +26 -61
  208. package/src/lib/Components/Subheader/Subheader.stories.tsx +16 -10
  209. package/src/lib/Components/Subheader/Subheader.test.tsx +0 -22
  210. package/src/lib/Components/Subheader/Subheader.tsx +1 -42
  211. package/src/lib/Components/Subheader/index.ts +0 -1
  212. package/src/lib/Components/Subheader/types.ts +1 -16
  213. package/src/lib/Components/Switch/Switch.tsx +6 -1
  214. package/src/lib/Components/TabBar/TabBar.tsx +5 -2
  215. package/src/lib/Components/Tag/Tag.tsx +7 -2
  216. package/src/lib/Components/ThemeProvider/ThemeProvider.test.tsx +16 -18
  217. package/src/lib/Components/Tile/Tile.mdx +34 -26
  218. package/src/lib/Components/Tile/Tile.stories.tsx +26 -26
  219. package/src/lib/Components/Tile/Tile.test.tsx +17 -137
  220. package/src/lib/Components/Tile/Tile.tsx +28 -40
  221. package/src/lib/Components/Tile/index.ts +0 -1
  222. package/src/lib/Components/Tile/types.ts +0 -11
  223. package/src/lib/Components/TileButton/TileButton.tsx +9 -2
  224. package/src/lib/Components/TriggerButton/TriggerButton.mdx +44 -0
  225. package/src/lib/Components/TriggerButton/TriggerButton.stories.tsx +132 -0
  226. package/src/lib/Components/TriggerButton/TriggerButton.test.tsx +157 -0
  227. package/src/lib/Components/TriggerButton/TriggerButton.tsx +228 -0
  228. package/src/lib/Components/TriggerButton/index.ts +2 -0
  229. package/src/lib/Components/TriggerButton/types.ts +38 -0
  230. package/src/lib/Components/Utility/Gradient/RadialGradient/RadialGradient.stories.tsx +1 -1
  231. package/src/lib/Components/index.ts +2 -0
  232. package/src/lib/Symbols/Icons/NanoGen5.tsx +44 -0
  233. package/src/lib/Symbols/index.ts +1 -0
@@ -0,0 +1,228 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { StyleSheet, Text, View } from 'react-native';
3
+ import { useStyleSheet } from '../../../styles';
4
+ import { ChevronDown } from '../../Symbols';
5
+ import { Pressable } from '../Utility';
6
+ import type { TriggerButtonProps } from './types';
7
+
8
+ type Appearance = NonNullable<TriggerButtonProps['appearance']>;
9
+ type Size = NonNullable<TriggerButtonProps['size']>;
10
+ type IconType = 'flat' | 'rounded' | 'none';
11
+
12
+ const useStyles = ({
13
+ appearance,
14
+ size,
15
+ disabled,
16
+ pressed,
17
+ iconType,
18
+ }: {
19
+ appearance: Appearance;
20
+ size: Size;
21
+ disabled: boolean;
22
+ pressed: boolean;
23
+ iconType: IconType;
24
+ }) => {
25
+ return useStyleSheet(
26
+ (t) => {
27
+ const bgColors: Record<Appearance, string> = {
28
+ gray: t.colors.bg.muted,
29
+ transparent: t.colors.bg.mutedTransparent,
30
+ 'no-background': 'transparent',
31
+ };
32
+
33
+ const pressedBgColors: Record<Appearance, string> = {
34
+ gray: t.colors.bg.mutedPressed,
35
+ transparent: t.colors.bg.mutedTransparentPressed,
36
+ 'no-background': t.colors.bg.baseTransparentPressed,
37
+ };
38
+
39
+ const textColor = disabled ? t.colors.text.disabled : t.colors.text.base;
40
+
41
+ type PaddingStyle = {
42
+ paddingTop: number;
43
+ paddingBottom: number;
44
+ paddingLeft: number;
45
+ paddingRight: number;
46
+ };
47
+
48
+ const paddingMap: Record<Size, Record<IconType, PaddingStyle>> = {
49
+ md: {
50
+ flat: {
51
+ paddingTop: t.spacings.s12,
52
+ paddingBottom: t.spacings.s12,
53
+ paddingLeft: t.spacings.s16,
54
+ paddingRight: t.spacings.s16,
55
+ },
56
+ rounded: {
57
+ paddingTop: t.spacings.s8,
58
+ paddingBottom: t.spacings.s8,
59
+ paddingLeft: t.spacings.s8,
60
+ paddingRight: t.spacings.s16,
61
+ },
62
+ none: {
63
+ paddingTop: t.spacings.s14,
64
+ paddingBottom: t.spacings.s14,
65
+ paddingLeft: t.spacings.s16,
66
+ paddingRight: t.spacings.s16,
67
+ },
68
+ },
69
+ sm: {
70
+ flat: {
71
+ paddingTop: t.spacings.s10,
72
+ paddingBottom: t.spacings.s10,
73
+ paddingLeft: t.spacings.s12,
74
+ paddingRight: t.spacings.s12,
75
+ },
76
+ rounded: {
77
+ paddingTop: t.spacings.s8,
78
+ paddingBottom: t.spacings.s8,
79
+ paddingLeft: t.spacings.s8,
80
+ paddingRight: t.spacings.s10,
81
+ },
82
+ none: {
83
+ paddingTop: t.spacings.s10,
84
+ paddingBottom: t.spacings.s10,
85
+ paddingLeft: t.spacings.s12,
86
+ paddingRight: t.spacings.s12,
87
+ },
88
+ },
89
+ };
90
+
91
+ return {
92
+ container: StyleSheet.flatten([
93
+ {
94
+ flexDirection: 'row',
95
+ alignItems: 'center',
96
+ borderRadius: t.borderRadius.full,
97
+ backgroundColor: bgColors[appearance],
98
+ gap: t.spacings.s8,
99
+ },
100
+ paddingMap[size][iconType],
101
+ pressed && { backgroundColor: pressedBgColors[appearance] },
102
+ disabled && { backgroundColor: t.colors.bg.disabled },
103
+ appearance === 'no-background' &&
104
+ disabled && { backgroundColor: 'transparent' },
105
+ ]),
106
+ label: StyleSheet.flatten([
107
+ t.typographies.body2SemiBold,
108
+ {
109
+ color: textColor,
110
+ textAlign: 'left',
111
+ },
112
+ ]),
113
+ labelWrapper: {
114
+ flexDirection: 'row',
115
+ alignItems: 'center',
116
+ gap: t.spacings.s2,
117
+ },
118
+ icon: {
119
+ flexShrink: 0,
120
+ },
121
+ chevron: {
122
+ flexShrink: 0,
123
+ color: textColor,
124
+ },
125
+ };
126
+ },
127
+ [appearance, size, disabled, pressed, iconType],
128
+ );
129
+ };
130
+
131
+ /**
132
+ * Trigger button for select/dropdown components. Displays a label with an optional
133
+ * leading icon and a trailing chevron indicator.
134
+ *
135
+ * This component is intended to be used exclusively as the trigger inside a Select or
136
+ * dropdown pattern. It should not be used as a standalone action button — use `Button`
137
+ * or `IconButton` instead.
138
+ *
139
+ * @see {@link https://www.figma.com/design/JxaLVMTWirCpU0rsbZ30k7/2.-Components-Library?node-id=6389-45680 Figma}
140
+ *
141
+ * @example
142
+ * import { TriggerButton } from '@ledgerhq/lumen-ui-rnative';
143
+ * import { Settings } from '@ledgerhq/lumen-ui-rnative/symbols';
144
+ *
145
+ * <TriggerButton icon={<Settings size={20} />} iconType="flat">
146
+ * Network
147
+ * </TriggerButton>
148
+ *
149
+ * <TriggerButton>All accounts</TriggerButton>
150
+ */
151
+ export const TriggerButton = ({
152
+ lx,
153
+ style,
154
+ appearance = 'gray',
155
+ size = 'md',
156
+ disabled = false,
157
+ icon,
158
+ iconType = 'flat',
159
+ children: label,
160
+ ref,
161
+ ...props
162
+ }: TriggerButtonProps) => {
163
+ const effectiveIconType: IconType = icon ? iconType : 'none';
164
+
165
+ return (
166
+ <Pressable
167
+ ref={ref}
168
+ lx={lx}
169
+ style={style}
170
+ disabled={disabled}
171
+ accessibilityRole='button'
172
+ accessibilityState={{ disabled }}
173
+ {...props}
174
+ >
175
+ {({ pressed }) => (
176
+ <TriggerButtonContent
177
+ appearance={appearance}
178
+ size={size}
179
+ disabled={disabled}
180
+ pressed={pressed}
181
+ iconType={effectiveIconType}
182
+ icon={icon}
183
+ >
184
+ {label}
185
+ </TriggerButtonContent>
186
+ )}
187
+ </Pressable>
188
+ );
189
+ };
190
+
191
+ type TriggerButtonContentProps = PropsWithChildren<{
192
+ appearance: Appearance;
193
+ size: Size;
194
+ disabled: boolean;
195
+ pressed: boolean;
196
+ iconType: IconType;
197
+ icon?: TriggerButtonProps['icon'];
198
+ }>;
199
+
200
+ const TriggerButtonContent = ({
201
+ appearance,
202
+ size,
203
+ disabled,
204
+ pressed,
205
+ iconType,
206
+ icon,
207
+ children,
208
+ }: TriggerButtonContentProps) => {
209
+ const styles = useStyles({ appearance, size, disabled, pressed, iconType });
210
+
211
+ return (
212
+ <View style={styles.container} testID='button-trigger-content'>
213
+ {icon && <View style={styles.icon}>{icon}</View>}
214
+ <View style={styles.labelWrapper}>
215
+ <Text style={styles.label} numberOfLines={1} ellipsizeMode='tail'>
216
+ {children}
217
+ </Text>
218
+ <ChevronDown
219
+ size={20}
220
+ style={styles.chevron}
221
+ testID='button-trigger-chevron'
222
+ />
223
+ </View>
224
+ </View>
225
+ );
226
+ };
227
+
228
+ TriggerButton.displayName = 'TriggerButton';
@@ -0,0 +1,2 @@
1
+ export { TriggerButton } from './TriggerButton';
2
+ export * from './types';
@@ -0,0 +1,38 @@
1
+ import { ReactNode } from 'react';
2
+ import { StyledPressableProps } from '../../../styles';
3
+
4
+ export type TriggerButtonProps = {
5
+ /**
6
+ * The visual style of the trigger button.
7
+ * @default 'gray'
8
+ */
9
+ appearance?: 'gray' | 'transparent' | 'no-background';
10
+ /**
11
+ * The size variant of the trigger button.
12
+ * @default 'md'
13
+ */
14
+ size?: 'sm' | 'md';
15
+ /**
16
+ * An optional pre-rendered icon element to display as leading content.
17
+ * Consumer is responsible for sizing the icon.
18
+ */
19
+ icon?: ReactNode;
20
+ /**
21
+ * Determines the padding scheme when an icon is present.
22
+ * - `'flat'`: Standard padding for line/interface icons.
23
+ * - `'rounded'`: Tighter left padding for circular icons with their own background (e.g., crypto icons).
24
+ *
25
+ * Only relevant when `icon` is provided.
26
+ * @default 'flat'
27
+ */
28
+ iconType?: 'flat' | 'rounded';
29
+ /**
30
+ * Whether the trigger button is disabled.
31
+ * @default false
32
+ */
33
+ disabled?: boolean;
34
+ /**
35
+ * The label content of the trigger button.
36
+ */
37
+ children: ReactNode;
38
+ } & Omit<StyledPressableProps, 'children'>;
@@ -64,7 +64,7 @@ export const CenterPositionShowcase: Story = {
64
64
  { center: { x: 0.8, y: 0.2 }, label: '{x: 0.8, y: 0.2}' },
65
65
  ],
66
66
  },
67
- ] as const;
67
+ ];
68
68
 
69
69
  return (
70
70
  <Box lx={{ flexDirection: 'column', gap: 's40' }}>
@@ -5,6 +5,7 @@ export * from './Avatar';
5
5
  export * from './Banner';
6
6
  export * from './BottomSheet';
7
7
  export * from './Button';
8
+ export * from './TriggerButton';
8
9
  export * from './Card';
9
10
  export * from './CardButton';
10
11
  export * from './ContentBanner';
@@ -15,6 +16,7 @@ export * from './IconButton';
15
16
  export * from './InteractiveIcon';
16
17
  export * from './Link';
17
18
  export * from './ListItem';
19
+ export * from './MediaCard';
18
20
  export * from './NavBar';
19
21
  export * from './PageIndicator';
20
22
  export * from './SearchInput';
@@ -0,0 +1,44 @@
1
+ import Svg, { Path } from 'react-native-svg';
2
+ import createIcon from '../../Components/Icon/createIcon';
3
+
4
+ /**
5
+ * NanoGen5 icon component for React Native.
6
+ *
7
+ * This icon component is automatically generated from SVG files and uses the createIcon utility
8
+ * to create a consistent icon interface. It supports all standard SVG props (from react-native-svg)
9
+ * and additional size variants defined in the Icon component.
10
+ *
11
+ * @component
12
+ * @param {16 | 20 | 24 | 40 | 48 | 56} [size=24] - The size of the icon in pixels.
13
+ * @param {string} [color] - The color of the icon.
14
+ * @param {SVGProps} [...props] - All standard SVG element props (from react-native-svg).
15
+ *
16
+ * @example
17
+ * // Basic usage with default size (24px)
18
+ * import { NanoGen5 } from '@ledgerhq/lumen-ui-rnative/symbols';
19
+ *
20
+ * <NanoGen5 />
21
+ *
22
+ * @example
23
+ * // With custom size and style
24
+ * <NanoGen5 size={40} color="warning" lx={{ marginTop: 's4' }} />
25
+ *
26
+ * @example
27
+ * // Used within a Button component
28
+ * import { Button } from '@ledgerhq/lumen-ui-rnative';
29
+ *
30
+ * <Button icon={NanoGen5} size="md">
31
+ * Click me
32
+ * </Button>
33
+ */
34
+ export const NanoGen5 = createIcon(
35
+ 'NanoGen5',
36
+ <Svg width={24} height={24} fill='currentColor' viewBox='0 0 16 16'>
37
+ <Path
38
+ fill='currentColor'
39
+ fillRule='evenodd'
40
+ d='M11 1.333c.92 0 1.667.747 1.667 1.667v.333c.184 0 .333.15.333.334v1.666a.334.334 0 0 1-.266.327l-.067.007V13c0 .92-.746 1.667-1.667 1.667H5c-.92 0-1.667-.746-1.667-1.667V3c0-.92.747-1.667 1.667-1.667zM9.667 12.667a.667.667 0 0 0 0 1.333H11a.667.667 0 0 0 0-1.333zM5 2.333A.667.667 0 0 0 4.333 3v8c0 .368.299.667.667.667h6a.667.667 0 0 0 .667-.667V3A.667.667 0 0 0 11 2.333z'
41
+ clipRule='evenodd'
42
+ />
43
+ </Svg>,
44
+ );
@@ -164,6 +164,7 @@ export { Moon } from './Icons/Moon';
164
164
  export { MoreHorizontal } from './Icons/MoreHorizontal';
165
165
  export { MoreVertical } from './Icons/MoreVertical';
166
166
  export { Nano } from './Icons/Nano';
167
+ export { NanoGen5 } from './Icons/NanoGen5';
167
168
  export { NetworkWarning } from './Icons/NetworkWarning';
168
169
  export { Nfc } from './Icons/Nfc';
169
170
  export { Nft } from './Icons/Nft';