@transferwise/components 0.0.0-experimental-11565f2 → 0.0.0-experimental-4add690

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 (39) hide show
  1. package/build/dateInput/DateInput.js.map +1 -1
  2. package/build/dateInput/DateInput.mjs.map +1 -1
  3. package/build/listItem/ListItem.js +2 -5
  4. package/build/listItem/ListItem.js.map +1 -1
  5. package/build/listItem/ListItem.mjs +2 -5
  6. package/build/listItem/ListItem.mjs.map +1 -1
  7. package/build/main.css +1 -11
  8. package/build/styles/listItem/ListItem.css +1 -11
  9. package/build/styles/main.css +1 -11
  10. package/build/types/dateInput/DateInput.d.ts.map +1 -1
  11. package/build/types/listItem/ListItem.d.ts.map +1 -1
  12. package/build/types/listItem/_stories/helpers.d.ts +1 -0
  13. package/build/types/listItem/_stories/helpers.d.ts.map +1 -1
  14. package/build/types/listItem/_stories/subcomponents.d.ts +6 -0
  15. package/build/types/listItem/_stories/subcomponents.d.ts.map +1 -1
  16. package/build/types/listItem/_stories/variants/helpers.d.ts +8 -0
  17. package/build/types/listItem/_stories/variants/helpers.d.ts.map +1 -0
  18. package/package.json +3 -3
  19. package/src/dateInput/DateInput.tsx +1 -3
  20. package/src/listItem/ListItem.css +1 -11
  21. package/src/listItem/ListItem.grid.less +4 -6
  22. package/src/listItem/ListItem.less +2 -13
  23. package/src/listItem/ListItem.spec.tsx +1 -4
  24. package/src/listItem/ListItem.tsx +2 -7
  25. package/src/listItem/_stories/helpers.tsx +8 -0
  26. package/src/listItem/_stories/subcomponents.tsx +7 -0
  27. package/src/listItem/_stories/variants/ListItem.brightGreen.test.story.tsx +49 -0
  28. package/src/listItem/_stories/variants/ListItem.dark.test.story.tsx +43 -0
  29. package/src/listItem/_stories/variants/ListItem.forestGreen.test.story.tsx +49 -0
  30. package/src/listItem/_stories/variants/ListItem.medium.test.story.tsx +34 -0
  31. package/src/listItem/_stories/variants/ListItem.personal.test.story.tsx +130 -0
  32. package/src/listItem/_stories/variants/ListItem.rtl.test.story.tsx +43 -0
  33. package/src/listItem/_stories/variants/ListItem.small.test.story.tsx +34 -0
  34. package/src/listItem/_stories/variants/helpers.tsx +127 -0
  35. package/src/main.css +1 -11
  36. package/build/styles/listItem/ListItem.vars.css +0 -0
  37. package/src/listItem/ListItem.vars.css +0 -0
  38. package/src/listItem/ListItem.vars.less +0 -8
  39. package/src/listItem/_stories/ListItem.variants.test.story.tsx +0 -425
