@ledgerhq/lumen-ui-rnative 0.0.46 → 0.0.48

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 (148) hide show
  1. package/dist/package.json +6 -2
  2. package/dist/src/lib/Components/Divider/Divider.d.ts +25 -0
  3. package/dist/src/lib/Components/Divider/Divider.d.ts.map +1 -0
  4. package/dist/src/lib/Components/Divider/Divider.js +40 -0
  5. package/dist/src/lib/Components/Divider/Divider.stories.d.ts +9 -0
  6. package/dist/src/lib/Components/Divider/Divider.stories.d.ts.map +1 -0
  7. package/dist/src/lib/Components/Divider/Divider.stories.js +51 -0
  8. package/dist/src/lib/Components/Divider/index.d.ts +3 -0
  9. package/dist/src/lib/Components/Divider/index.d.ts.map +1 -0
  10. package/dist/src/lib/Components/Divider/index.js +1 -0
  11. package/dist/src/lib/Components/Divider/types.d.ts +9 -0
  12. package/dist/src/lib/Components/Divider/types.d.ts.map +1 -0
  13. package/dist/src/lib/Components/Icon/Icon.d.ts.map +1 -1
  14. package/dist/src/lib/Components/Icon/Icon.js +3 -4
  15. package/dist/src/lib/Components/Icon/createIcon.d.ts.map +1 -1
  16. package/dist/src/lib/Components/Icon/createIcon.js +1 -1
  17. package/dist/src/lib/Components/ListItem/ListItem.d.ts +88 -34
  18. package/dist/src/lib/Components/ListItem/ListItem.d.ts.map +1 -1
  19. package/dist/src/lib/Components/ListItem/ListItem.js +248 -97
  20. package/dist/src/lib/Components/ListItem/ListItem.stories.d.ts +2 -3
  21. package/dist/src/lib/Components/ListItem/ListItem.stories.d.ts.map +1 -1
  22. package/dist/src/lib/Components/ListItem/ListItem.stories.js +63 -73
  23. package/dist/src/lib/Components/ListItem/index.d.ts +1 -1
  24. package/dist/src/lib/Components/ListItem/index.d.ts.map +1 -1
  25. package/dist/src/lib/Components/ListItem/index.js +1 -1
  26. package/dist/src/lib/Components/ListItem/types.d.ts +106 -0
  27. package/dist/src/lib/Components/ListItem/types.d.ts.map +1 -0
  28. package/dist/src/lib/Components/ListItem/types.js +1 -0
  29. package/dist/src/lib/Components/Select/GlobalSelectBottomSheet.d.ts.map +1 -1
  30. package/dist/src/lib/Components/Select/GlobalSelectBottomSheet.js +2 -7
  31. package/dist/src/lib/Components/Select/Select.d.ts.map +1 -1
  32. package/dist/src/lib/Components/Select/Select.js +4 -10
  33. package/dist/src/lib/Components/Select/types.d.ts.map +1 -1
  34. package/dist/src/lib/Components/Spot/types.d.ts +1 -1
  35. package/dist/src/lib/Components/Spot/types.d.ts.map +1 -1
  36. package/dist/src/lib/Components/Tile/Tile.d.ts +84 -19
  37. package/dist/src/lib/Components/Tile/Tile.d.ts.map +1 -1
  38. package/dist/src/lib/Components/Tile/Tile.figma.js +8 -18
  39. package/dist/src/lib/Components/Tile/Tile.js +160 -59
  40. package/dist/src/lib/Components/Tile/Tile.stories.d.ts +2 -2
  41. package/dist/src/lib/Components/Tile/Tile.stories.d.ts.map +1 -1
  42. package/dist/src/lib/Components/Tile/Tile.stories.js +30 -81
  43. package/dist/src/lib/Components/Tile/index.d.ts +1 -1
  44. package/dist/src/lib/Components/Tile/index.d.ts.map +1 -1
  45. package/dist/src/lib/Components/Tile/index.js +1 -1
  46. package/dist/src/lib/Components/Tile/types.d.ts +29 -19
  47. package/dist/src/lib/Components/Tile/types.d.ts.map +1 -1
  48. package/dist/src/lib/Components/index.d.ts +1 -0
  49. package/dist/src/lib/Components/index.d.ts.map +1 -1
  50. package/dist/src/lib/Components/index.js +1 -0
  51. package/dist/src/lib/utils/index.d.ts +3 -4
  52. package/dist/src/lib/utils/index.d.ts.map +1 -1
  53. package/dist/src/lib/utils/index.js +3 -4
  54. package/dist/src/lib/utils/react/{extract-text-from-children.d.ts → extractTextFromChildren.d.ts} +1 -1
  55. package/dist/src/lib/utils/react/extractTextFromChildren.d.ts.map +1 -0
  56. package/dist/src/lib/utils/react/index.d.ts +1 -1
  57. package/dist/src/lib/utils/react/index.d.ts.map +1 -1
  58. package/dist/src/lib/utils/react/index.js +1 -1
  59. package/dist/src/lib/utils/startTransition/index.d.ts +2 -0
  60. package/dist/src/lib/utils/startTransition/index.d.ts.map +1 -0
  61. package/dist/src/lib/utils/startTransition/index.js +1 -0
  62. package/dist/src/lib/utils/{start-transition/start-transition.d.ts → startTransition/startTransition.d.ts} +1 -1
  63. package/dist/src/lib/utils/startTransition/startTransition.d.ts.map +1 -0
  64. package/dist/src/lib/utils/useControllableState/index.d.ts +2 -0
  65. package/dist/src/lib/utils/useControllableState/index.d.ts.map +1 -0
  66. package/dist/src/lib/utils/useControllableState/index.js +1 -0
  67. package/dist/src/lib/utils/{use-controllable-state/use-controllable-state.d.ts → useControllableState/useControllableState.d.ts} +1 -1
  68. package/dist/src/lib/utils/useControllableState/useControllableState.d.ts.map +1 -0
  69. package/dist/src/lib/utils/{use-controllable-state/use-controllable-state.js → useControllableState/useControllableState.js} +2 -2
  70. package/dist/src/lib/utils/useEvent/index.d.ts +3 -0
  71. package/dist/src/lib/utils/useEvent/index.d.ts.map +1 -0
  72. package/dist/src/lib/utils/useEvent/index.js +2 -0
  73. package/dist/src/lib/utils/{use-event/use-event.d.ts → useEvent/useEvent.d.ts} +1 -1
  74. package/dist/src/lib/utils/useEvent/useEvent.d.ts.map +1 -0
  75. package/dist/src/lib/utils/{use-event/use-event.js → useEvent/useEvent.js} +1 -1
  76. package/dist/src/lib/utils/{use-event/use-get.d.ts → useEvent/useGet.d.ts} +1 -1
  77. package/dist/src/lib/utils/useEvent/useGet.d.ts.map +1 -0
  78. package/dist/src/styles/provider/LumenStyleSheetProvider.d.ts +1 -1
  79. package/dist/src/styles/provider/LumenStyleSheetProvider.d.ts.map +1 -1
  80. package/dist/src/styles/provider/LumenStyleSheetProvider.js +1 -2
  81. package/package.json +6 -2
  82. package/src/lib/Components/Checkbox/Checkbox.mdx +1 -0
  83. package/src/lib/Components/Divider/Divider.mdx +151 -0
  84. package/src/lib/Components/Divider/Divider.stories.tsx +140 -0
  85. package/src/lib/Components/Divider/Divider.test.tsx +92 -0
  86. package/src/lib/Components/Divider/Divider.tsx +52 -0
  87. package/src/lib/Components/Divider/index.ts +2 -0
  88. package/src/lib/Components/Divider/types.ts +9 -0
  89. package/src/lib/Components/Icon/Icon.tsx +3 -5
  90. package/src/lib/Components/Icon/createIcon.ts +1 -1
  91. package/src/lib/Components/ListItem/ListItem.mdx +402 -124
  92. package/src/lib/Components/ListItem/ListItem.stories.tsx +357 -228
  93. package/src/lib/Components/ListItem/ListItem.tsx +444 -181
  94. package/src/lib/Components/ListItem/index.ts +1 -1
  95. package/src/lib/Components/ListItem/types.ts +121 -0
  96. package/src/lib/Components/Select/GlobalSelectBottomSheet.tsx +5 -7
  97. package/src/lib/Components/Select/Select.tsx +4 -18
  98. package/src/lib/Components/Select/types.ts +1 -3
  99. package/src/lib/Components/Spot/types.ts +5 -1
  100. package/src/lib/Components/Switch/Switch.mdx +1 -0
  101. package/src/lib/Components/Tile/Tile.figma.tsx +24 -23
  102. package/src/lib/Components/Tile/Tile.mdx +128 -35
  103. package/src/lib/Components/Tile/Tile.stories.tsx +167 -146
  104. package/src/lib/Components/Tile/Tile.test.tsx +193 -221
  105. package/src/lib/Components/Tile/Tile.tsx +270 -123
  106. package/src/lib/Components/Tile/index.ts +7 -1
  107. package/src/lib/Components/Tile/types.ts +38 -19
  108. package/src/lib/Components/index.ts +1 -0
  109. package/src/lib/utils/index.ts +3 -4
  110. package/src/lib/utils/react/index.ts +1 -1
  111. package/src/lib/utils/startTransition/index.ts +1 -0
  112. package/src/lib/utils/useControllableState/index.ts +1 -0
  113. package/src/lib/utils/{use-controllable-state/use-controllable-state.ts → useControllableState/useControllableState.ts} +2 -2
  114. package/src/lib/utils/useEvent/index.ts +2 -0
  115. package/src/lib/utils/{use-event/use-event.ts → useEvent/useEvent.ts} +1 -1
  116. package/src/styles/provider/LumenStyleSheetProvider.tsx +2 -3
  117. package/dist/src/lib/Components/ListItem/ListItem.types.d.ts +0 -31
  118. package/dist/src/lib/Components/ListItem/ListItem.types.d.ts.map +0 -1
  119. package/dist/src/lib/utils/react/extract-text-from-children.d.ts.map +0 -1
  120. package/dist/src/lib/utils/start-transition/index.d.ts +0 -2
  121. package/dist/src/lib/utils/start-transition/index.d.ts.map +0 -1
  122. package/dist/src/lib/utils/start-transition/index.js +0 -1
  123. package/dist/src/lib/utils/start-transition/start-transition.d.ts.map +0 -1
  124. package/dist/src/lib/utils/string-utils.d.ts +0 -6
  125. package/dist/src/lib/utils/string-utils.d.ts.map +0 -1
  126. package/dist/src/lib/utils/string-utils.js +0 -12
  127. package/dist/src/lib/utils/use-controllable-state/index.d.ts +0 -2
  128. package/dist/src/lib/utils/use-controllable-state/index.d.ts.map +0 -1
  129. package/dist/src/lib/utils/use-controllable-state/index.js +0 -1
  130. package/dist/src/lib/utils/use-controllable-state/use-controllable-state.d.ts.map +0 -1
  131. package/dist/src/lib/utils/use-event/index.d.ts +0 -3
  132. package/dist/src/lib/utils/use-event/index.d.ts.map +0 -1
  133. package/dist/src/lib/utils/use-event/index.js +0 -2
  134. package/dist/src/lib/utils/use-event/use-event.d.ts.map +0 -1
  135. package/dist/src/lib/utils/use-event/use-get.d.ts.map +0 -1
  136. package/src/lib/Components/ListItem/ListItem.types.ts +0 -31
  137. package/src/lib/utils/start-transition/index.ts +0 -1
  138. package/src/lib/utils/string-utils.test.ts +0 -73
  139. package/src/lib/utils/string-utils.ts +0 -11
  140. package/src/lib/utils/use-controllable-state/index.ts +0 -1
  141. package/src/lib/utils/use-event/index.ts +0 -2
  142. /package/dist/src/lib/Components/{ListItem/ListItem.types.js → Divider/types.js} +0 -0
  143. /package/dist/src/lib/utils/react/{extract-text-from-children.js → extractTextFromChildren.js} +0 -0
  144. /package/dist/src/lib/utils/{start-transition/start-transition.js → startTransition/startTransition.js} +0 -0
  145. /package/dist/src/lib/utils/{use-event/use-get.js → useEvent/useGet.js} +0 -0
  146. /package/src/lib/utils/react/{extract-text-from-children.ts → extractTextFromChildren.ts} +0 -0
  147. /package/src/lib/utils/{start-transition/start-transition.ts → startTransition/startTransition.ts} +0 -0
  148. /package/src/lib/utils/{use-event/use-get.ts → useEvent/useGet.ts} +0 -0
