@transferwise/components 46.105.4 → 46.105.5

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 (31) hide show
  1. package/build/dateInput/DateInput.js.map +1 -1
  2. package/build/dateInput/DateInput.mjs.map +1 -1
  3. package/build/main.css +23 -11
  4. package/build/styles/listItem/ListItem.css +23 -11
  5. package/build/styles/listItem/ListItem.grid.css +23 -9
  6. package/build/styles/main.css +23 -11
  7. package/build/types/dateInput/DateInput.d.ts.map +1 -1
  8. package/build/types/listItem/_stories/helpers.d.ts +1 -0
  9. package/build/types/listItem/_stories/helpers.d.ts.map +1 -1
  10. package/build/types/listItem/_stories/subcomponents.d.ts +6 -0
  11. package/build/types/listItem/_stories/subcomponents.d.ts.map +1 -1
  12. package/build/types/listItem/_stories/variants/helpers.d.ts +8 -0
  13. package/build/types/listItem/_stories/variants/helpers.d.ts.map +1 -0
  14. package/package.json +1 -1
  15. package/src/dateInput/DateInput.tsx +1 -3
  16. package/src/listItem/ListItem.css +23 -11
  17. package/src/listItem/ListItem.grid.css +23 -9
  18. package/src/listItem/ListItem.grid.less +31 -9
  19. package/src/listItem/ListItem.less +0 -2
  20. package/src/listItem/_stories/helpers.tsx +8 -0
  21. package/src/listItem/_stories/subcomponents.tsx +7 -0
  22. package/src/listItem/_stories/variants/ListItem.brightGreen.test.story.tsx +49 -0
  23. package/src/listItem/_stories/variants/ListItem.dark.test.story.tsx +43 -0
  24. package/src/listItem/_stories/variants/ListItem.forestGreen.test.story.tsx +49 -0
  25. package/src/listItem/_stories/variants/ListItem.medium.test.story.tsx +34 -0
  26. package/src/listItem/_stories/variants/ListItem.personal.test.story.tsx +130 -0
  27. package/src/listItem/_stories/variants/ListItem.rtl.test.story.tsx +43 -0
  28. package/src/listItem/_stories/variants/ListItem.small.test.story.tsx +34 -0
  29. package/src/listItem/_stories/variants/helpers.tsx +127 -0
  30. package/src/main.css +23 -11
  31. package/src/listItem/_stories/ListItem.variants.test.story.tsx +0 -274
@@ -1 +1 @@
1
- {"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../../src/dateInput/DateInput.tsx"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,QAAQ,EACR,WAAW,EAEX,SAAS,EACT,UAAU,EACV,SAAS,EAEV,MAAM,WAAW,CAAC;AAMnB,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACxD;AAED,QAAA,MAAM,SAAS,GAAI,qPAmBhB,cAAc,gCAqShB,CAAC;AA8BF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../../src/dateInput/DateInput.tsx"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,QAAQ,EACR,WAAW,EAEX,SAAS,EACT,UAAU,EACV,SAAS,EAEV,MAAM,WAAW,CAAC;AAMnB,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACxD;AAED,QAAA,MAAM,SAAS,GAAI,qPAmBhB,cAAc,gCAmShB,CAAC;AA8BF,eAAe,SAAS,CAAC"}
@@ -13,6 +13,7 @@ export declare const storySourceWithoutNoise: (config: Story) => Story;
13
13
  * by swapping the `key`. This is a workaround for the Storybook's limitation.
14
14
  */
15
15
  export declare const withoutKey: Decorator;
