@transferwise/components 45.15.1 → 45.17.0

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 (44) hide show
  1. package/build/index.esm.js +172 -114
  2. package/build/index.esm.js.map +1 -1
  3. package/build/index.js +172 -114
  4. package/build/index.js.map +1 -1
  5. package/build/main.css +1 -1
  6. package/build/styles/inputs/SelectInput.css +1 -1
  7. package/build/styles/main.css +1 -1
  8. package/build/styles/popover/Popover.css +1 -1
  9. package/build/styles/promoCard/PromoCard.css +1 -1
  10. package/build/types/alert/Alert.d.ts.map +1 -1
  11. package/build/types/common/card/Card.d.ts.map +1 -1
  12. package/build/types/common/card/index.d.ts +1 -0
  13. package/build/types/common/card/index.d.ts.map +1 -1
  14. package/build/types/inputs/_BottomSheet.d.ts.map +1 -1
  15. package/build/types/inputs/_Popover.d.ts.map +1 -1
  16. package/build/types/promoCard/PromoCard.d.ts +9 -3
  17. package/build/types/promoCard/PromoCard.d.ts.map +1 -1
  18. package/build/types/promoCard/PromoCardIndicator.d.ts +5 -3
  19. package/build/types/promoCard/PromoCardIndicator.d.ts.map +1 -1
  20. package/package.json +3 -3
  21. package/src/alert/Alert.js +11 -9
  22. package/src/alert/Alert.spec.js +22 -13
  23. package/src/alert/withArrow/withArrow.spec.js +4 -4
  24. package/src/common/card/Card.tsx +6 -2
  25. package/src/common/card/index.ts +1 -0
  26. package/src/dateLookup/tableLink/TableLink.js +1 -0
  27. package/src/dateLookup/tableLink/TableLink.spec.js +6 -0
  28. package/src/inputs/SelectInput.css +1 -1
  29. package/src/inputs/SelectInput.less +3 -0
  30. package/src/inputs/SelectInput.story.tsx +22 -0
  31. package/src/inputs/_BottomSheet.less +1 -1
  32. package/src/inputs/_BottomSheet.tsx +57 -52
  33. package/src/inputs/_Popover.less +1 -1
  34. package/src/inputs/_Popover.tsx +31 -24
  35. package/src/listItem/ListItem.story.tsx +1 -1
  36. package/src/main.css +1 -1
  37. package/src/main.less +0 -3
  38. package/src/popover/Popover.css +1 -1
  39. package/src/promoCard/PromoCard.css +1 -1
  40. package/src/promoCard/PromoCard.less +9 -9
  41. package/src/promoCard/PromoCard.spec.tsx +1 -0
  42. package/src/promoCard/PromoCard.story.tsx +90 -30
  43. package/src/promoCard/PromoCard.tsx +69 -22
  44. package/src/promoCard/PromoCardIndicator.tsx +20 -8