@@ -1,40 +1,37 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-native-web-vite';
2
- import {
3
- Settings,
4
- Plus,
5
- User,
6
- PenEdit,
7
- Cart,
8
- Apps,
9
- Chart1,
10
- Bolt,
11
- ChevronRight,
12
- } from '../../Symbols';
13
- import { Spot } from '../Spot/Spot';
2
+ import { useState } from 'react';
3
+ import { Settings, ChevronRight, Wallet } from '../../Symbols';
4
+ import { Switch } from '../Switch/Switch';
14
5
  import { Tag } from '../Tag/Tag';
15
- import { Box, Text } from '../Utility';
16
- import { ListItem } from './ListItem';
17
-
18
- const Balance = ({ disabled }: { disabled?: boolean }) => {
19
- return (
20
- <Box lx={{ alignItems: 'flex-end' }}>
21
- <Text
22
- typography='body2SemiBold'
23
- lx={{ color: disabled ? 'disabled' : 'base' }}
24
- >
25
- 42.00
26
- </Text>
27
- <Text typography='body3' lx={{ color: disabled ? 'disabled' : 'muted' }}>
28
- USD
29
- </Text>
30
- </Box>
31
- );
32
- };
6
+ import { Box } from '../Utility';
7
+ import {
8
+ ListItem,
9
+ ListItemLeading,
10
+ ListItemContent,
11
+ ListItemTitle,
12
+ ListItemDescription,
13
+ ListItemTrailing,
14
+ ListItemSpot,
15
+ ListItemIcon,
16
+ ListItemTruncate,
17
+ } from './ListItem';
33
18
 