16
+ export declare const withSizedContainer: (width: number) => Decorator;
16
17
  /**
17
18
  * Not all stories need access to all controls as it causes unnecessary UI noise.
18
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/listItem/_stories/helpers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,KAAK,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,KAAK,KAAG,KAuBvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,SAQxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GACzB,kBAAiB,MAAM,EAAO,MAC9B,iBAAgB,MAAM,EAAO;;;;;;CAG7B,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/listItem/_stories/helpers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,KAAK,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,KAAK,KAAG,KAuBvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,SAQxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC5B,OAAO,MAAM,KAAG,SAKhB,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,eAAe,GACzB,kBAAiB,MAAM,EAAO,MAC9B,iBAAgB,MAAM,EAAO;;;;;;CAG7B,CAAC"}
@@ -1,5 +1,11 @@
1
1
  import { ReactNode } from 'react';
2
2
  export type SB_ListItem_ControlType = 'non-interactive' | 'button' | 'buttonAsLink' | 'partialButton' | 'partialButtonAsLink' | 'iconButton' | 'iconButtonAsLink' | 'iconButtonWithLabel' | 'iconButtonAsLinkWithLabel' | 'partialIconButton' | 'partialIconButtonAsLink' | 'partialIconButtonWithLabel' | 'partialIconButtonAsLinkWithLabel' | 'navigation' | 'navigationAsButton' | 'checkbox' | 'radio' | 'switch';
3
+ export declare const SB_LIST_ITEM_TEXT: {
4
+ title: string;
5
+ subtitle: string;
6
+ valueTitle: string;
7
+ valueSubtitle: string;
8
+ };
3
9
  export declare const SB_LIST_ITEM_CONTROLS: Record<SB_ListItem_ControlType, ReactNode>;
4
10
  export declare const SB_LIST_ITEM_ADDITIONAL_INFO: {
5
11
  readonly interactive: import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"subcomponents.d.ts","sourceRoot":"","sources":["../../../../src/listItem/_stories/subcomponents.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOlC,MAAM,MAAM,uBAAuB,GAC/B,iBAAiB,GACjB,QAAQ,GACR,cAAc,GACd,eAAe,GACf,qBAAqB,GACrB,YAAY,GACZ,kBAAkB,GAClB,qBAAqB,GACrB,2BAA2B,GAC3B,mBAAmB,GACnB,yBAAyB,GACzB,4BAA4B,GAC5B,kCAAkC,GAClC,YAAY,GACZ,oBAAoB,GACpB,UAAU,GACV,OAAO,GACP,QAAQ,CAAC;AAEb,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,uBAAuB,EAAE,SAAS,CA2DnE,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;CAe/B,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;CAavB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;CAoBrB,CAAC"}
1
+ {"version":3,"file":"subcomponents.d.ts","sourceRoot":"","sources":["../../../../src/listItem/_stories/subcomponents.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOlC,MAAM,MAAM,uBAAuB,GAC/B,iBAAiB,GACjB,QAAQ,GACR,cAAc,GACd,eAAe,GACf,qBAAqB,GACrB,YAAY,GACZ,kBAAkB,GAClB,qBAAqB,GACrB,2BAA2B,GAC3B,mBAAmB,GACnB,yBAAyB,GACzB,4BAA4B,GAC5B,kCAAkC,GAClC,YAAY,GACZ,oBAAoB,GACpB,UAAU,GACV,OAAO,GACP,QAAQ,CAAC;AAEb,eAAO,MAAM,iBAAiB;;;;;CAK7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,uBAAuB,EAAE,SAAS,CA2DnE,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;CAe/B,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;CAavB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;CAoBrB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { StoryObj } from '@storybook/react-webpack5';
2
+ import { StoryConfig } from '../../../test-utils';
3
+ import { type ListItemProps } from '../../ListItem';
4
+ import { SB_ListItem_ControlType as ControlType } from '../subcomponents';
5
+ type Story = StoryObj<ListItemProps>;
6
+ export declare const generateVariantsForControl: (controlType: ControlType, variant?: NonNullable<StoryConfig["variants"]>[number]) => Story;
7
+ export {};
8
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/listItem/_stories/variants/helpers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAML,uBAAuB,IAAI,WAAW,EACvC,MAAM,kBAAkB,CAAC;AAE1B,KAAK,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;AAOrC,eAAO,MAAM,0BAA0B,GACrC,aAAa,WAAW,EACxB,UAAS,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAa,KAChE,KAuGF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transferwise/components",
3
- "version": "46.105.4",
3
+ "version": "46.105.5",
4
4
  "description": "Neptune React components",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -317,9 +317,7 @@ const DateInput = ({
317
317
  onFocus={(event) =>
318
318
  shouldPropagateOnFocus(event) ? onFocus?.(event) : event.stopPropagation()
319
319
  }
320
- onBlur={(event) =>
321
- shouldPropagateOnBlur(event) ? onBlur?.(event) : event.stopPropagation()
322
- }
320
+ onBlur={(event) => (shouldPropagateOnBlur(event) ? onBlur?.(event) : event.stopPropagation())}
323
321
  >
324
322
  <div className="row">
325
323
  {(() => {
@@ -5,7 +5,15 @@
5
5
  gap: 4px 16px;
6
6
  gap: var(--size-4) var(--size-16);
7
7
  }
8
+ .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-noInfo-hasPrompt:not(:has(.wds-list-item-subtitle-value, .wds-list-item-subtitle)) .wds-list-item-prompt,
9
+ .wds-list-item-gridWrapper.wds-list-item-hasMedia-noControl.wds-list-item-noInfo-hasPrompt:not(:has(.wds-list-item-subtitle-value, .wds-list-item-subtitle)) .wds-list-item-prompt {
10
+ margin-top: -2px;
11
+ }
8
12
  @container (min-width: 375px) {
13
+ .wds-list-item-gridWrapper .wds-list-item-control-wrapper {
14
+ height: var(--wds-list-item-control-wrapper-height);
15
+ align-content: center;
16
+ }
9
17
  .wds-list-item-gridWrapper .wds-list-item-media-image {
10
18
  -o-object-position: center;
11
19
  object-position: center;
@@ -102,6 +110,9 @@
102
110
  -o-object-position: bottom left;
103
111
  object-position: bottom left;
104
112
  }
113
+ .wds-list-item-gridWrapper .wds-list-item-control-wrapper {
114
+ align-content: start;
115
+ }
105
116
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-hasInfo-hasPrompt {
106
117
  grid-template-columns: 1fr auto;
107
118
  grid-template-rows: auto auto auto auto;
@@ -222,8 +233,11 @@
222
233
  }
223
234
  }
224
235
  @container (max-width: 297px) {
236
+ .wds-list-item-gridWrapper .wds-list-item-control-wrapper {
237
+ align-content: start;
238
+ }
225
239
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-hasInfo-hasPrompt {
226
- grid-template-columns: auto 1fr;
240
+ grid-template-columns: 1fr auto;
227
241
  grid-template-rows: auto auto auto;
228
242
  grid-template-areas: "body control" "info control" "prompt prompt";
229
243
  }
@@ -233,7 +247,7 @@
233
247
  grid-template-areas: "body" "info" "prompt" "control";
234
248
  }
235
249
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-hasInfo-noPrompt {
236
- grid-template-columns: auto 1fr;
250
+ grid-template-columns: 1fr auto;
237
251
  grid-template-rows: auto auto;
238
252
  grid-template-areas: "body control" "info control";
239
253
  }
@@ -242,7 +256,7 @@
242
256
  grid-template-areas: "body" "info" "control";
243
257
  }
244
258
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-noInfo-hasPrompt {
245
- grid-template-columns: auto 1fr;
259
+ grid-template-columns: 1fr auto;
246
260
  grid-template-rows: auto auto;
247
261
  grid-template-areas: "body control" "prompt prompt";
248
262
  }
@@ -251,7 +265,7 @@
251
265
  grid-template-areas: "body" "prompt" "control";
252
266
  }
253
267
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-noInfo-noPrompt {
254
- grid-template-columns: auto 1fr;
268
+ grid-template-columns: 1fr auto;
255
269
  grid-template-rows: auto;
256
270
  grid-template-areas: "body control";
257
271
  }
@@ -260,17 +274,17 @@
260
274
  grid-template-areas: "body" "control";
261
275
  }
262
276
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-noControl.wds-list-item-hasInfo-hasPrompt {
263
- grid-template-columns: auto;
264
- grid-template-rows: auto auto;
277
+ grid-template-columns: 1fr;
278
+ grid-template-rows: auto auto auto;
265
279
  grid-template-areas: "body" "info" "prompt";
266
280
  }
267
281
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-noControl.wds-list-item-hasInfo-noPrompt {
268
- grid-template-columns: auto;
269
- grid-template-rows: auto auto auto;
282
+ grid-template-columns: 1fr;
283
+ grid-template-rows: auto auto;
270
284
  grid-template-areas: "body" "info";
271
285
  }
272
286
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-noControl.wds-list-item-noInfo-hasPrompt {
273
- grid-template-columns: auto;
287
+ grid-template-columns: 1fr;
274
288
  grid-template-rows: auto auto;
275
289
  grid-template-areas: "body" "prompt";
276
290
  }
@@ -676,8 +690,6 @@
676
690
  }
677
691
  .wds-list-item-control-wrapper {
678
692
  grid-area: control;
679
- align-content: center;
680
- height: var(--wds-list-item-control-wrapper-height);
681
693
  }
682
694
  .wds-list-item-navigation .tw-icon-chevron-right {
683
695
  color: #c9cbce;
@@ -5,7 +5,15 @@
5
5
  gap: 4px 16px;
6
6
  gap: var(--size-4) var(--size-16);
7
7
  }
8
+ .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-noInfo-hasPrompt:not(:has(.wds-list-item-subtitle-value, .wds-list-item-subtitle)) .wds-list-item-prompt,
9
+ .wds-list-item-gridWrapper.wds-list-item-hasMedia-noControl.wds-list-item-noInfo-hasPrompt:not(:has(.wds-list-item-subtitle-value, .wds-list-item-subtitle)) .wds-list-item-prompt {
10
+ margin-top: -2px;
11
+ }
8
12
  @container (min-width: 375px) {
13
+ .wds-list-item-gridWrapper .wds-list-item-control-wrapper {
14
+ height: var(--wds-list-item-control-wrapper-height);
15
+ align-content: center;
16
+ }
9
17
  .wds-list-item-gridWrapper .wds-list-item-media-image {
10
18
  -o-object-position: center;
11
19
  object-position: center;
@@ -102,6 +110,9 @@
102
110
  -o-object-position: bottom left;
103
111
  object-position: bottom left;
104
112
  }
113
+ .wds-list-item-gridWrapper .wds-list-item-control-wrapper {
114
+ align-content: start;
115
+ }
105
116
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-hasInfo-hasPrompt {
106
117
  grid-template-columns: 1fr auto;
107
118
  grid-template-rows: auto auto auto auto;
@@ -222,8 +233,11 @@
222
233
  }
223
234
  }
224
235
  @container (max-width: 297px) {
236
+ .wds-list-item-gridWrapper .wds-list-item-control-wrapper {
237
+ align-content: start;
238
+ }
225
239
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-hasInfo-hasPrompt {
226
- grid-template-columns: auto 1fr;
240
+ grid-template-columns: 1fr auto;
227
241
  grid-template-rows: auto auto auto;
228
242
  grid-template-areas: "body control" "info control" "prompt prompt";
229
243
  }
@@ -233,7 +247,7 @@
233
247
  grid-template-areas: "body" "info" "prompt" "control";
234
248
  }
235
249
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-hasInfo-noPrompt {
236
- grid-template-columns: auto 1fr;
250
+ grid-template-columns: 1fr auto;
237
251
  grid-template-rows: auto auto;
238
252
  grid-template-areas: "body control" "info control";
239
253
  }
@@ -242,7 +256,7 @@
242
256
  grid-template-areas: "body" "info" "control";
243
257
  }
244
258
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-noInfo-hasPrompt {
245
- grid-template-columns: auto 1fr;
259
+ grid-template-columns: 1fr auto;
246
260
  grid-template-rows: auto auto;
247
261
  grid-template-areas: "body control" "prompt prompt";
248
262
  }
@@ -251,7 +265,7 @@
251
265
  grid-template-areas: "body" "prompt" "control";
252
266
  }
253
267
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-hasControl.wds-list-item-noInfo-noPrompt {
254
- grid-template-columns: auto 1fr;
268
+ grid-template-columns: 1fr auto;
255
269
  grid-template-rows: auto;
256
270
  grid-template-areas: "body control";
257
271
  }
@@ -260,17 +274,17 @@
260
274
  grid-template-areas: "body" "control";
261
275
  }
262
276
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-noControl.wds-list-item-hasInfo-hasPrompt {
263
- grid-template-columns: auto;
264
- grid-template-rows: auto auto;
277
+ grid-template-columns: 1fr;
278
+ grid-template-rows: auto auto auto;
265
279
  grid-template-areas: "body" "info" "prompt";
266
280
  }
267
281
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-noControl.wds-list-item-hasInfo-noPrompt {
268
- grid-template-columns: auto;
269
- grid-template-rows: auto auto auto;
282
+ grid-template-columns: 1fr;
283
+ grid-template-rows: auto auto;
270
284
  grid-template-areas: "body" "info";
271
285
  }
272
286
  .wds-list-item-gridWrapper.wds-list-item-hasMedia-noControl.wds-list-item-noInfo-hasPrompt {
273
- grid-template-columns: auto;
287
+ grid-template-columns: 1fr;
274
288
  grid-template-rows: auto auto;
275
289
  grid-template-areas: "body" "prompt";
276
290
  }
@@ -3,7 +3,21 @@
3
3
  display: grid;
4
4
  gap: var(--size-4) var(--size-16);
5
5
 
6
+ &.wds-list-item-hasMedia-hasControl,
7
+ &.wds-list-item-hasMedia-noControl {
8
+ &.wds-list-item-noInfo-hasPrompt:not(:has(.wds-list-item-subtitle-value, .wds-list-item-subtitle)) {
9
+ .wds-list-item-prompt {
10
+ margin-top: -2px;
11
+ }
12
+ }
13
+ }
14
+
6
15
  @container (min-width: 375px) {
16
+ .wds-list-item-control-wrapper {
17
+ height: var(--wds-list-item-control-wrapper-height);
18
+ align-content: center;
19
+ }
20
+
7
21
  .wds-list-item-media-image{
8
22
  object-position: center;
9
23
  }
@@ -158,6 +172,10 @@
158
172
  object-position: bottom left;
159
173
  }
160
174
 
175
+ .wds-list-item-control-wrapper {
176
+ align-content: start;
177
+ }
178
+
161
179
  &.wds-list-item-hasMedia-hasControl {
162
180
  &.wds-list-item-hasInfo-hasPrompt {
163
181
  grid-template-columns: 1fr auto;
@@ -381,9 +399,12 @@
381
399
  }
382
400
 
383
401
  @container (max-width: 297px) {
402
+ .wds-list-item-control-wrapper {
403
+ align-content: start;
404
+ }
384
405
  &.wds-list-item-hasMedia-hasControl {
385
406
  &.wds-list-item-hasInfo-hasPrompt {
386
- grid-template-columns: auto 1fr;
407
+ grid-template-columns: 1fr auto;
387
408
  grid-template-rows: auto auto auto;
388
409
  grid-template-areas:
389
410
  "body control"
@@ -402,7 +423,7 @@
402
423
  }
403
424
 
404
425
  &.wds-list-item-hasInfo-noPrompt {
405
- grid-template-columns: auto 1fr;
426
+ grid-template-columns: 1fr auto;
406
427
  grid-template-rows: auto auto;
407
428
  grid-template-areas:
408
429
  "body control"
@@ -418,7 +439,7 @@
418
439
  }
419
440
 
420
441
  &.wds-list-item-noInfo-hasPrompt {
421
- grid-template-columns: auto 1fr;
442
+ grid-template-columns: 1fr auto;
422
443
  grid-template-rows: auto auto;
423
444
  grid-template-areas:
424
445
  "body control"
@@ -434,7 +455,7 @@
434
455
  }
435
456
 
436
457
  &.wds-list-item-noInfo-noPrompt {
437
- grid-template-columns: auto 1fr;
458
+ grid-template-columns: 1fr auto;
438
459
  grid-template-rows: auto;
439
460
  grid-template-areas:
440
461
  "body control";
@@ -450,8 +471,8 @@
450
471
 
451
472
  &.wds-list-item-hasMedia-noControl {
452
473
  &.wds-list-item-hasInfo-hasPrompt {
453
- grid-template-columns: auto;
454
- grid-template-rows: auto auto;
474
+ grid-template-columns: 1fr;
475
+ grid-template-rows: auto auto auto;
455
476
  grid-template-areas:
456
477
  "body"
457
478
  "info"
@@ -459,15 +480,15 @@
459
480
  }
460
481
 
461
482
  &.wds-list-item-hasInfo-noPrompt {
462
- grid-template-columns: auto;
463
- grid-template-rows: auto auto auto;
483
+ grid-template-columns: 1fr;
484
+ grid-template-rows: auto auto;
464
485
  grid-template-areas:
465
486
  "body"
466
487
  "info"
467
488
  }
468
489
 
469
490
  &.wds-list-item-noInfo-hasPrompt {
470
- grid-template-columns: auto;
491
+ grid-template-columns: 1fr;
471
492
  grid-template-rows: auto auto;
472
493
  grid-template-areas:
473
494
  "body"
@@ -495,6 +516,7 @@
495
516
  "info control"
496
517
  "prompt prompt";
497
518
 
519
+
498
520
  &:has(.wds-list-item-button-control) {
499
521
  grid-template-columns: 1fr;
500
522
  grid-template-rows: auto;
@@ -198,8 +198,6 @@
198
198
 
199
199
  &-control-wrapper {
200
200
  grid-area: control;
201
- align-content: center;
202
- height: var(--wds-list-item-control-wrapper-height);
203
201
  }
204
202
 
205
203
  &-navigation {
@@ -48,6 +48,14 @@ export const withoutKey: Decorator = (Story, { args }) => {
48
48
  return <Story key={key} />;
49
49
  };
50
50
 
51
+ export const withSizedContainer =
52
+ (width: number): Decorator =>
53
+ (Story, { args }) => (
54
+ <div style={{ width, border: '1px dashed #ccc', padding: '8px' }}>
55
+ <Story />
56
+ </div>
57
+ );
58
+
51
59
  /**
52
60
  * Not all stories need access to all controls as it causes unnecessary UI noise.
53
61
  */