@@ -0,0 +1,130 @@
1
+ import { Meta, StoryObj } from '@storybook/react-webpack5';
2
+ import List from '../../../list';
3
+ import { ListItem, type ListItemProps } from '../../ListItem';
4
+ import {
5
+ SB_LIST_ITEM_ADDITIONAL_INFO as INFO,
6
+ SB_LIST_ITEM_CONTROLS as CONTROLS,
7
+ SB_LIST_ITEM_PROMPTS as PROMPT,
8
+ } from '../subcomponents';
9
+ import { generateVariantsForControl } from './helpers';
10
+
11
+ export default {
12
+ component: ListItem,
13
+ title: 'Content/ListItem/tests/variants/theme: personal',
14
+ tags: ['!autodocs'],
15
+ parameters: {
16
+ controls: { disable: true },
17
+ actions: { disable: true },
18
+ knobs: { disable: true },
19
+ },
20
+ } satisfies Meta<ListItemProps>;
21
+
22
+ type Story = StoryObj<ListItemProps>;
23
+
24
+ export const Button = generateVariantsForControl('button');
25
+ export const ButtonAsLink = generateVariantsForControl('buttonAsLink');
26
+ export const ButtonPartiallyInteractive = generateVariantsForControl('partialButton');
27
+ export const ButtonAsLinkPartiallyInteractive = generateVariantsForControl('partialButtonAsLink');
28
+ export const IconButton = generateVariantsForControl('iconButton');
29
+ export const IconButtonAsLink = generateVariantsForControl('iconButtonAsLink');
30
+ export const IconButtonWithLabel = generateVariantsForControl('iconButtonWithLabel');
31
+ export const IconButtonAsLinkWithLabel = generateVariantsForControl('iconButtonAsLinkWithLabel');
32
+ export const IconButtonPartiallyInteractive = generateVariantsForControl('partialIconButton');
33
+ export const IconButtonAsLinkPartiallyInteractive =
34
+ generateVariantsForControl('partialIconButtonAsLink');
35
+ export const Navigation = generateVariantsForControl('navigation');
36
+ export const NavigationAsButton = generateVariantsForControl('navigationAsButton');
37
+ export const Checkbox = generateVariantsForControl('checkbox');
38
+ export const Radio = generateVariantsForControl('radio');
39
+ export const Switch = generateVariantsForControl('switch');
40
+ export const NonInteractive = generateVariantsForControl('non-interactive');
41
+
42
+ export const ButtonControlLabel: Story = {
43
+ render: () => (
44
+ <List>
45
+ <ListItem
46
+ title="Fully interactive button."
47
+ subtitle="It uses default content hierarchy."
48
+ valueTitle="100 GBP"
49
+ valueSubtitle="200 USD"
50
+ additionalInfo={INFO.nonInteractive}
51
+ control={CONTROLS.button}
52
+ prompt={PROMPT.nonInteractive}
53
+ />
54
+
55
+ <ListItem
56
+ inverted
57
+ title="Fully interactive button."
58
+ subtitle="It uses inverted content hierarchy."
59
+ valueTitle="100 GBP"
60
+ valueSubtitle="200 USD"
61
+ additionalInfo={INFO.nonInteractive}
62
+ control={CONTROLS.button}
63
+ prompt={PROMPT.nonInteractive}
64
+ />
65
+
66
+ <ListItem
67
+ title="Fully interactive button as HTML anchor."
68
+ subtitle="It uses default content hierarchy."
69
+ valueTitle="100 GBP"
70
+ valueSubtitle="200 USD"
71
+ additionalInfo={INFO.nonInteractive}
72
+ control={CONTROLS.buttonAsLink}
73
+ prompt={PROMPT.nonInteractive}
74
+ />
75
+
76
+ <ListItem
77
+ inverted
78
+ title="Fully interactive button as HTML anchor."
79
+ subtitle="It uses inverted content hierarchy."
80
+ valueTitle="100 GBP"
81
+ valueSubtitle="200 USD"
82
+ additionalInfo={INFO.nonInteractive}
83
+ control={CONTROLS.buttonAsLink}
84
+ prompt={PROMPT.nonInteractive}
85
+ />
86
+
87
+ <ListItem
88
+ title="Partially interactive button."
89
+ subtitle="It uses default content hierarchy."
90
+ valueTitle="100 GBP"
91
+ valueSubtitle="200 USD"
92
+ additionalInfo={INFO.nonInteractive}
93
+ control={CONTROLS.partialButton}
94
+ prompt={PROMPT.nonInteractive}
95
+ />
96
+
97
+ <ListItem
98
+ inverted
99
+ title="Partially interactive button."
100
+ subtitle="It uses inverted content hierarchy."
101
+ valueTitle="100 GBP"
102
+ valueSubtitle="200 USD"
103
+ additionalInfo={INFO.nonInteractive}
104
+ control={CONTROLS.partialButton}
105
+ prompt={PROMPT.nonInteractive}
106
+ />
107
+
108
+ <ListItem
109
+ title="Partially interactive button as HTML anchor."
110
+ subtitle="It uses default content hierarchy."
111
+ valueTitle="100 GBP"
112
+ valueSubtitle="200 USD"
113
+ additionalInfo={INFO.nonInteractive}
114
+ control={CONTROLS.partialButtonAsLink}
115
+ prompt={PROMPT.nonInteractive}
116
+ />
117
+
118
+ <ListItem
119
+ inverted
120
+ title="Partially interactive button as HTML anchor."
121
+ subtitle="It uses inverted content hierarchy."
122
+ valueTitle="100 GBP"
123
+ valueSubtitle="200 USD"
124
+ additionalInfo={INFO.nonInteractive}
125
+ control={CONTROLS.partialButtonAsLink}
126
+ prompt={PROMPT.nonInteractive}
127
+ />
128
+ </List>
129
+ ),
130
+ };
@@ -0,0 +1,43 @@
1
+ import { Meta } from '@storybook/react-webpack5';
2
+ import { ListItem, type ListItemProps } from '../../ListItem';
3
+ import { generateVariantsForControl } from './helpers';
4
+
5
+ export default {
6
+ component: ListItem,
7
+ title: 'Content/ListItem/tests/variants/rtl',
8
+ tags: ['!autodocs'],
9
+ parameters: {
10
+ controls: { disable: true },
11
+ actions: { disable: true },
12
+ knobs: { disable: true },
13
+ },
14
+ } satisfies Meta<ListItemProps>;
15
+
16
+ export const Button = generateVariantsForControl('button', 'rtl');
17
+ export const ButtonAsLink = generateVariantsForControl('buttonAsLink', 'rtl');
18
+ export const ButtonPartiallyInteractive = generateVariantsForControl('partialButton', 'rtl');
19
+ export const ButtonAsLinkPartiallyInteractive = generateVariantsForControl(
20
+ 'partialButtonAsLink',
21
+ 'rtl',
22
+ );
23
+ export const IconButton = generateVariantsForControl('iconButton', 'rtl');
24
+ export const IconButtonAsLink = generateVariantsForControl('iconButtonAsLink', 'rtl');
25
+ export const IconButtonWithLabel = generateVariantsForControl('iconButtonWithLabel', 'rtl');
26
+ export const IconButtonAsLinkWithLabel = generateVariantsForControl(
27
+ 'iconButtonAsLinkWithLabel',
28
+ 'rtl',
29
+ );
30
+ export const IconButtonPartiallyInteractive = generateVariantsForControl(
31
+ 'partialIconButton',
32
+ 'rtl',
33
+ );
34
+ export const IconButtonAsLinkPartiallyInteractive = generateVariantsForControl(
35
+ 'partialIconButtonAsLink',
36
+ 'rtl',
37
+ );
38
+ export const Navigation = generateVariantsForControl('navigation', 'rtl');
39
+ export const NavigationAsButton = generateVariantsForControl('navigationAsButton', 'rtl');
40
+ export const Checkbox = generateVariantsForControl('checkbox', 'rtl');
41
+ export const Radio = generateVariantsForControl('radio', 'rtl');
42
+ export const Switch = generateVariantsForControl('switch', 'rtl');
43
+ export const NonInteractive = generateVariantsForControl('non-interactive', 'rtl');
@@ -0,0 +1,34 @@
1
+ import { Meta } from '@storybook/react-webpack5';
2
+ import { ListItem, type ListItemProps } from '../../ListItem';
3
+ import { generateVariantsForControl } from './helpers';
4
+ import { withSizedContainer } from '../helpers';
5
+
6
+ export default {
7
+ component: ListItem,
8
+ title: 'Content/ListItem/tests/variants/cq: small',
9
+ tags: ['!autodocs'],
10
+ parameters: {
11
+ controls: { disable: true },
12
+ actions: { disable: true },
13
+ knobs: { disable: true },
14
+ },
15
+ decorators: [withSizedContainer(275)],
16
+ } satisfies Meta<ListItemProps>;
17
+
18
+ export const Button = generateVariantsForControl('button');
19
+ export const ButtonAsLink = generateVariantsForControl('buttonAsLink');
20
+ export const ButtonPartiallyInteractive = generateVariantsForControl('partialButton');
21
+ export const ButtonAsLinkPartiallyInteractive = generateVariantsForControl('partialButtonAsLink');
22
+ export const IconButton = generateVariantsForControl('iconButton');
23
+ export const IconButtonAsLink = generateVariantsForControl('iconButtonAsLink');
24
+ export const IconButtonWithLabel = generateVariantsForControl('iconButtonWithLabel');
25
+ export const IconButtonAsLinkWithLabel = generateVariantsForControl('iconButtonAsLinkWithLabel');
26
+ export const IconButtonPartiallyInteractive = generateVariantsForControl('partialIconButton');
27
+ export const IconButtonAsLinkPartiallyInteractive =
28
+ generateVariantsForControl('partialIconButtonAsLink');
29
+ export const Navigation = generateVariantsForControl('navigation');
30
+ export const NavigationAsButton = generateVariantsForControl('navigationAsButton');
31
+ export const Checkbox = generateVariantsForControl('checkbox');
32
+ export const Radio = generateVariantsForControl('radio');
33
+ export const Switch = generateVariantsForControl('switch');
34
+ export const NonInteractive = generateVariantsForControl('non-interactive');
@@ -0,0 +1,127 @@
1
+ import { StoryObj } from '@storybook/react-webpack5';
2
+ import { StoryConfig, storyConfig } from '../../../test-utils';
3
+ import List from '../../../list';
4
+ import { ListItem, type ListItemProps } from '../../ListItem';
5
+ import {
6
+ SB_LIST_ITEM_ADDITIONAL_INFO as INFO,
7
+ SB_LIST_ITEM_CONTROLS as CONTROLS,
8
+ SB_LIST_ITEM_MEDIA as MEDIA,
9
+ SB_LIST_ITEM_PROMPTS as PROMPT,
10
+ SB_LIST_ITEM_TEXT as TEXT,
11
+ SB_ListItem_ControlType as ControlType,
12
+ } from '../subcomponents';
13
+
14
+ type Story = StoryObj<ListItemProps>;
15
+ type VariantPartial = { title: string } & Partial<ListItemProps>;
16
+
17
+ const { title, subtitle, valueTitle, valueSubtitle } = TEXT;
18
+ const prompt = PROMPT.nonInteractive;
19
+ const media = MEDIA.avatarSingle;
20
+
21
+ export const generateVariantsForControl = (
22
+ controlType: ControlType,
23
+ variant: NonNullable<StoryConfig['variants']>[number] = 'default',
24
+ ): Story => {
25
+ const control = CONTROLS[controlType];
26
+ const isInteractive = [
27
+ 'partialButton',
28
+ 'partialButtonAsLink',
29
+ 'partialIconButton',
30
+ 'partialIconButtonAsLink',
31
+ ].includes(controlType);
32
+ const additionalInfo = isInteractive ? INFO.interactive : INFO.nonInteractive;
33
+ const instances = [
34
+ { title },
35
+ { title, valueTitle },
36
+ { title, subtitle },
37
+ { title, additionalInfo },
38
+ { title, valueTitle, valueSubtitle },
39
+ { title, subtitle, inverted: true },
40
+ { title, subtitle, valueTitle },
41
+ { title, subtitle, valueTitle, inverted: true },
42
+ { title, subtitle, valueTitle, valueSubtitle },
43
+ { title, subtitle, valueTitle, valueSubtitle, inverted: true },
44
+ { media, title },
45
+ { media, title, valueTitle },
46
+ { media, title, subtitle },
47
+ { media, title, valueTitle, valueSubtitle },
48
+ { media, title, valueTitle },
49
+ { media, title, valueSubtitle },
50
+ { media, title, subtitle },
51
+ { media, title, additionalInfo },
52
+ { media, title, subtitle, valueTitle },
53
+ { media, title, subtitle, valueTitle, valueSubtitle },
54
+ { media, title, subtitle, additionalInfo: INFO.nonInteractive },
55
+ isInteractive ? { media, title, subtitle, additionalInfo: INFO.interactive } : null,
56
+ { media, title, subtitle, additionalInfo, valueTitle },
57
+ { media, title, subtitle, additionalInfo, valueTitle, valueSubtitle },
58
+ { media, title, subtitle, additionalInfo, valueTitle, valueSubtitle, prompt },
59
+ {
60
+ media,
61
+ title,
62
+ subtitle,
63
+ additionalInfo,
64
+ valueTitle,
65
+ valueSubtitle,
66
+ prompt: PROMPT.interactive,
67
+ },
68
+ {
69
+ media,
70
+ title,
71
+ subtitle,
72
+ additionalInfo,
73
+ valueTitle,
74
+ valueSubtitle,
75
+ prompt: PROMPT.interactive,
76
+ inverted: true,
77
+ },
78
+ {
79
+ media,
80
+ title,
81
+ subtitle,
82
+ additionalInfo,
83
+ valueTitle,
84
+ valueSubtitle,
85
+ prompt: PROMPT.interactive,
86
+ spotlight: 'active',
87
+ },
88
+ {
89
+ media,
90
+ title,
91
+ subtitle,
92
+ additionalInfo,
93
+ valueTitle,
94
+ valueSubtitle,
95
+ prompt: PROMPT.interactive,
96
+ spotlight: 'inactive',
97
+ },
98
+ {
99
+ media,
100
+ title,
101
+ subtitle,
102
+ additionalInfo,
103
+ valueTitle,
104
+ valueSubtitle,
105
+ prompt: PROMPT.interactive,
106
+ spotlight: 'inactive',
107
+ disabled: true,
108
+ },
109
+ ].filter(Boolean) as VariantPartial[];
110
+
111
+ return storyConfig(
112
+ {
113
+ render: () => (
114
+ <List>
115
+ {instances.map((instance, instanceIndex) => (
116
+ <ListItem
117
+ key={`${variant}-${controlType}-${instanceIndex}`}
118
+ control={control}
119
+ {...instance}
120
+ />
121
+ ))}
122
+ </List>
123
+ ),
124
+ },
125
+ { variants: [variant] },
126
+ );
127
+ };
package/src/main.css CHANGED
@@ -3298,7 +3298,7 @@ html:not([dir="rtl"]) .np-flow-navigation--sm .np-flow-navigation__stepper {
3298
3298
  }