34
19
  const meta: Meta<typeof ListItem> = {
35
20
  component: ListItem,
36
21
  title: 'Containment/ListItem',
22
+ subcomponents: {
23
+ ListItemLeading,
24
+ ListItemContent,
25
+ ListItemTitle,
26
+ ListItemDescription,
27
+ ListItemTrailing,
28
+ ListItemSpot,
29
+ ListItemIcon,
30
+ ListItemTruncate,
31
+ },
37
32
  parameters: {
33
+ layout: 'padded',
34
+ backgrounds: { default: 'light' },
38
35
  docs: {
39
36
  source: {
40
37
  language: 'tsx',
@@ -44,43 +41,9 @@ const meta: Meta<typeof ListItem> = {
44
41
  },
45
42
  },
46
43
  argTypes: {
47
- title: {
48
- control: 'text',
49
- description: 'The main title of the list item',
50
- },
51
- description: {
52
- control: 'text',
53
- description: 'Optional description',
54
- },
55
- descriptionTag: {
56
- control: 'select',
57
- options: ['None', 'Tag'],
58
- mapping: {
59
- None: undefined,
60
- Tag: <Tag label='New' appearance='accent' icon={Bolt} size='sm' />,
61
- },
62
- if: { arg: 'description', exists: true },
63
- },
64
- leadingContent: {
65
- control: 'select',
66
- options: ['None', 'Settings', 'Plus'],
67
- mapping: {
68
- None: undefined,
69
- Settings: <Spot appearance='icon' icon={Settings} />,
70
- Plus: <Spot appearance='icon' icon={Plus} />,
71
- },
72
- description: 'Optional leading content',
73
- },
74
- trailingContent: {
75
- control: 'select',
76
- description: 'Optional trailing content to display on the right side',
77
- options: ['icon', 'value', 'tag', 'none'],
78
- mapping: {
79
- icon: <PenEdit size={24} />,
80
- value: <Balance />,
81
- tag: <Tag label='New' appearance='accent' />,
82
- none: undefined,
83
- },
44
+ disabled: {
45
+ control: 'boolean',
46
+ description: 'Whether the list item is disabled',
84
47
  },
85
48
  onPress: {
86
49
  action: 'pressed',
@@ -94,189 +57,355 @@ type Story = StoryObj<typeof ListItem>;
94
57
 
95
58
  export const Base: Story = {
96
59
  args: {
97
- title: 'Item with Icon and Description',
98
- leadingContent: <Spot appearance='icon' icon={Settings} />,
99
- description: 'Additional information',
100
60
  lx: { maxWidth: 's320' },
101
61
  },
62
+ render: (args) => (
63
+ <ListItem {...args}>
64
+ <ListItemLeading>
65
+ <ListItemSpot appearance='icon' icon={Settings} />
66
+ <ListItemContent>
67
+ <ListItemTitle>Item with Icon and Description</ListItemTitle>
68
+ <ListItemDescription>Additional information</ListItemDescription>
69
+ </ListItemContent>
70
+ </ListItemLeading>
71
+ </ListItem>
72
+ ),
102
73
  parameters: {
103
74
  docs: {
104
75
  source: {
105
76
  code: `
106
- <ListItem
107
- title="Item with Icon and Description"
108
- leadingContent={<Spot appearance="icon" icon={Settings} />}
109
- description="Additional information"
110
- />
77
+ <ListItem>
78
+ <ListItemLeading>
79
+ <ListItemSpot appearance="icon" icon={Settings} />
80
+ <ListItemContent>
81
+ <ListItemTitle>Item with Icon and Description</ListItemTitle>
82
+ <ListItemDescription>Additional information</ListItemDescription>
83
+ </ListItemContent>
84
+ </ListItemLeading>
85
+ </ListItem>
111
86
  `,
112
87
  },
113
88
  },
114
89
  },
115
90
  };
116
91
 
117
- export const WithDescriptionTag: Story = {
118
- args: {
119
- title: 'Item with Description Tag',
120
- leadingContent: <Spot appearance='icon' icon={Settings} />,
121
- description: 'Additional information',
122
- descriptionTag: (
123
- <Tag label='New' appearance='accent' icon={Bolt} size='sm' />
124
- ),
125
- },
126
- render: (args) => (
127
- <Box lx={{ maxWidth: 's320' }}>
128
- <ListItem {...args} />
129
- </Box>
130
- ),
131
- };
132
-
133
- export const TrailingContentVariantsShowcase: Story = {
92
+ export const VariantsShowcase: Story = {
134
93
  render: () => {
94
+ const [selected, setSelected] = useState(false);
95
+
135
96
  return (
136
- <Box lx={{ flexDirection: 'column', maxWidth: 's256' }}>
137
- <ListItem
138
- title='Caret Variant'
139
- description='With description'
140
- leadingContent={<Spot appearance='icon' icon={User} />}
141
- trailingContent={<ChevronRight size={24} />}
142
- />
143
- <ListItem
144
- title='Value Variant'
145
- description='With description'
146
- leadingContent={<Spot appearance='icon' icon={Cart} />}
147
- trailingContent={<Balance />}
148
- />
149
- <ListItem
150
- title='Tag Variant'
151
- description='With description'
152
- leadingContent={<Spot appearance='icon' icon={Apps} />}
153
- trailingContent={<Tag label='New' appearance='accent' />}
154
- />
155
- <ListItem
156
- title='Icon Variant'
157
- description='With description'
158
- leadingContent={<Spot appearance='icon' icon={Settings} />}
159
- trailingContent={<PenEdit size={24} />}
160
- />
161
- <ListItem
162
- title='None Variant'
163
- description='With description'
164
- leadingContent={<Spot appearance='icon' icon={Chart1} />}
165
- />
97
+ <Box lx={{ flexDirection: 'column', maxWidth: 's320', gap: 's8' }}>
98
+ <ListItem>
99
+ <ListItemLeading>
100
+ <ListItemSpot appearance='icon' icon={Settings} />
101
+ <ListItemContent>
102
+ <ListItemTitle>Simple composition</ListItemTitle>
103
+ <ListItemDescription>With description</ListItemDescription>
104
+ </ListItemContent>
105
+ </ListItemLeading>
106
+ </ListItem>
107
+
108
+ <ListItem onPress={() => setSelected(!selected)}>
109
+ <ListItemLeading>
110
+ <ListItemSpot appearance='icon' icon={Wallet} />
111
+ <ListItemContent>
112
+ <ListItemTitle>Switch Variant</ListItemTitle>
113
+ <ListItemDescription>With description</ListItemDescription>
114
+ </ListItemContent>
115
+ </ListItemLeading>
116
+ <ListItemTrailing>
117
+ <Switch checked={selected} onCheckedChange={setSelected} />
118
+ </ListItemTrailing>
119
+ </ListItem>
120
+
121
+ <ListItem>
122
+ <ListItemLeading>
123
+ <ListItemSpot appearance='icon' icon={Wallet} />
124
+ <ListItemContent>
125
+ <ListItemTitle>Content Variant</ListItemTitle>
126
+ <ListItemDescription>With description</ListItemDescription>
127
+ </ListItemContent>
128
+ </ListItemLeading>
129
+ <ListItemTrailing>
130
+ <ListItemContent>
131
+ <ListItemTitle>42.10</ListItemTitle>
132
+ <ListItemDescription>USD</ListItemDescription>
133
+ </ListItemContent>
134
+ </ListItemTrailing>
135
+ </ListItem>
136
+
137
+ <ListItem>
138
+ <ListItemLeading>
139
+ <ListItemSpot appearance='icon' icon={Wallet} />
140
+ <ListItemContent>
141
+ <ListItemTitle>Content Variant</ListItemTitle>
142
+ <ListItemDescription>Custom style</ListItemDescription>
143
+ </ListItemContent>
144
+ </ListItemLeading>
145
+ <ListItemTrailing>
146
+ <ListItemContent>
147
+ <ListItemTitle>USD</ListItemTitle>
148
+ <ListItemDescription lx={{ color: 'error' }}>
149
+ -7.53%
150
+ </ListItemDescription>
151
+ </ListItemContent>
152
+ </ListItemTrailing>
153
+ </ListItem>
154
+
155
+ <ListItem>
156
+ <ListItemLeading>
157
+ <ListItemSpot appearance='icon' icon={Wallet} />
158
+ <ListItemContent>
159
+ <ListItemTitle>Content Variant</ListItemTitle>
160
+ <ListItemDescription>Custom style</ListItemDescription>
161
+ </ListItemContent>
162
+ </ListItemLeading>
163
+ <ListItemTrailing>
164
+ <ListItemContent>
165
+ <ListItemTitle>USD</ListItemTitle>
166
+ <ListItemDescription lx={{ color: 'success' }}>
167
+ +7.53%
168
+ </ListItemDescription>
169
+ </ListItemContent>
170
+ </ListItemTrailing>
171
+ </ListItem>
172
+
173
+ <ListItem>
174
+ <ListItemLeading>
175
+ <ListItemSpot appearance='icon' icon={Settings} />
176
+ <ListItemContent>
177
+ <ListItemTitle>Tag Variant</ListItemTitle>
178
+ <ListItemDescription>Custom style</ListItemDescription>
179
+ </ListItemContent>
180
+ </ListItemLeading>
181
+ <ListItemTrailing>
182
+ <Tag size='sm' label='New' appearance='accent' />
183
+ </ListItemTrailing>
184
+ </ListItem>
185
+
186
+ <ListItem>
187
+ <ListItemLeading>
188
+ <ListItemSpot appearance='icon' icon={Settings} />
189
+ <ListItemContent>
190
+ <ListItemTitle>Icon Variant</ListItemTitle>
191
+ <ListItemDescription>With description</ListItemDescription>
192
+ </ListItemContent>
193
+ </ListItemLeading>
194
+ <ListItemTrailing>
195
+ <ListItemIcon icon={ChevronRight} />
196
+ </ListItemTrailing>
197
+ </ListItem>
198
+
199
+ <ListItem>
200
+ <ListItemLeading>
201
+ <ListItemIcon icon={Wallet} />
202
+ <ListItemContent>
203
+ <ListItemTitle>Icon without Spot</ListItemTitle>
204
+ <ListItemDescription>Using ListItemIcon</ListItemDescription>
205
+ </ListItemContent>
206
+ </ListItemLeading>
207
+ <ListItemTrailing>
208
+ <ListItemIcon icon={ChevronRight} />
209
+ </ListItemTrailing>
210
+ </ListItem>
211
+
212
+ <ListItem>
213
+ <ListItemLeading>
214
+ <ListItemSpot appearance='icon' icon={Wallet} />
215
+ <ListItemContent>
216
+ <ListItemTitle>
217
+ <ListItemTruncate variant='title'>Complex 1</ListItemTruncate>
218
+ <Tag size='sm' label='New' appearance='base' />
219
+ </ListItemTitle>
220
+ <ListItemDescription>
221
+ <ListItemTruncate>With description</ListItemTruncate>
222
+ <Tag size='sm' label='Custom Tag' appearance='gray' />
223
+ </ListItemDescription>
224
+ </ListItemContent>
225
+ </ListItemLeading>
226
+ <ListItemTrailing>
227
+ <ListItemContent>
228
+ <ListItemTitle>42.10</ListItemTitle>
229
+ <ListItemDescription>USD</ListItemDescription>
230
+ </ListItemContent>
231
+ </ListItemTrailing>
232
+ </ListItem>
233
+
234
+ <ListItem>
235
+ <ListItemLeading>
236
+ <ListItemSpot appearance='icon' icon={Wallet} />
237
+ <ListItemContent>
238
+ <ListItemTitle>Complex 2</ListItemTitle>
239
+ <ListItemDescription>With description</ListItemDescription>
240
+ </ListItemContent>
241
+ </ListItemLeading>
242
+ <ListItemTrailing>
243
+ <ListItemContent>
244
+ <ListItemTitle>
245
+ <Tag size='sm' label='New' appearance='base' />
246
+ <ListItemTruncate variant='title'>1200.12</ListItemTruncate>
247
+ </ListItemTitle>
248
+ <ListItemDescription>
249
+ <Tag size='sm' label='BTC' appearance='gray' />
250
+ </ListItemDescription>
251
+ </ListItemContent>
252
+ </ListItemTrailing>
253
+ </ListItem>
166
254
  </Box>
167
255
  );
168
256
  },
169
257
  };
170
258
 
171
- export const StateShowcase: Story = {
172
- render: () => {
173
- return (
174
- <Box lx={{ flexDirection: 'row', gap: 's32' }}>
175
- <Box lx={{ flexDirection: 'column', maxWidth: 's256' }}>
176
- <ListItem
177
- title='Caret Variant'
178
- description='With description'
179
- leadingContent={<Spot appearance='icon' icon={User} />}
180
- trailingContent={<ChevronRight size={24} lx={{ color: 'muted' }} />}
181
- />
182
- <ListItem
183
- title='Value Variant'
184
- description='With description'
185
- leadingContent={<Spot appearance='icon' icon={Cart} />}
186
- trailingContent={<Balance />}
187
- />
188
- <ListItem
189
- title='Tag Variant'
190
- description='With description'
191
- leadingContent={<Spot appearance='icon' icon={Apps} />}
192
- trailingContent={<Tag label='New' appearance='accent' />}
193
- />
194
- <ListItem
195
- title='Icon Variant'
196
- description='With description'
197
- leadingContent={<Spot appearance='icon' icon={Settings} />}
198
- trailingContent={<PenEdit size={24} />}
199
- />
200
- <ListItem
201
- title='None Variant'
202
- description='With description'
203
- leadingContent={<Spot appearance='icon' icon={Chart1} />}
204
- />
205
- </Box>
206
- <Box lx={{ flexDirection: 'column', maxWidth: 's256' }}>
207
- <ListItem
208
- title='Caret Variant'
209
- description='With description'
210
- leadingContent={<Spot appearance='icon' icon={User} disabled />}
211
- disabled
212
- trailingContent={
213
- <ChevronRight size={24} lx={{ color: 'disabled' }} />
214
- }
215
- />
216
- <ListItem
217
- title='Tag Variant'
218
- description='With description'
219
- leadingContent={<Spot appearance='icon' icon={Apps} disabled />}
220
- disabled
221
- trailingContent={<Tag label='New' appearance='accent' disabled />}
222
- />
223
- <ListItem
224
- title='Icon Variant'
225
- description='With description'
226
- leadingContent={<Spot appearance='icon' icon={Settings} disabled />}
227
- disabled
228
- trailingContent={<PenEdit size={24} lx={{ color: 'disabled' }} />}
229
- />
230
- <ListItem
231
- title='None Variant'
232
- description='With description'
233
- leadingContent={<Spot appearance='icon' icon={Chart1} disabled />}
234
- disabled
235
- />
236
- </Box>
237
- </Box>
238
- );
259
+ export const DisabledState: Story = {
260
+ args: {
261
+ disabled: true,
262
+ },
263
+ render: (args) => (
264
+ <Box lx={{ flexDirection: 'column', width: 's320' }}>
265
+ <ListItem {...args}>
266
+ <ListItemLeading>
267
+ <ListItemSpot appearance='icon' icon={Settings} />
268
+ <ListItemContent>
269
+ <ListItemTitle>Disabled Item</ListItemTitle>
270
+ <ListItemDescription>This item is disabled</ListItemDescription>
271
+ </ListItemContent>
272
+ </ListItemLeading>
273
+ <ListItemTrailing>
274
+ <Switch checked={false} disabled={args.disabled} />
275
+ </ListItemTrailing>
276
+ </ListItem>
277
+
278
+ <ListItem {...args}>
279
+ <ListItemLeading>
280
+ <ListItemSpot appearance='icon' icon={Settings} />
281
+ <ListItemContent>
282
+ <ListItemTitle>Disabled Item</ListItemTitle>
283
+ <ListItemDescription>This item is disabled</ListItemDescription>
284
+ </ListItemContent>
285
+ </ListItemLeading>
286
+ <ListItemTrailing>
287
+ <ListItemIcon icon={ChevronRight} />
288
+ </ListItemTrailing>
289
+ </ListItem>
290
+
291
+ <ListItem {...args}>
292
+ <ListItemLeading>
293
+ <ListItemSpot appearance='icon' icon={Wallet} />
294
+ <ListItemContent>
295
+ <ListItemTitle>Content Variant</ListItemTitle>
296
+ <ListItemDescription>With description</ListItemDescription>
297
+ </ListItemContent>
298
+ </ListItemLeading>
299
+ <ListItemTrailing>
300
+ <ListItemContent>
301
+ <ListItemTitle>42.10</ListItemTitle>
302
+ <ListItemDescription>USD</ListItemDescription>
303
+ </ListItemContent>
304
+ </ListItemTrailing>
305
+ </ListItem>
306
+
307
+ <ListItem {...args}>
308
+ <ListItemLeading>
309
+ <ListItemIcon icon={Wallet} />
310
+ <ListItemContent>
311
+ <ListItemTitle>Icon without Spot</ListItemTitle>
312
+ <ListItemDescription>Using ListItemIcon</ListItemDescription>
313
+ </ListItemContent>
314
+ </ListItemLeading>
315
+ </ListItem>
316
+ </Box>
317
+ ),
318
+ parameters: {
319
+ docs: {
320
+ source: {
321
+ code: `
322
+ <ListItem disabled>
323
+ <ListItemLeading>
324
+ <ListItemSpot appearance="icon" icon={Settings} />
325
+ <ListItemContent>
326
+ <ListItemTitle>Disabled Item</ListItemTitle>
327
+ <ListItemDescription>This item is disabled</ListItemDescription>
328
+ </ListItemContent>
329
+ </ListItemLeading>
330
+ <ListItemTrailing>
331
+ <ChevronRight size={24} />
332
+ </ListItemTrailing>
333
+ </ListItem>
334
+ `,
335
+ },
336
+ },
239
337
  },
240
338
  };
241
339
 
242
340
  export const ResponsiveLayout: Story = {
243
- render: () => {
244
- return (
245
- <Box
246
- lx={{
247
- width: 's320',
248
- backgroundColor: 'mutedPressed',
249
- padding: 's16',
250
- }}
251
- >
252
- <Text
253
- typography='body4SemiBold'
254
- lx={{ marginBottom: 's16', color: 'muted' }}
255
- >
256
- Container: 320px wide
257
- </Text>
258
- <Box lx={{ flexDirection: 'column', gap: 's0' }}>
259
- <ListItem
260
- title='Short Title'
261
- description='Short description'
262
- leadingContent={<Spot appearance='icon' icon={Plus} />}
263
- trailingContent={<ChevronRight size={24} lx={{ color: 'muted' }} />}
264
- />
265
- <ListItem
266
- title='Long Title that should truncate appropriately'
267
- description='Long description that should truncate appropriately'
268
- leadingContent={<Spot appearance='icon' icon={Plus} />}
269
- trailingContent={<ChevronRight size={24} lx={{ color: 'muted' }} />}
270
- />
271
- <ListItem
272
- title='Long Title that should truncate appropriately'
273
- description='Long description that should truncate appropriately'
274
- descriptionTag={<Tag label='New' appearance='accent' size='sm' />}
275
- leadingContent={<Spot appearance='icon' icon={Plus} />}
276
- trailingContent={<ChevronRight size={24} lx={{ color: 'muted' }} />}
277
- />
278
- </Box>
341
+ render: () => (
342
+ <Box
343
+ lx={{
344
+ width: 's400',
345
+ borderWidth: 's1',
346
+ borderColor: 'mutedSubtle',
347
+ padding: 's16',
348
+ }}
349
+ >
350
+ <Box lx={{ flexDirection: 'column' }}>
351
+ <ListItem>
352
+ <ListItemLeading>
353
+ <ListItemSpot appearance='icon' icon={Settings} />
354
+ <ListItemContent>
355
+ <ListItemTitle>Short Title</ListItemTitle>
356
+ <ListItemDescription>Short description</ListItemDescription>
357
+ </ListItemContent>
358
+ </ListItemLeading>
359
+ <ListItemTrailing>
360
+ <ListItemIcon icon={ChevronRight} />
361
+ </ListItemTrailing>
362
+ </ListItem>
363
+
364
+ <ListItem>
365
+ <ListItemLeading>
366
+ <ListItemSpot appearance='icon' icon={Settings} />
367
+ <ListItemContent>
368
+ <ListItemTitle>
369
+ Long Title that should truncate appropriately
370
+ </ListItemTitle>
371
+ <ListItemDescription>
372
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
373
+ Quisquam, quos.
374
+ </ListItemDescription>
375
+ </ListItemContent>
376
+ </ListItemLeading>
377
+ <ListItemTrailing>
378
+ <ListItemIcon icon={ChevronRight} />
379
+ </ListItemTrailing>
380
+ </ListItem>
381
+
382
+ <ListItem>
383
+ <ListItemLeading>
384
+ <ListItemSpot appearance='icon' icon={Wallet} />
385
+ <ListItemContent>
386
+ <ListItemTitle>
387
+ <ListItemTruncate variant='title'>
388
+ Long Title that should truncate appropriately
389
+ </ListItemTruncate>
390
+ <Tag size='sm' label='New' appearance='base' />
391
+ </ListItemTitle>
392
+ <ListItemDescription>
393
+ <ListItemTruncate>
394
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
395
+ Quisquam, quos.
396
+ </ListItemTruncate>
397
+ <Tag size='sm' label='Custom Tag' appearance='gray' />
398
+ </ListItemDescription>
399
+ </ListItemContent>
400
+ </ListItemLeading>
401
+ <ListItemTrailing>
402
+ <ListItemContent>
403
+ <ListItemTitle>42.10</ListItemTitle>
404
+ <ListItemDescription>USD</ListItemDescription>
405
+ </ListItemContent>
406
+ </ListItemTrailing>
407
+ </ListItem>
279
408
  </Box>
280
- );
281
- },
409
+ </Box>
410
+ ),
282
411
  };