@@ -25,6 +25,13 @@ export type SB_ListItem_ControlType =
25
25
  | 'radio'
26
26
  | 'switch';
27
27
 
28
+ export const SB_LIST_ITEM_TEXT = {
29
+ title: 'This is a title',
30
+ subtitle: 'And it also has a subtitle',
31
+ valueTitle: '100 GBP',
32
+ valueSubtitle: '200 USD',
33
+ };
34
+
28
35
  export const SB_LIST_ITEM_CONTROLS: Record<SB_ListItem_ControlType, ReactNode> = {
29
36
  'non-interactive': null,
30
37
  button: <ListItem.Button onClick={() => {}}>Click me</ListItem.Button>,
@@ -0,0 +1,49 @@
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/theme: bright-green',
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', 'bright-green');
17
+ export const ButtonAsLink = generateVariantsForControl('buttonAsLink', 'bright-green');
18
+ export const ButtonPartiallyInteractive = generateVariantsForControl(
19
+ 'partialButton',
20
+ 'bright-green',
21
+ );
22
+ export const ButtonAsLinkPartiallyInteractive = generateVariantsForControl(
23
+ 'partialButtonAsLink',
24
+ 'bright-green',
25
+ );
26
+ export const IconButton = generateVariantsForControl('iconButton', 'bright-green');
27
+ export const IconButtonAsLink = generateVariantsForControl('iconButtonAsLink', 'bright-green');
28
+ export const IconButtonWithLabel = generateVariantsForControl(
29
+ 'iconButtonWithLabel',
30
+ 'bright-green',
31
+ );
32
+ export const IconButtonAsLinkWithLabel = generateVariantsForControl(
33
+ 'iconButtonAsLinkWithLabel',
34
+ 'bright-green',
35
+ );
36
+ export const IconButtonPartiallyInteractive = generateVariantsForControl(
37
+ 'partialIconButton',
38
+ 'bright-green',
39
+ );
40
+ export const IconButtonAsLinkPartiallyInteractive = generateVariantsForControl(
41
+ 'partialIconButtonAsLink',
42
+ 'bright-green',
43
+ );
44
+ export const Navigation = generateVariantsForControl('navigation', 'bright-green');
45
+ export const NavigationAsButton = generateVariantsForControl('navigationAsButton', 'bright-green');
46
+ export const Checkbox = generateVariantsForControl('checkbox', 'bright-green');
47
+ export const Radio = generateVariantsForControl('radio', 'bright-green');
48
+ export const Switch = generateVariantsForControl('switch', 'bright-green');
49
+ export const NonInteractive = generateVariantsForControl('non-interactive', 'bright-green');
@@ -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/theme: dark',
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', 'dark');
17
+ export const ButtonAsLink = generateVariantsForControl('buttonAsLink', 'dark');
18
+ export const ButtonPartiallyInteractive = generateVariantsForControl('partialButton', 'dark');
19
+ export const ButtonAsLinkPartiallyInteractive = generateVariantsForControl(
20
+ 'partialButtonAsLink',
21
+ 'dark',
22
+ );
23
+ export const IconButton = generateVariantsForControl('iconButton', 'dark');
24
+ export const IconButtonAsLink = generateVariantsForControl('iconButtonAsLink', 'dark');
25
+ export const IconButtonWithLabel = generateVariantsForControl('iconButtonWithLabel', 'dark');
26
+ export const IconButtonAsLinkWithLabel = generateVariantsForControl(
27
+ 'iconButtonAsLinkWithLabel',
28
+ 'dark',
29
+ );
30
+ export const IconButtonPartiallyInteractive = generateVariantsForControl(
31
+ 'partialIconButton',
32
+ 'dark',
33
+ );
34
+ export const IconButtonAsLinkPartiallyInteractive = generateVariantsForControl(
35
+ 'partialIconButtonAsLink',
36
+ 'dark',
37
+ );
38
+ export const Navigation = generateVariantsForControl('navigation', 'dark');
39
+ export const NavigationAsButton = generateVariantsForControl('navigationAsButton', 'dark');
40
+ export const Checkbox = generateVariantsForControl('checkbox', 'dark');
41
+ export const Radio = generateVariantsForControl('radio', 'dark');
42
+ export const Switch = generateVariantsForControl('switch', 'dark');
43
+ export const NonInteractive = generateVariantsForControl('non-interactive', 'dark');
@@ -0,0 +1,49 @@
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/theme: forest-green',
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', 'forest-green');
17
+ export const ButtonAsLink = generateVariantsForControl('buttonAsLink', 'forest-green');
18
+ export const ButtonPartiallyInteractive = generateVariantsForControl(
19
+ 'partialButton',
20
+ 'forest-green',
21
+ );
22
+ export const ButtonAsLinkPartiallyInteractive = generateVariantsForControl(
23
+ 'partialButtonAsLink',
24
+ 'forest-green',
25
+ );
26
+ export const IconButton = generateVariantsForControl('iconButton', 'forest-green');
27
+ export const IconButtonAsLink = generateVariantsForControl('iconButtonAsLink', 'forest-green');
28
+ export const IconButtonWithLabel = generateVariantsForControl(
29
+ 'iconButtonWithLabel',
30
+ 'forest-green',
31
+ );
32
+ export const IconButtonAsLinkWithLabel = generateVariantsForControl(
33
+ 'iconButtonAsLinkWithLabel',
34
+ 'forest-green',
35
+ );
36
+ export const IconButtonPartiallyInteractive = generateVariantsForControl(
37
+ 'partialIconButton',
38
+ 'forest-green',
39
+ );
40
+ export const IconButtonAsLinkPartiallyInteractive = generateVariantsForControl(
41
+ 'partialIconButtonAsLink',
42
+ 'forest-green',
43
+ );
44
+ export const Navigation = generateVariantsForControl('navigation', 'forest-green');
45
+ export const NavigationAsButton = generateVariantsForControl('navigationAsButton', 'forest-green');
46
+ export const Checkbox = generateVariantsForControl('checkbox', 'forest-green');
47
+ export const Radio = generateVariantsForControl('radio', 'forest-green');
48
+ export const Switch = generateVariantsForControl('switch', 'forest-green');
49
+ export const NonInteractive = generateVariantsForControl('non-interactive', 'forest-green');
@@ -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: medium',
9
+ tags: ['!autodocs'],
10
+ parameters: {
11
+ controls: { disable: true },
12
+ actions: { disable: true },
13
+ knobs: { disable: true },
14
+ },
15
+ decorators: [withSizedContainer(350)],
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');