@@ -1 +1 @@
1
- .np-theme-personal .np-popover__container{border-radius:16px;border-radius:var(--radius-medium)}.np-popover__container .np-popover__content{color:#5d7079;color:var(--color-content-secondary);font-size:.875rem;font-size:var(--font-size-14)}.np-popover__container .np-popover__content p:last-child{margin-bottom:0}.np-popover__container.np-panel .np-popover__content{max-width:276px;padding:16px 24px;padding:var(--size-16) var(--size-24)}.np-theme-personal .np-popover__container.np-panel .np-popover__content{padding:24px;padding:var(--size-24)}.np-popover__container.np-bottom-sheet .np-popover__title{color:#37517e;color:var(--color-content-primary);font-size:1.625rem;font-size:var(--font-size-26);font-weight:600;font-weight:var(--font-weight-semi-bold);letter-spacing:0;letter-spacing:-.02em;line-height:1.2;line-height:var(--line-height-title);line-height:122%;margin:0}.np-popover__container.np-bottom-sheet .np-popover__title+p{margin-top:8px;margin-top:var(--size-8)}.np-popover__container.np-bottom-sheet .np-popover__content{padding:32px 24px;padding:var(--size-32) var(--size-24)}
1
+ .np-theme-personal .np-popover__container{border-radius:16px;border-radius:var(--radius-medium)}.np-popover__container .np-popover__content{color:#5d7079;color:var(--color-content-secondary);font-size:.875rem;font-size:var(--font-size-14)}.np-popover__container .np-popover__content p:last-child{margin-bottom:0}.np-popover__container.np-panel .np-popover__content{max-width:276px;padding:16px 24px;padding:var(--size-16) var(--size-24)}.np-theme-personal .np-popover__container.np-panel .np-popover__content{padding:24px;padding:var(--size-24)}.np-popover__container.np-bottom-sheet .np-popover__title{color:#37517e;color:var(--color-content-primary);font-size:1.625rem;font-size:var(--font-size-26);font-weight:600;font-weight:var(--font-weight-semi-bold);letter-spacing:0;letter-spacing:-.02em;line-height:1.2;line-height:var(--line-height-title);line-height:122%;margin:0}.np-popover__container.np-bottom-sheet .np-popover__title+ol:not(.list-unstyled),.np-popover__container.np-bottom-sheet .np-popover__title+p,.np-popover__container.np-bottom-sheet .np-popover__title+ul:not(.list-unstyled){margin-top:8px;margin-top:var(--size-8)}.np-popover__container.np-bottom-sheet .np-popover__content{padding:32px 24px;padding:var(--size-32) var(--size-24)}
@@ -1 +1 @@
1
- .np-Card{--Card-image-scale:1;--Card-image-translate:0;--Card-indicator-text-background-color:var(--color-background-neutral);--Card-indicator-icon-background-color:var(--color-interactive-accent);--Card-indicator-icon-color:var(--color-interactive-control);--Card-check-background-color:var(--color-interactive-primary);--Card-check-color:var(--color-interactive-control)}.np-Card--promoCard{--Card-max-width:358px}.np-Card--promoCard.is-disabled{filter:grayscale(1);opacity:.45}.np-Card-image{height:auto;left:-24px;left:calc(var(--size-24)*-1);margin:0 auto;position:relative;transform:scale(var(--Card-image-scale)) translateY(var(--Card-image-translate));transition:transform .5s ease-in-out;width:100%;width:calc(100% + 48px);width:calc(100% + var(--size-48))}[dir=rtl] .np-Card-image{left:auto;right:-24px;right:calc(var(--size-24)*-1)}.np-Card-indicator{bottom:8px;bottom:var(--size-8);display:flex;gap:4px;gap:var(--size-4);position:absolute;right:8px;right:var(--size-8)}[dir=rtl] .np-Card-indicator{left:8px;left:var(--size-8);right:auto}.np-Card-indicatorText{background:var(--Card-indicator-text-background-color);border-radius:100px;display:inline-block;padding:16px;padding:var(--size-16);text-align:left;vertical-align:middle}.np-Card-indicatorIcon{align-items:center;background:var(--Card-indicator-icon-background-color);border-radius:9999px;border-radius:var(--radius-full);color:var(--Card-indicator-icon-color);display:inline-block;display:flex;height:56px;height:var(--size-56);justify-content:center;width:56px;width:var(--size-56)}[dir=rtl] .np-Card-indicatorIcon{transform:scaleX(-1)}.np-Card--checked,.np-Card--link{box-shadow:none;color:currentColor;cursor:pointer;transform:scale(1);transition:box-shadow .2s ease-in-out,transform .5s ease-in-out}.np-theme-personal:not(.np-theme-personal--dark,.np-theme-personal--bright-green,.np-theme-personal--forest-green) .np-Card--checked,.np-theme-personal:not(.np-theme-personal--dark,.np-theme-personal--bright-green,.np-theme-personal--forest-green) .np-Card--link{--Card-box-shadow:0px 20px var(--size-40) 0px var(--color-background-neutral);--Card-check-color:var(--color-interactive-accent)}.np-Card--checked.is-disabled,.np-Card--link.is-disabled{cursor:not-allowed}@media (prefers-reduced-motion:reduce){.np-Card--checked,.np-Card--link{transition:none}}.np-Card--checked:hover:not(.is-disabled,:disabled,.is-checked,:focus-within),.np-Card--link:hover:not(.is-disabled,:disabled,.is-checked,:focus-within){--Card-image-scale:1.1;box-shadow:var(--Card-box-shadow)}.np-Card--checked:active:not(.is-disabled,:disabled,.is-checked),.np-Card--link:active:not(.is-disabled,:disabled,.is-checked){--Card-background-color:var(--color-background-neutral-active);--Card-image-scale:1.1;--Card-image-translate:var(--size-8);box-shadow:var(--Card-box-shadow);transform:scale(98%)}.np-theme-personal--bright-green .np-Card--checked:active:not(.is-disabled,:disabled,.is-checked),.np-theme-personal--bright-green .np-Card--link:active:not(.is-disabled,:disabled,.is-checked){--Card-background-color:var(--color-background-neutral)}.np-Card--checked:focus-visible:not(.is-disabled,:disabled),.np-Card--checked:has(:focus-visible):not(.np-Card--checked),.np-Card--link:focus-visible:not(.is-disabled,:disabled),.np-Card--link:has(:focus-visible):not(.np-Card--checked){--Card-image-scale:1.1;box-shadow:var(--Card-box-shadow);outline:var(--ring-outline-color) solid 4px;outline:var(--ring-outline-color) solid var(--size-4);outline-offset:4px;outline-offset:var(--size-4)}.np-Card--link .np-Card-titleLink{color:#37517e;color:var(--color-content-primary);text-decoration:none}.np-Card--link .np-Card-titleLink:focus-visible{outline:none}.np-Card--link .np-Card-titleLink:after{content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:10}.np-Card--checked.is-checked{box-shadow:0 0 0 4px var(--color-interactive-primary);box-shadow:0 0 0 var(--size-4) var(--color-interactive-primary)}.np-Card--checked.is-checked .np-Card-check{align-items:center;background:var(--Card-check-background-color);border-radius:9999px;border-radius:var(--radius-full);color:var(--Card-check-color);display:flex;height:40px;height:var(--size-40);justify-content:center;position:absolute;right:8px;right:var(--size-8);top:8px;top:var(--size-8);width:40px;width:var(--size-40)}[dir=rtl] .np-Card--checked.is-checked .np-Card-check{left:8px;left:var(--size-8);right:auto}.np-Card--checked.is-checked:focus-visible:not(.is-disabled,:disabled){box-shadow:none}.np-CardGroup{display:flex;flex-direction:column;gap:24px;gap:var(--size-24);width:100%}@media (min-width:768px){.np-CardGroup{flex-direction:row}}.np-CardGroup .np-Card.np-Card--promoCard{max-width:100%}
1
+ .np-Card{--Card-image-scale:1;--Card-image-translate:0;--Card-indicator-text-background-color:var(--color-background-neutral);--Card-indicator-icon-background-color:var(--color-interactive-accent);--Card-indicator-icon-color:var(--color-interactive-control);--Card-check-background-color:var(--color-interactive-primary);--Card-check-color:var(--color-interactive-control)}.np-Card--promoCard{--Card-max-width:358px}.np-Card--promoCard.is-disabled{filter:grayscale(1);opacity:.45}.np-Card-image{height:auto;left:-24px;left:calc(var(--size-24)*-1);margin:0 auto;position:relative;transform:scale(var(--Card-image-scale)) translateY(var(--Card-image-translate));transition:transform .5s ease-in-out;width:100%;width:calc(100% + 48px);width:calc(100% + var(--size-48))}[dir=rtl] .np-Card-image{left:auto;right:-24px;right:calc(var(--size-24)*-1)}.np-Card-description{color:#5d7079;color:var(--color-content-secondary)}.np-Card-indicator{bottom:8px;bottom:var(--size-8);display:flex;gap:4px;gap:var(--size-4);position:absolute;right:8px;right:var(--size-8)}[dir=rtl] .np-Card-indicator{left:8px;left:var(--size-8);right:auto}.np-Card-indicatorText{background:var(--Card-indicator-text-background-color);border-radius:100px;display:inline-block;padding:16px;padding:var(--size-16);text-align:left;vertical-align:middle}.np-Card-indicatorIcon .tw-icon{color:var(--Card-indicator-icon-color)}[dir=rtl] .np-Card-indicatorIcon .tw-icon{transform:scaleX(-1)}.np-Card--checked,.np-Card--link{box-shadow:none;color:currentColor;cursor:pointer;transform:scale(1);transition:box-shadow .2s ease-in-out,transform .5s ease-in-out}.np-theme-personal:not(.np-theme-personal--dark,.np-theme-personal--bright-green,.np-theme-personal--forest-green) .np-Card--checked,.np-theme-personal:not(.np-theme-personal--dark,.np-theme-personal--bright-green,.np-theme-personal--forest-green) .np-Card--link{--Card-box-shadow:0px 20px var(--size-40) 0px var(--color-background-neutral);--Card-check-color:var(--color-interactive-accent)}.np-Card--checked.is-disabled,.np-Card--link.is-disabled{cursor:not-allowed}@media (prefers-reduced-motion:reduce){.np-Card--checked,.np-Card--link{transition:none}}.np-Card--checked:hover:not(.is-disabled,:disabled,.is-checked,:focus-within),.np-Card--link:hover:not(.is-disabled,:disabled,.is-checked,:focus-within){--Card-image-scale:1.1;box-shadow:var(--Card-box-shadow)}.np-Card--checked:active:not(.is-disabled,:disabled,.is-checked),.np-Card--link:active:not(.is-disabled,:disabled,.is-checked){--Card-background-color:var(--color-background-neutral-active);--Card-image-scale:1.1;--Card-image-translate:var(--size-8);box-shadow:var(--Card-box-shadow);transform:scale(98%)}.np-theme-personal--bright-green .np-Card--checked:active:not(.is-disabled,:disabled,.is-checked),.np-theme-personal--bright-green .np-Card--link:active:not(.is-disabled,:disabled,.is-checked){--Card-background-color:var(--color-background-neutral)}.np-Card--checked:focus-visible:not(.is-disabled,:disabled),.np-Card--checked:has(:focus-visible):not(.np-Card--checked),.np-Card--link:focus-visible:not(.is-disabled,:disabled),.np-Card--link:has(:focus-visible):not(.np-Card--checked){--Card-image-scale:1.1;box-shadow:var(--Card-box-shadow);outline:var(--ring-outline-color) solid 4px;outline:var(--ring-outline-color) solid var(--size-4);outline-offset:4px;outline-offset:var(--size-4)}.np-Card--checked:has(.np-Card-closeButton:focus-visible),.np-Card--link:has(.np-Card-closeButton:focus-visible){outline:none}.np-Card--link .np-Card-titleLink{color:#37517e;color:var(--color-content-primary);text-decoration:none}.np-Card--link .np-Card-titleLink:focus-visible{outline:none}.np-Card--link .np-Card-titleLink:after{content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:10}.np-Card--checked.is-checked{box-shadow:0 0 0 4px var(--color-interactive-primary);box-shadow:0 0 0 var(--size-4) var(--color-interactive-primary)}.np-Card--checked.is-checked .np-Card-check{align-items:center;background:var(--Card-check-background-color);border-radius:9999px;border-radius:var(--radius-full);color:var(--Card-check-color);display:flex;height:40px;height:var(--size-40);justify-content:center;position:absolute;right:8px;right:var(--size-8);top:8px;top:var(--size-8);width:40px;width:var(--size-40)}[dir=rtl] .np-Card--checked.is-checked .np-Card-check{left:8px;left:var(--size-8);right:auto}.np-Card--checked.is-checked:focus-visible:not(.is-disabled,:disabled){box-shadow:none}.np-CardGroup{display:flex;flex-direction:column;gap:24px;gap:var(--size-24);width:100%}@media (min-width:768px){.np-CardGroup{flex-direction:row}}.np-CardGroup .np-Card.np-Card--promoCard{max-width:100%}
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../src/alert/Alert.js"],"names":[],"mappings":";AA8BA,gEAyFC"}
1
+ {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../src/alert/Alert.js"],"names":[],"mappings":";AA8BA,gEA2FC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../src/common/card/Card.tsx"],"names":[],"mappings":"AACA,OAAO,EAAc,SAAS,EAAU,MAAM,OAAO,CAAC;AAItD,MAAM,WAAW,SAAS;IACxB,sCAAsC;IACtC,QAAQ,EAAE,SAAS,CAAC;IAEpB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,kDAAkD;IAClD,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,mDAAmD;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAuC7B,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../src/common/card/Card.tsx"],"names":[],"mappings":"AACA,OAAO,EAAc,SAAS,EAAU,MAAM,OAAO,CAAC;AAKtD,MAAM,WAAW,SAAS;IACxB,sCAAsC;IACtC,QAAQ,EAAE,SAAS,CAAC;IAEpB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,kDAAkD;IAClD,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,mDAAmD;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA0C7B,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { default } from './Card';
2
+ export * from './Card';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/common/card/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/common/card/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,cAAc,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"_BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/inputs/_BottomSheet.tsx"],"names":[],"mappings":";AAgBA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE;QACrB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,mBAAmB,EAAE,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK;YACvE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;KACH,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,aAAa,EACb,KAAK,EACL,eAAe,EACf,OAAc,EACd,QAAQ,EACR,OAAO,GACR,EAAE,gBAAgB,+BAwFlB"}
1
+ {"version":3,"file":"_BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/inputs/_BottomSheet.tsx"],"names":[],"mappings":";AAiBA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE;QACrB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,mBAAmB,EAAE,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK;YACvE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;KACH,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,aAAa,EACb,KAAK,EACL,eAAe,EACf,OAAc,EACd,QAAQ,EACR,OAAO,GACR,EAAE,gBAAgB,+BA4FlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"_Popover.d.ts","sourceRoot":"","sources":["../../../src/inputs/_Popover.tsx"],"names":[],"mappings":";AAAA,OAAO,EAOL,KAAK,IAAI,EAMV,MAAM,oBAAoB,CAAC;AAO5B,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,CAAC,IAAI,EAAE;QACpB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,mBAAmB,EAAE,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK;YACvE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;KACH,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,IAAI,EACJ,aAAa,EACb,KAAK,EACL,OAAc,EACd,QAAQ,EACR,OAAO,GACR,EAAE,YAAY,+BAwEd"}
1
+ {"version":3,"file":"_Popover.d.ts","sourceRoot":"","sources":["../../../src/inputs/_Popover.tsx"],"names":[],"mappings":";AAAA,OAAO,EAOL,KAAK,IAAI,EAMV,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,CAAC,IAAI,EAAE;QACpB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,mBAAmB,EAAE,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK;YACvE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;KACH,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,IAAI,EACJ,aAAa,EACb,KAAK,EACL,OAAc,EACd,QAAQ,EACR,OAAO,GACR,EAAE,YAAY,+BA8Ed"}
@@ -1,4 +1,6 @@
1
1
  import React from 'react';
2
+ import { CardProps } from '../common/card';
3
+ import { PromoCardIndicatorProps } from './PromoCardIndicator';
2
4
  export type ReferenceType = React.Ref<HTMLInputElement>;
3
5
  export type LinkTarget = '_blank' | '_parent' | '_self' | '_top';
4
6
  export type RelatedTypes = '' | 'alternate' | 'author' | 'bookmark' | 'external' | 'help' | 'license' | 'next' | 'nofollow' | 'noreferrer' | 'noopener' | 'prev' | 'search' | 'tag';
@@ -17,12 +19,14 @@ export interface PromoCardCommonProps {
17
19
  headingLevel?: 'h3' | 'h4' | 'h5' | 'h6';
18
20
  /** Optional prop to specify text for the indicator label of the PromoCard */
19
21
  indicatorLabel?: string;
22
+ /** Optional prop to specify the icon for the indicator icon of the PromoCard */
23
+ indicatorIcon?: PromoCardIndicatorProps['icon'];
20
24
  /** Optional prop to specify an image alt text */
21
25
  imageAlt?: string;
22
26
  /** Optional prop to specify an image class */
23
27
  imageClass?: string;
24
28
  /** Optional prop to specify an image source url */
25
- imageSource: string;
29
+ imageSource?: string;
26
30
  /** Specify whether the PromoCard is disabled, or not */
27
31
  isDisabled?: boolean;
28
32
  /** Specify an onClick event handler */
@@ -31,8 +35,10 @@ export interface PromoCardCommonProps {
31
35
  testId?: string;
32
36
  /** Required prop to specify the title text of the PromoCard */
33
37
  title: string;
38
+ /** Set to false to use body font style for the title */
39
+ useDisplayFont?: boolean;
34
40
  }
35
- export interface PromoCardLinkProps extends PromoCardCommonProps {
41
+ export interface PromoCardLinkProps extends PromoCardCommonProps, Omit<CardProps, 'children'> {
36
42
  /**
37
43
  * Optional prop to prompts a user to save the linked URL instead of
38
44
  * navigating to it
@@ -57,7 +63,7 @@ export interface PromoCardLinkProps extends PromoCardCommonProps {
57
63
  reference?: never;
58
64
  value?: never;
59
65
  }
60
- export interface PromoCardCheckedProps extends PromoCardCommonProps {
66
+ export interface PromoCardCheckedProps extends PromoCardCommonProps, Omit<CardProps, 'children'> {
61
67
  /** Specify the initial checked attribute of the PromoCard */
62
68
  defaultChecked?: boolean;
63
69
  /** Specify whether the PromoCard is checked, or not */
@@ -1 +1 @@
1
- {"version":3,"file":"PromoCard.d.ts","sourceRoot":"","sources":["../../../src/promoCard/PromoCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAW3F,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AACjE,MAAM,MAAM,YAAY,GACpB,EAAE,GACF,WAAW,GACX,QAAQ,GACR,UAAU,GACV,UAAU,GACV,MAAM,GACN,SAAS,GACT,MAAM,GACN,UAAU,GACV,YAAY,GACZ,UAAU,GACV,MAAM,GACN,QAAQ,GACR,KAAK,CAAC;AAEV,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uDAAuD;IACvD,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAEzC,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IAEpB,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,GAAG,CAAC,EAAE,YAAY,CAAC;IAEnB,iEAAiE;IACjE,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB,iDAAiD;IACjD,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,uDAAuD;IACvD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,iDAAiD;IACjD,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,gEAAgE;IAChE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAE5B,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,qBAAqB,CAAC;AAExE,MAAM,MAAM,oBAAoB,GAAG,CACjC,KAAK,EAAE,kBAAkB,GAAG,qBAAqB,KAC9C,GAAG,CAAC,OAAO,CAAC;;AA0MjB,wBAAqC"}
1
+ {"version":3,"file":"PromoCard.d.ts","sourceRoot":"","sources":["../../../src/promoCard/PromoCard.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
- import { ReactNode } from 'react';
1
+ import { ReactElement, ReactNode } from 'react';
2
2
  export type PromoCardIndicatorProps = {
3
3
  /** Optional class name(s) to add to the indicator container. */
4
4
  className?: string;
5
5
  /** Optional label to display next to the indicator. */
6
6
  label?: string;
7
7
  /** Optional icon to display in the indicator. */
8
- icon?: 'check' | 'arrow' | 'download';
8
+ icon?: 'check' | 'arrow' | 'download' | ReactElement;
9
+ /** Optional prop to specify whether the indicator is sized small or not. */
10
+ isSmall?: boolean;
9
11
  /** Optional ID to add to the indicator container for testing purposes. */
10
12
  testid?: string;
11
13
  /** Optional children to display inside the indicator. */
@@ -20,7 +22,7 @@ export type PromoCardIndicatorProps = {
20
22
  *
21
23
  * @param {string} className - Optional class name(s) to add to the indicator container.
22
24
  * @param {string} label - Optional label to display next to the indicator.
23
- * @param {string} icon - Optional icon to display in the indicator.
25
+ * @param {string | ReactElement} icon - Optional icon to display in the indicator.
24
26
  * @param {string} testid - Optional ID to add to the indicator container for testing purposes.
25
27
  * @param {ReactNode} children - Optional children to display inside the indicator.
26
28
  * @returns {JSX.Element} - The PromoCardIndicator component.
@@ -1 +1 @@
1
- {"version":3,"file":"PromoCardIndicator.d.ts","sourceRoot":"","sources":["../../../src/promoCard/PromoCardIndicator.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKlC,MAAM,MAAM,uBAAuB,GAAG;IACpC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IAEtC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA+BzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"PromoCardIndicator.d.ts","sourceRoot":"","sources":["../../../src/promoCard/PromoCardIndicator.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMhD,MAAM,MAAM,uBAAuB,GAAG;IACpC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;IAErD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAuCzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transferwise/components",
3
- "version": "45.15.1",
3
+ "version": "45.17.0",
4
4
  "description": "Neptune React components",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -78,12 +78,12 @@
78
78
  "rollup": "^3.28.1",
79
79
  "storybook": "^7.4.5",
80
80
  "@transferwise/less-config": "3.0.6",
81
- "@transferwise/neptune-css": "14.6.0",
81
+ "@transferwise/neptune-css": "14.6.1",
82
82
  "@wise/components-theming": "0.8.4"
83
83
  },
84
84
  "peerDependencies": {
85
85
  "@transferwise/icons": "^3.7.0",
86
- "@transferwise/neptune-css": "^14.5.2",
86
+ "@transferwise/neptune-css": "^14.6.1",
87
87
  "@wise/art": "^2.7.0",
88
88
  "@wise/components-theming": "^0.8.4",
89
89
  "currency-flags": "^4.0.2",
@@ -79,8 +79,8 @@ const Alert = (props) => {
79
79
  };
80
80
  return (
81
81
  <div
82
- role="alert"
83
82
  className={classNames('alert d-flex', `alert-${mappedType}`, className)}
83
+ data-testid="alert"
84
84
  onTouchStart={handleTouchStart}
85
85
  onTouchEnd={handleTouchEnd}
86
86
  onTouchMove={handleTouchMove}
@@ -91,14 +91,16 @@ const Alert = (props) => {
91
91
  >
92
92
  {generateIcon()}
93
93
  <div className="alert__message">
94
- {title && (
95
- <Title className="m-b-1" type={Typography.TITLE_BODY}>
96
- {title}
97
- </Title>
98
- )}
99
- <Body as="span" className="d-block" type={Typography.BODY_LARGE}>
100
- {children || <InlineMarkdown>{message}</InlineMarkdown>}
101
- </Body>
94
+ <div role={Sentiment.NEGATIVE === mappedType ? 'alert' : 'status'}>
95
+ {title && (
96
+ <Title className="m-b-1" type={Typography.TITLE_BODY}>
97
+ {title}
98
+ </Title>
99
+ )}
100
+ <Body as="span" className="d-block" type={Typography.BODY_LARGE}>
101
+ {children || <InlineMarkdown>{message}</InlineMarkdown>}
102
+ </Body>
103
+ </div>
102
104
  {action && (
103
105
  <Link
104
106
  href={action.href}
@@ -61,7 +61,7 @@ describe('Alert', () => {
61
61
  <Alert message={message} />
62
62
  </ThemeProvider>,
63
63
  ));
64
- component = screen.getByRole('alert');
64
+ component = screen.getByTestId('alert');
65
65
  });
66
66
 
67
67
  it('the message is rendered', () => {
@@ -85,7 +85,7 @@ describe('Alert', () => {
85
85
  describe('deprecated props', () => {
86
86
  it('renders arrows but logs a warning', () => {
87
87
  render(<Alert arrow={AlertArrowPosition.BOTTOM} message={message} />);
88
- component = screen.getByRole('alert');
88
+ component = screen.getByTestId('alert');
89
89
 
90
90
  expect(component).toHaveClass('arrow');
91
91
  expect(component).toHaveClass('arrow-bottom');
@@ -125,7 +125,7 @@ describe('Alert', () => {
125
125
  it('maps type SUCCESS to type POSITIVE and logs a warning', () => {
126
126
  render(<Alert type={Sentiment.SUCCESS} message={message} />);
127
127
 
128
- const success = screen.getByRole('alert');
128
+ const success = screen.getByTestId('alert');
129
129
 
130
130
  expect(success).toHaveClass(classForType(Sentiment.POSITIVE));
131
131
  expect(screen.getByTestId('check-circle-icon')).toBeInTheDocument();
@@ -137,7 +137,7 @@ describe('Alert', () => {
137
137
  it('maps type INFO to type NEUTRAL and logs a warning', () => {
138
138
  render(<Alert type={Sentiment.INFO} message={message} />);
139
139
 
140
- const info = screen.getByRole('alert');
140
+ const info = screen.getByTestId('alert');
141
141
 
142
142
  expect(info).toHaveClass(classForType(Sentiment.NEUTRAL));
143
143
  expect(screen.getByTestId('info-circle-icon')).toBeInTheDocument();
@@ -150,7 +150,7 @@ describe('Alert', () => {
150
150
  it('maps type ERROR to type NEGATIVE and logs a warning', () => {
151
151
  render(<Alert type={Sentiment.ERROR} message={message} />);
152
152
 
153
- const error = screen.getByRole('alert');
153
+ const error = screen.getByTestId('alert');
154
154
 
155
155
  expect(error).toHaveClass(classForType(Sentiment.NEGATIVE));
156
156
  expect(screen.getByTestId('cross-circle-icon')).toBeInTheDocument();
@@ -197,14 +197,14 @@ describe('Alert', () => {
197
197
  it('converts message to markdown', () => {
198
198
  render(<Alert message={input} />);
199
199
 
200
- expect(screen.getByRole('alert')).toContainHTML(output);
200
+ expect(screen.getByTestId('alert')).toContainHTML(output);
201
201
  });
202
202
 
203
203
  it('does not convert children to markdown', () => {
204
204
  render(<Alert>{input}</Alert>);
205
205
 
206
206
  expect(screen.getByText(input)).toBeInTheDocument();
207
- expect(screen.getByRole('alert')).not.toContainHTML(output);
207
+ expect(screen.getByTestId('alert')).not.toContainHTML(output);
208
208
  });
209
209
  });
210
210
 
@@ -212,7 +212,7 @@ describe('Alert', () => {
212
212
  it('applies provided classes', () => {
213
213
  render(<Alert className="cats" message={message} />);
214
214
 
215
- expect(screen.getByRole('alert')).toHaveClass('cats');
215
+ expect(screen.getByTestId('alert')).toHaveClass('cats');
216
216
  });
217
217
  });
218
218
 
@@ -221,7 +221,7 @@ describe('Alert', () => {
221
221
  const icon = <HappyEmoji />;
222
222
 
223
223
  render(<Alert icon={icon} message={message} />);
224
- component = screen.getByRole('alert');
224
+ component = screen.getByTestId('alert');
225
225
  expect(screen.getByTestId('happy-emoji-icon')).toBeInTheDocument();
226
226
  });
227
227
  });
@@ -247,7 +247,7 @@ describe('Alert', () => {
247
247
  describe('types', () => {
248
248
  const getComponentWithType = (type) => {
249
249
  render(<Alert type={type} message={message} />);
250
- return screen.getByRole('alert');
250
+ return screen.getByTestId('alert');
251
251
  };
252
252
 
253
253
  it('renders neutral', () => {
@@ -277,6 +277,15 @@ describe('Alert', () => {
277
277
  expect(component).toHaveClass(classForType(Sentiment.WARNING));
278
278
  expect(screen.getByTestId('warning-icon')).toBeInTheDocument();
279
279
  });
280
+
281
+ it('renders error alerts with aria-role alert', () => {
282
+ component = getComponentWithType(Sentiment.NEGATIVE);
283
+ expect(screen.getByRole('alert')).toBeInTheDocument();
284
+ });
285
+ it('renders neutral alerts with aria-role status', () => {
286
+ component = getComponentWithType(Sentiment.NEUTRAL);
287
+ expect(screen.getByRole('status')).toBeInTheDocument();
288
+ });
280
289
  });
281
290
 
282
291
  describe('on touch devices', () => {
@@ -304,7 +313,7 @@ describe('Alert', () => {
304
313
 
305
314
  render(<Alert action={action} message={message} onDismiss={jest.fn()} />);
306
315
 
307
- alert = screen.getByRole('alert');
316
+ alert = screen.getByTestId('alert');
308
317
  closeButton = screen.getByLabelText('Close');
309
318
 
310
319
  jest.spyOn(React, 'useRef').mockReturnValue({
@@ -344,7 +353,7 @@ describe('Alert', () => {
344
353
 
345
354
  render(<Alert action={action} message={message} onDismiss={jest.fn()} />);
346
355
 
347
- alert = screen.getByRole('alert');
356
+ alert = screen.getByTestId('alert');
348
357
  closeButton = screen.getByLabelText('Close');
349
358
 
350
359
  jest.spyOn(React, 'useRef').mockReturnValue({
@@ -368,7 +377,7 @@ describe('Alert', () => {
368
377
  beforeEach(() => {
369
378
  render(<Alert message={message} onDismiss={jest.fn()} />);
370
379
 
371
- alert = screen.getByRole('alert');
380
+ alert = screen.getByTestId('alert');
372
381
  closeButton = screen.getByLabelText('Close');
373
382
 
374
383
  jest.spyOn(React, 'useRef').mockReturnValue({
@@ -12,7 +12,7 @@ describe('withArrow', () => {
12
12
  const ArrowLessAlert = withArrow(Alert);
13
13
 
14
14
  render(<ArrowLessAlert message={message} />);
15
- const component = screen.getByRole('alert');
15
+ const component = screen.getByTestId('alert');
16
16
 
17
17
  expect(component).not.toHaveClass('arrow');
18
18
  });
@@ -21,7 +21,7 @@ describe('withArrow', () => {
21
21
  const AlertTopArrow = withArrow(Alert, ArrowPosition.TOP_LEFT);
22
22
 
23
23
  render(<AlertTopArrow message={message} arrow={ArrowPosition.BOTTOM_LEFT} />);
24
- const component = screen.getByRole('alert');
24
+ const component = screen.getByTestId('alert');
25
25
  expect(component).toHaveClass('arrow');
26
26
  expect(component).not.toHaveClass('arrow-bottom');
27
27
  });
@@ -33,7 +33,7 @@ describe('withArrow', () => {
33
33
  it(`returns an bottom arrowed alert if you pass a bottom arrow`, () => {
34
34
  const BottomArrowAlert = getPointyAlert(ArrowPosition.BOTTOM);
35
35
  render(<BottomArrowAlert message={message} />);
36
- const component = screen.getByRole('alert');
36
+ const component = screen.getByTestId('alert');
37
37
 
38
38
  expect(component).toHaveClass('arrow');
39
39
  expect(component).toHaveClass('arrow-bottom');
@@ -42,7 +42,7 @@ describe('withArrow', () => {
42
42
  it(`returns an top-right arrowed alert if you pass a top right arrow`, () => {
43
43
  const BottomArrowAlert = getPointyAlert(ArrowPosition.TOP_RIGHT);
44
44
  render(<BottomArrowAlert message={message} />);
45
- const component = screen.getByRole('alert');
45
+ const component = screen.getByTestId('alert');
46
46
 
47
47
  expect(component).toHaveClass('arrow');
48
48
  expect(component).toHaveClass('arrow-right');
@@ -2,6 +2,7 @@ import classNames from 'classnames';
2
2
  import { MouseEvent, ReactNode, useRef } from 'react';
3
3
 
4
4
  import { CloseButton } from '../closeButton';
5
+ import { stopPropagation } from '../domHelpers';
5
6
 
6
7
  export interface CardProps {
7
8
  /** Content to display inside Card. */
@@ -49,7 +50,7 @@ export interface CardProps {
49
50
  */
50
51
  const Card: React.FC<CardProps> = ({
51
52
  className,
52
- children,
53
+ children = null,
53
54
  id,
54
55
  isDisabled = false,
55
56
  isSmall = false,
@@ -80,7 +81,10 @@ const Card: React.FC<CardProps> = ({
80
81
  size={isSmall ? 'sm' : 'md'}
81
82
  isDisabled={isDisabled}
82
83
  testId="close-button"
83
- onClick={onDismiss}
84
+ onClick={(e) => {
85
+ stopPropagation(e);
86
+ onDismiss();
87
+ }}
84
88
  />
85
89
  )}
86
90
  {children}
@@ -1 +1,2 @@
1
1
  export { default } from './Card';
2
+ export * from './Card';
@@ -41,6 +41,7 @@ class TableLink extends PureComponent {
41
41
  } np-text-body-default-bold`}
42
42
  disabled={disabled}
43
43
  aria-label={this.calculateAriaLabel(longTitle, title, active, type, formatMessage)}
44
+ aria-pressed={active}
44
45
  onClick={this.onClick}
45
46
  >
46
47
  {title || item}
@@ -94,6 +94,12 @@ describe('TableLink', () => {
94
94
  expect(button().prop('aria-label')).toBe('12/12/1212, selected day');
95
95
  });
96
96
 
97
+ it('adds aria pressed to selected day', () => {
98
+ expect(button().hasClass('active')).toBe(false);
99
+ component.setProps({ active: true });
100
+ expect(button().prop('aria-pressed')).toBe(true);
101
+ });
102
+
97
103
  it('adds aria label to selected month', () => {
98
104
  component.setProps({ type: 'month' });
99
105
  expect(button().hasClass('active')).toBe(false);
@@ -1 +1 @@
1
- .np-select-input-placeholder{color:#768e9c;color:var(--color-content-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.np-select-input-options-container{display:flex;flex-direction:column;height:100%}.np-select-input-options-container:focus{outline:none}@media (min-width:576px){.np-select-input-options-container{max-height:28rem}}.np-select-input-query-container{display:flex;flex-direction:column;padding:8px;padding:var(--size-8);padding-top:0}@media (min-width:576px){.np-select-input-query-container{padding-top:8px;padding-top:var(--size-8)}}.np-select-input-listbox-container{height:var(--initial-height);overflow-y:auto;position:relative;scroll-padding-bottom:8px;scroll-padding-bottom:var(--size-8);scroll-padding-top:8px;scroll-padding-top:var(--size-8)}@media (min-width:576px){.np-select-input-listbox-container{height:auto}}.np-select-input-listbox-container--has-group{scroll-padding-top:32px;scroll-padding-top:var(--size-32)}.np-select-input-listbox{padding:8px;padding:var(--size-8)}.np-select-input-listbox:focus{outline:none}.np-select-input-separator-item{border-top-width:1px;margin:8px;margin:var(--size-8)}.np-select-input-group-item--without-needle:first-child{margin-top:-8px;margin-top:calc(var(--size-8)*-1)}.np-select-input-group-item-header{background-color:#fff;background-color:var(--color-background-elevated);color:#5d7079;color:var(--color-content-secondary);padding:8px 16px 4px;padding:var(--size-8) var(--size-16) var(--size-4);position:sticky;top:0;z-index:10}.np-select-input-option-container{align-items:center;border-radius:10px;border-radius:var(--radius-small);color:#37517e;color:var(--color-content-primary);-moz-column-gap:8px;column-gap:8px;-moz-column-gap:var(--size-8);column-gap:var(--size-8);display:flex;padding:12px 16px;padding:var(--size-12) var(--size-16)}.np-select-input-option-container--active{background-color:var(--color-background-screen-hover)}.np-select-input-option-container--disabled{opacity:.45}.np-select-input-option-check--not-selected{visibility:hidden}.np-select-input-option{flex:1}.np-select-input-option-content-container{align-items:center;color:#37517e;color:var(--color-content-primary);-moz-column-gap:8px;column-gap:8px;-moz-column-gap:var(--size-8);column-gap:var(--size-8);display:flex}.np-select-input-option-content-icon{display:flex}.np-select-input-option-content-icon--not-compact{align-self:flex-start}.np-select-input-option-content-text{display:flex;flex:1;flex-direction:column;overflow:hidden}.np-select-input-option-content-text-secondary{color:#5d7079;color:var(--color-content-secondary)}.np-select-input-option-content-text-compact{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.np-select-input-option-content-text-line-1>:not([hidden])~:not([hidden]){margin-left:8px;margin-left:var(--size-8);margin-right:8px;margin-right:var(--size-8)}.np-select-input-addon-container{align-items:center;display:inline-flex;pointer-events:none}.np-select-input-addon{align-items:center;background:none;border-radius:.125rem;border-width:0;display:inline-flex;height:32px;height:var(--size-32);justify-content:center;width:32px;width:var(--size-32)}.np-select-input-addon--interactive{color:#c9cbce;color:var(--color-interactive-secondary);pointer-events:auto}.np-select-input-addon--interactive:hover{color:#b5b7ba;color:var(--color-interactive-secondary-hover)}.np-select-input-addon--interactive:focus{outline:none}.np-select-input-addon--interactive:focus-visible{outline:var(--ring-outline-color) solid var(--ring-outline-width);outline-offset:var(--ring-outline-offset)}.np-select-input-addon-separator{border-inline-start-width:1px;height:24px;height:var(--size-24)}
1
+ .np-bottom-sheet-v2-container{position:relative;z-index:1060}.np-bottom-sheet-v2-backdrop-container--enter,.np-bottom-sheet-v2-backdrop-container--leave{transition-duration:.15s;transition-property:opacity;transition-timing-function:ease-out}.np-bottom-sheet-v2-backdrop-container--enter-from,.np-bottom-sheet-v2-backdrop-container--leave-to{opacity:0}.np-bottom-sheet-v2-backdrop{background-color:#37517e;background-color:var(--color-content-primary);inset:0;opacity:.4;position:fixed}.np-bottom-sheet-v2{display:flex;flex-direction:column;inset:0;justify-content:flex-end;padding-left:8px;padding-left:var(--size-8);padding-right:8px;padding-right:var(--size-8);padding-top:64px;padding-top:var(--size-64);position:fixed}.np-bottom-sheet-v2-content{max-height:100%}.np-bottom-sheet-v2-content--enter,.np-bottom-sheet-v2-content--leave{transition-duration:.3s;transition-property:transform;transition-timing-function:ease-out}@media (prefers-reduced-motion:reduce){.np-bottom-sheet-v2-content--enter,.np-bottom-sheet-v2-content--leave{transition-property:opacity}}@media (prefers-reduced-motion:no-preference){.np-bottom-sheet-v2-content--enter-from,.np-bottom-sheet-v2-content--leave-to{transform:translateY(100%)}}@media (prefers-reduced-motion:reduce){.np-bottom-sheet-v2-content--enter-from,.np-bottom-sheet-v2-content--leave-to{opacity:0}}.np-bottom-sheet-v2-content-inner-container{background-color:#fff;background-color:var(--color-background-elevated);border-top-left-radius:32px;border-top-right-radius:32px;box-shadow:0 0 40px rgba(69,71,69,.2);display:flex;flex-direction:column;height:100%}.np-bottom-sheet-v2-content-inner-container:focus{outline:none}.np-bottom-sheet-v2-header{align-self:flex-end;padding:16px;padding:var(--size-16)}.np-bottom-sheet-v2-content-inner{display:grid;grid-template-rows:repeat(1,minmax(0,1fr));overflow-y:auto;padding-top:0;row-gap:8px;row-gap:var(--size-8)}.np-bottom-sheet-v2-content-inner--has-title{grid-template-rows:auto 1fr}.np-bottom-sheet-v2-content-inner--padding-md{padding:16px;padding:var(--size-16)}.np-bottom-sheet-v2-title{color:#37517e;color:var(--color-content-primary)}.np-bottom-sheet-v2-body{color:#5d7079;color:var(--color-content-secondary)}.np-button-input{align-content:center;border-radius:10px;border-radius:var(--size-10);display:inline-grid;grid-auto-columns:minmax(0,1fr);text-align:start}.np-popover-v2-container{background-color:#fff;background-color:var(--color-background-elevated);border-radius:10px;border-radius:var(--radius-small);box-shadow:0 0 40px rgba(69,71,69,.2);display:flex;flex-direction:column;max-height:var(--max-height);min-width:-moz-min-content;min-width:min-content;width:var(--width);z-index:1060}.np-popover-v2-container:focus{outline:none}.np-popover-v2{display:grid;grid-template-rows:repeat(1,minmax(0,1fr));overflow-y:auto;row-gap:8px;row-gap:var(--size-8)}.np-popover-v2--has-title{grid-template-rows:auto 1fr}.np-popover-v2--padding-md{padding:16px;padding:var(--size-16)}.np-popover-v2-title{color:#37517e;color:var(--color-content-primary)}.np-popover-v2-content{color:#5d7079;color:var(--color-content-secondary)}.np-select-input-placeholder{color:#768e9c;color:var(--color-content-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.np-select-input-options-container{display:flex;flex-direction:column;height:100%}.np-select-input-options-container:focus{outline:none}@media (min-width:576px){.np-select-input-options-container{max-height:28rem}}.np-select-input-query-container{display:flex;flex-direction:column;padding:8px;padding:var(--size-8);padding-top:0}@media (min-width:576px){.np-select-input-query-container{padding-top:8px;padding-top:var(--size-8)}}.np-select-input-listbox-container{height:var(--initial-height);overflow-y:auto;position:relative;scroll-padding-bottom:8px;scroll-padding-bottom:var(--size-8);scroll-padding-top:8px;scroll-padding-top:var(--size-8)}@media (min-width:576px){.np-select-input-listbox-container{height:auto}}.np-select-input-listbox-container--has-group{scroll-padding-top:32px;scroll-padding-top:var(--size-32)}.np-select-input-listbox{padding:8px;padding:var(--size-8)}.np-select-input-listbox:focus{outline:none}.np-select-input-separator-item{border-top-width:1px;margin:8px;margin:var(--size-8)}.np-select-input-group-item--without-needle:first-child{margin-top:-8px;margin-top:calc(var(--size-8)*-1)}.np-select-input-group-item-header{background-color:#fff;background-color:var(--color-background-elevated);color:#5d7079;color:var(--color-content-secondary);padding:8px 16px 4px;padding:var(--size-8) var(--size-16) var(--size-4);position:sticky;top:0;z-index:10}.np-select-input-option-container{align-items:center;border-radius:10px;border-radius:var(--radius-small);color:#37517e;color:var(--color-content-primary);-moz-column-gap:8px;column-gap:8px;-moz-column-gap:var(--size-8);column-gap:var(--size-8);display:flex;padding:12px 16px;padding:var(--size-12) var(--size-16)}.np-select-input-option-container--active{background-color:var(--color-background-screen-hover)}.np-select-input-option-container--disabled{opacity:.45}.np-select-input-option-check--not-selected{visibility:hidden}.np-select-input-option{flex:1}.np-select-input-option-content-container{align-items:center;color:#37517e;color:var(--color-content-primary);-moz-column-gap:8px;column-gap:8px;-moz-column-gap:var(--size-8);column-gap:var(--size-8);display:flex}.np-select-input-option-content-icon{display:flex}.np-select-input-option-content-icon--not-compact{align-self:flex-start}.np-select-input-option-content-text{display:flex;flex:1;flex-direction:column;overflow:hidden}.np-select-input-option-content-text-secondary{color:#5d7079;color:var(--color-content-secondary)}.np-select-input-option-content-text-compact{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.np-select-input-option-content-text-line-1>:not([hidden])~:not([hidden]){margin-left:8px;margin-left:var(--size-8);margin-right:8px;margin-right:var(--size-8)}.np-select-input-addon-container{align-items:center;display:inline-flex;pointer-events:none}.np-select-input-addon{align-items:center;background:none;border-radius:.125rem;border-width:0;display:inline-flex;height:32px;height:var(--size-32);justify-content:center;width:32px;width:var(--size-32)}.np-select-input-addon--interactive{color:#c9cbce;color:var(--color-interactive-secondary);pointer-events:auto}.np-select-input-addon--interactive:hover{color:#b5b7ba;color:var(--color-interactive-secondary-hover)}.np-select-input-addon--interactive:focus{outline:none}.np-select-input-addon--interactive:focus-visible{outline:var(--ring-outline-color) solid var(--ring-outline-width);outline-offset:var(--ring-outline-offset)}.np-select-input-addon-separator{border-inline-start-width:1px;height:24px;height:var(--size-24)}
@@ -1,3 +1,6 @@
1
+ @import "./_BottomSheet.less";
2
+ @import "./_ButtonInput.less";
3
+ @import "./_Popover.less";
1
4
  @import (reference) "../../node_modules/@transferwise/neptune-css/src/less/ring.less";
2
5
 
3
6
  .np-select-input-placeholder {
@@ -4,6 +4,8 @@ import { Flag } from '@wise/art';
4
4
  import { useState } from 'react';
5
5
 
6
6
  import { getMonthNames } from '../common/dateUtils';
7
+ import Drawer from '../drawer';
8
+ import Modal from '../modal';
7
9
 
8
10
  import { SelectInput, type SelectInputItem, SelectInputOptionContent } from './SelectInput';
9
11
 
@@ -262,3 +264,23 @@ export const Currencies: StoryObj<{
262
264
  },
263
265
  },
264
266
  };
267
+
268
+ export const WithinDrawer: StoryObj<{
269
+ onChange: (value: Currency) => void;
270
+ }> = {
271
+ ...Currencies,
272
+ decorators: [
273
+ (Story) => (
274
+ <Drawer open headerTitle="This is the title of the drawer">
275
+ <Story />
276
+ </Drawer>
277
+ ),
278
+ ],
279
+ };
280
+
281
+ export const WithinModal: StoryObj<{
282
+ onChange: (value: Currency) => void;
283
+ }> = {
284
+ ...Currencies,
285
+ decorators: [(Story) => <Modal open body={<Story />} onClose={() => {}} />],
286
+ };
@@ -1,6 +1,6 @@
1
1
  .np-bottom-sheet-v2-container {
2
2
  position: relative;
3
- z-index: 50;
3
+ z-index: 1060;
4
4
  }
5
5
 
6
6
  .np-bottom-sheet-v2-backdrop-container {