3299
3299
  .wds-list-item-body {
3300
3300
  grid-area: body;
3301
- align-items: start;
3301
+ align-items: center;
3302
3302
  width: 100%;
3303
3303
  display: grid;
3304
3304
  grid-template-columns: 1fr max-content;
@@ -3309,13 +3309,6 @@ html:not([dir="rtl"]) .np-flow-navigation--sm .np-flow-navigation__stepper {
3309
3309
  gap: var(--size-16);
3310
3310
  word-break: break-word;
3311
3311
  }
3312
- @container (min-width: 375px) {
3313
- .wds-list-item-titles,
3314
- .wds-list-item-value {
3315
- min-height: 100%;
3316
- min-height: var(--wds-list-item-value-min-height, 100%);
3317
- }
3318
- }
3319
3312
  .wds-list-item-title,
3320
3313
  .wds-list-item-title-value {
3321
3314
  color: #37517e;
@@ -3323,9 +3316,6 @@ html:not([dir="rtl"]) .np-flow-navigation--sm .np-flow-navigation__stepper {
3323
3316
  }
3324
3317
  .wds-list-item-value {
3325
3318
  text-align: right;
3326
- display: flex;
3327
- flex-direction: column;
3328
- justify-content: center;
3329
3319
  }
3330
3320
  .wds-list-item-body-center {
3331
3321
  display: flex;
File without changes
File without changes
@@ -1,8 +0,0 @@
1
- // List item has 3 unique layouts managed through container queries:
2
- // * width <= cq-min
3
- // * cq-min < width <= cq-max
4
- // * width > cq-max
5
- //
6
- // @see https://storybook.wise.design/?path=/story/content-listitem--responsiveness
7
- @wds-list-item-cq-min: 297px;
8
- @wds-list-item-cq-max: 375px;