@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
@@ -654,7 +654,7 @@
654
654
  }
655
655
  .wds-list-item-body {
656
656
  grid-area: body;
657
- align-items: start;
657
+ align-items: center;
658
658
  width: 100%;
659
659
  display: grid;
660
660
  grid-template-columns: 1fr max-content;
@@ -665,13 +665,6 @@
665
665
  gap: var(--size-16);
666
666
  word-break: break-word;
667
667
  }
668
- @container (min-width: 375px) {
669
- .wds-list-item-titles,
670
- .wds-list-item-value {
671
- min-height: 100%;
672
- min-height: var(--wds-list-item-value-min-height, 100%);
673
- }
674
- }
675
668
  .wds-list-item-title,
676
669
  .wds-list-item-title-value {
677
670
  color: #37517e;
@@ -679,9 +672,6 @@
679
672
  }
680
673
  .wds-list-item-value {
681
674
  text-align: right;
682
- display: flex;
683
- flex-direction: column;
684
- justify-content: center;
685
675
  }
686
676
  .wds-list-item-body-center {
687
677
  display: flex;
@@ -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;
@@ -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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../src/listItem/ListItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,EAAc,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAY,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAc,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAU,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAS,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAU,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAY5D,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,YAAY,GACZ,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,aAAa,CAAC;AAElB,MAAM,MAAM,oBAAoB,GAC5B,uBAAuB,GACvB,qBAAqB,GACrB,mBAAmB,GACnB,uBAAuB,GACvB,kBAAkB,GAClB,mBAAmB,CAAC;AAExB,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAClC,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ;mLAgBlB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuOf,CAAC;AAiGF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../src/listItem/ListItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,EAAc,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAY,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAc,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAU,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAS,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAU,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAY5D,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,YAAY,GACZ,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,aAAa,CAAC;AAElB,MAAM,MAAM,oBAAoB,GAC5B,uBAAuB,GACvB,qBAAqB,GACrB,mBAAmB,GACnB,uBAAuB,GACvB,kBAAkB,GAClB,mBAAmB,CAAC;AAExB,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAClC,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ;mLAgBlB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkOf,CAAC;AAiGF,eAAe,QAAQ,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": "0.0.0-experimental-11565f2",
3
+ "version": "0.0.0-experimental-4add690",
4
4
  "description": "Neptune React components",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -83,10 +83,10 @@
83
83
  "storybook": "^9.1.3",
84
84
  "storybook-addon-tag-badges": "^2.0.2",
85
85
  "storybook-addon-test-codegen": "^2.0.1",
86
+ "@transferwise/neptune-css": "14.24.5",
86
87
  "@transferwise/less-config": "3.1.2",
87
88
  "@wise/components-theming": "1.6.4",
88
- "@wise/wds-configs": "0.0.0",
89
- "@transferwise/neptune-css": "14.24.5"
89
+ "@wise/wds-configs": "0.0.0"
90
90
  },
91
91
  "peerDependencies": {
92
92
  "@transferwise/icons": "^3.22.4",
@@ -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
  {(() => {
@@ -654,7 +654,7 @@
654
654
  }
655
655
  .wds-list-item-body {
656
656
  grid-area: body;
657
- align-items: start;
657
+ align-items: center;
658
658
  width: 100%;
659
659
  display: grid;
660
660
  grid-template-columns: 1fr max-content;
@@ -665,13 +665,6 @@
665
665
  gap: var(--size-16);
666
666
  word-break: break-word;
667
667
  }
668
- @container (min-width: 375px) {
669
- .wds-list-item-titles,
670
- .wds-list-item-value {
671
- min-height: 100%;
672
- min-height: var(--wds-list-item-value-min-height, 100%);
673
- }
674
- }
675
668
  .wds-list-item-title,
676
669
  .wds-list-item-title-value {
677
670
  color: #37517e;
@@ -679,9 +672,6 @@
679
672
  }
680
673
  .wds-list-item-value {
681
674
  text-align: right;
682
- display: flex;
683
- flex-direction: column;
684
- justify-content: center;
685
675
  }
686
676
  .wds-list-item-body-center {
687
677
  display: flex;
@@ -1,5 +1,3 @@
1
- @import (reference) "./ListItem.vars.less";
2
-
3
1
  .wds-list-item {
4
2
  &-gridWrapper {
5
3
  display: grid;
@@ -12,9 +10,9 @@
12
10
  margin-top: -2px;
13
11
  }
14
12
  }
15
- }
13
+ }
16
14
 
17
- @container (min-width: @wds-list-item-cq-max) {
15
+ @container (min-width: 375px) {
18
16
  .wds-list-item-control-wrapper {
19
17
  height: var(--wds-list-item-control-wrapper-height);
20
18
  align-content: center;
@@ -169,7 +167,7 @@
169
167
  }
170
168
  }
171
169
 
172
- @container (min-width: @wds-list-item-cq-min) and (max-width: @wds-list-item-cq-max) {
170
+ @container (min-width: 297px) and (max-width: 375px) {
173
171
  .wds-list-item-media-image{
174
172
  object-position: bottom left;
175
173
  }
@@ -400,7 +398,7 @@
400
398
  }
401
399
  }
402
400
 
403
- @container (max-width: @wds-list-item-cq-min) {
401
+ @container (max-width: 297px) {
404
402
  .wds-list-item-control-wrapper {
405
403
  align-content: start;
406
404
  }
@@ -1,7 +1,6 @@
1
1
  @import "./ListItem.grid.less";
2
2
  @import "./Prompt/ListItemPrompt.less";
3
3
  @import (reference) "../../node_modules/@transferwise/neptune-css/src/less/ring.less";
4
- @import (reference) "./ListItem.vars.less";
5
4
 
6
5
  .wds-list-item {
7
6
  list-style: none;
@@ -165,7 +164,7 @@
165
164
 
166
165
  &-body {
167
166
  grid-area: body;
168
- align-items: start;
167
+ align-items: center;
169
168
  width: 100%;
170
169
  display: grid;
171
170
  grid-template-columns: var(--wds-list-item-body-left, 1fr) var(--wds-list-item-body-right, max-content);
@@ -173,22 +172,12 @@
173
172
  word-break: break-word;
174
173
  }
175
174
 
176
- &-titles,
177
- &-value{
178
- @container (min-width: @wds-list-item-cq-max) {
179
- min-height: var(--wds-list-item-value-min-height, 100%);
180
- }
181
- }
182
-
183
175
  &-title, &-title-value {
184
176
  color: var(--color-content-primary);
185
177
  }
186
178
 
187
179
  &-value {
188
180
  text-align: right;
189
- display: flex;
190
- flex-direction: column;
191
- justify-content: center;
192
181
  }
193
182
 
194
183
  &-body-center {
@@ -263,7 +252,7 @@
263
252
  }
264
253
  }
265
254
 
266
-
255
+
267
256
  }
268
257
 
269
258
  .wds-list-item-spotlight__border{
@@ -1484,7 +1484,6 @@ describe('ListItem', () => {
1484
1484
  const listItem = screen.getByRole('listitem');
1485
1485
  expect(listItem).toHaveClass('wds-list-item-interactive');
1486
1486
  expect(listItem).toHaveClass('wds-list-item-spotlight-active');
1487
- expect(listItem.querySelector('.wds-list-item-spotlight__border')).not.toBeInTheDocument();
1488
1487
  });
1489
1488
 
1490
1489
  it('only fully interactive variant can have spotlight:inactive', () => {
@@ -1498,17 +1497,15 @@ describe('ListItem', () => {
1498
1497
  const listItem = screen.getByRole('listitem');
1499
1498
  expect(listItem).toHaveClass('wds-list-item-interactive');
1500
1499
  expect(listItem).toHaveClass('wds-list-item-spotlight-inactive');
1501
- expect(listItem.querySelector('.wds-list-item-spotlight__border')).toBeInTheDocument();
1502
1500
  });
1503
1501
 
1504
- it('non interactive variant cannot have spotlight', () => {
1502
+ it('non interactive variant can have spotlight', () => {
1505
1503
  render(<ListItem title="Test Title" spotlight="inactive" />);
1506
1504
  const listItem = screen.getByRole('listitem');
1507
1505
  expect(listItem).toHaveClass('wds-list-item-non-interactive');
1508
1506
  expect(listItem).not.toHaveClass('wds-list-item-interactive');
1509
1507
  expect(listItem).not.toHaveClass('wds-list-item-spotlight-inactive');
1510
1508
  expect(listItem).not.toHaveClass('wds-list-item-spotlight-active');
1511
- expect(listItem.querySelector('.wds-list-item-spotlight__border')).not.toBeInTheDocument();
1512
1509
  });
1513
1510
  });
1514
1511
  });
@@ -229,13 +229,8 @@ export const ListItem = ({
229
229
  )}
230
230
  id={id}
231
231
  aria-disabled={disabled}
232
- style={
233
- {
234
- '--wds-list-item-value-min-height': mediaSize ? `${mediaSize}px` : undefined,
235
- } as React.CSSProperties
236
- }
237
232
  >
238
- {isFullyInteractive && spotlight === 'inactive' && (
233
+ {spotlight === 'inactive' && (
239
234
  <svg aria-hidden="true" className="wds-list-item-spotlight__border">
240
235
  <rect />
241
236
  </svg>
@@ -262,7 +257,7 @@ export const ListItem = ({
262
257
  >
263
258
  {/* Title + Subtitle + Values - Group */}
264
259
  <span
265
- className={clsx('wds-list-item-titles', {
260
+ className={clsx({
266
261
  'wds-list-item-body-center': title && !subtitle,
267
262
  })}
268
263
  >
@@ -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');