@transferwise/components 46.160.0 → 46.160.1

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 (121) hide show
  1. package/build/ExpressiveMoneyInput/Chevron/Chevron.js +10 -2
  2. package/build/ExpressiveMoneyInput/Chevron/Chevron.js.map +1 -1
  3. package/build/ExpressiveMoneyInput/Chevron/Chevron.mjs +11 -3
  4. package/build/ExpressiveMoneyInput/Chevron/Chevron.mjs.map +1 -1
  5. package/build/ProcessIndicator/ProcessIndicator.js +1 -1
  6. package/build/ProcessIndicator/ProcessIndicator.js.map +1 -1
  7. package/build/ProcessIndicator/ProcessIndicator.mjs +1 -1
  8. package/build/ProcessIndicator/ProcessIndicator.mjs.map +1 -1
  9. package/build/Prompt/CriticalBanner/CriticalBanner.js +10 -1
  10. package/build/Prompt/CriticalBanner/CriticalBanner.js.map +1 -1
  11. package/build/Prompt/CriticalBanner/CriticalBanner.mjs +10 -1
  12. package/build/Prompt/CriticalBanner/CriticalBanner.mjs.map +1 -1
  13. package/build/common/Panel/Panel.js +13 -25
  14. package/build/common/Panel/Panel.js.map +1 -1
  15. package/build/common/Panel/Panel.mjs +10 -22
  16. package/build/common/Panel/Panel.mjs.map +1 -1
  17. package/build/common/Panel/Panel.positionUtils.js +68 -0
  18. package/build/common/Panel/Panel.positionUtils.js.map +1 -0
  19. package/build/common/Panel/Panel.positionUtils.mjs +63 -0
  20. package/build/common/Panel/Panel.positionUtils.mjs.map +1 -0
  21. package/build/common/PropsValues/position.js +0 -25
  22. package/build/common/PropsValues/position.js.map +1 -1
  23. package/build/common/PropsValues/position.mjs +1 -24
  24. package/build/common/PropsValues/position.mjs.map +1 -1
  25. package/build/main.css +102 -68
  26. package/build/styles/AvatarView/AvatarView.css +8 -0
  27. package/build/styles/AvatarView/Dot/Dot.css +8 -0
  28. package/build/styles/CheckboxButton/CheckboxButton.css +3 -0
  29. package/build/styles/Nudge/Nudge.css +4 -38
  30. package/build/styles/Prompt/CriticalBanner/CriticalBanner.css +34 -0
  31. package/build/styles/SlidingPanel/SlidingPanel.css +8 -0
  32. package/build/styles/UploadInput/UploadItem/UploadItem.css +4 -5
  33. package/build/styles/_deprecated/Badge/Badge.css +4 -2
  34. package/build/styles/common/Panel/Panel.css +12 -4
  35. package/build/styles/css/accordion.css +3 -0
  36. package/build/styles/css/buttons.css +1 -7
  37. package/build/styles/css/chevron.css +3 -0
  38. package/build/styles/css/neptune.css +25 -19
  39. package/build/styles/css/process.css +15 -9
  40. package/build/styles/css/tick.css +6 -3
  41. package/build/styles/main.css +102 -68
  42. package/build/styles/styles/less/accordion.css +3 -0
  43. package/build/styles/styles/less/buttons.css +1 -7
  44. package/build/styles/styles/less/chevron.css +3 -0
  45. package/build/styles/styles/less/neptune.css +25 -19
  46. package/build/styles/styles/less/process.css +15 -9
  47. package/build/styles/styles/less/tick.css +6 -3
  48. package/build/types/ExpressiveMoneyInput/Chevron/Chevron.d.ts.map +1 -1
  49. package/build/types/Prompt/CriticalBanner/CriticalBanner.d.ts +6 -1
  50. package/build/types/Prompt/CriticalBanner/CriticalBanner.d.ts.map +1 -1
  51. package/build/types/common/Panel/Panel.d.ts +1 -1
  52. package/build/types/common/Panel/Panel.d.ts.map +1 -1
  53. package/build/types/common/Panel/Panel.positionUtils.d.ts +7 -0
  54. package/build/types/common/Panel/Panel.positionUtils.d.ts.map +1 -0
  55. package/build/types/common/PropsValues/position.d.ts +0 -13
  56. package/build/types/common/PropsValues/position.d.ts.map +1 -1
  57. package/build/types/common/ResponsivePanel/ResponsivePanel.d.ts +1 -1
  58. package/package.json +5 -5
  59. package/src/AvatarView/AvatarView.css +8 -0
  60. package/src/AvatarView/Dot/Dot.css +8 -0
  61. package/src/AvatarView/Dot/Dot.less +7 -1
  62. package/src/Button/_stories/Button.test.story.tsx +1 -1
  63. package/src/Checkbox/_stories/Checkbox.story.tsx +1 -1
  64. package/src/Checkbox/_stories/Checkbox.test.story.tsx +3 -2
  65. package/src/CheckboxButton/CheckboxButton.css +3 -0
  66. package/src/CheckboxButton/CheckboxButton.less +4 -0
  67. package/src/Chevron/_stories/Chevron.test.story.tsx +2 -2
  68. package/src/ExpressiveMoneyInput/Chevron/Chevron.tsx +8 -3
  69. package/src/Header/_stories/Header.test.story.tsx +1 -1
  70. package/src/Info/_stories/Info.rtl.test.story.tsx +35 -10
  71. package/src/Info/_stories/Info.story.tsx +1 -1
  72. package/src/Inputs/SelectInput/_stories/SelectInput.test.story.tsx +1 -1
  73. package/src/ListItem/_stories/subcomponents.tsx +1 -1
  74. package/src/Loader/_stories/Loader.test.story.tsx +23 -0
  75. package/src/MoneyInput/_stories/MoneyInput.rtl.test.story.tsx +1 -1
  76. package/src/Nudge/Nudge.css +4 -38
  77. package/src/Nudge/Nudge.less +4 -4
  78. package/src/Nudge/_stories/Nudge.test.story.tsx +29 -12
  79. package/src/PhoneNumberInput/_stories/{PhoneNumberInput.test.story.tsx → PhoneNumberInput.rtl.test.story.tsx} +18 -10
  80. package/src/ProcessIndicator/ProcessIndicator.tsx +1 -1
  81. package/src/ProcessIndicator/_stories/ProcessIndicator.test.story.tsx +32 -0
  82. package/src/ProgressBar/_stories/ProgressBar.test.story.tsx +33 -19
  83. package/src/Prompt/CriticalBanner/CriticalBanner.css +34 -0
  84. package/src/Prompt/CriticalBanner/CriticalBanner.less +45 -0
  85. package/src/Prompt/CriticalBanner/CriticalBanner.test.tsx +26 -3
  86. package/src/Prompt/CriticalBanner/CriticalBanner.tsx +15 -1
  87. package/src/Prompt/CriticalBanner/_stories/CriticalBanner.accessibility.docs.mdx +4 -1
  88. package/src/Prompt/CriticalBanner/_stories/CriticalBanner.story.tsx +52 -0
  89. package/src/Prompt/CriticalBanner/_stories/CriticalBanner.test.story.tsx +22 -1
  90. package/src/SlidingPanel/SlidingPanel.css +8 -0
  91. package/src/SlidingPanel/SlidingPanel.less +8 -0
  92. package/src/SlidingPanel/_stories/SlidingPanel.rtl.test.story.tsx +4 -3
  93. package/src/Snackbar/_stories/Snackbar.rtl.test.story.tsx +14 -16
  94. package/src/Snackbar/_stories/Snackbar.story.tsx +1 -1
  95. package/src/Snackbar/_stories/Snackbar.test.story.tsx +1 -1
  96. package/src/StatusIcon/_stories/StatusIcon.test.story.tsx +12 -4
  97. package/src/UploadInput/UploadItem/UploadItem.css +4 -5
  98. package/src/UploadInput/UploadItem/UploadItem.less +7 -6
  99. package/src/UploadInput/_stories/UploadInput.test.story.tsx +1 -1
  100. package/src/_deprecated/Badge/Badge.css +4 -2
  101. package/src/_deprecated/Badge/Badge.less +7 -14
  102. package/src/_deprecated/CriticalBanner/_stories/CriticalCommsBanner.test.story.tsx +0 -16
  103. package/src/_deprecated/OverlayHeader/_stories/OverlayHeader.test.story.tsx +15 -0
  104. package/src/common/Panel/Panel.css +12 -4
  105. package/src/common/Panel/Panel.less +27 -9
  106. package/src/common/Panel/Panel.positionUtils.ts +79 -0
  107. package/src/common/Panel/Panel.test.tsx +40 -0
  108. package/src/common/Panel/Panel.tsx +13 -24
  109. package/src/common/Panel/_stories/Panel.rtl.test.story.tsx +110 -0
  110. package/src/common/PropsValues/position.ts +0 -50
  111. package/src/main.css +102 -68
  112. package/src/styles/less/accordion.css +3 -0
  113. package/src/styles/less/buttons.css +1 -7
  114. package/src/styles/less/buttons.less +3 -11
  115. package/src/styles/less/chevron.css +3 -0
  116. package/src/styles/less/chevron.less +4 -0
  117. package/src/styles/less/neptune.css +25 -19
  118. package/src/styles/less/process.css +15 -9
  119. package/src/styles/less/process.less +13 -6
  120. package/src/styles/less/tick.css +6 -3
  121. package/src/styles/less/tick.less +7 -3
@@ -1 +1 @@
1
- {"version":3,"file":"CriticalBanner.d.ts","sourceRoot":"","sources":["../../../../src/Prompt/CriticalBanner/CriticalBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAmB,MAAM,OAAO,CAAC;AAOhE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAmB,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAqB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAKxE,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG;QAC1D,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;KAChC,CAAC;IACF,eAAe,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG;QACnE,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;KAChC,CAAC;IACF,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;IACtE;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,GAAG,IAAI,CAAC,oBAAoB,EAAE,IAAI,GAAG,WAAW,GAAG,aAAa,CAAC,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,4IAY5B,mBAAmB,gCA4HrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"CriticalBanner.d.ts","sourceRoot":"","sources":["../../../../src/Prompt/CriticalBanner/CriticalBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAmB,MAAM,OAAO,CAAC;AAOhE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAmB,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAqB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAKxE,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG;QAC1D,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;KAChC,CAAC;IACF,eAAe,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG;QACnE,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;KAChC,CAAC;IACF,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;IACtE;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,GAAG,IAAI,CAAC,oBAAoB,EAAE,IAAI,GAAG,WAAW,GAAG,aAAa,CAAC,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,0JAa5B,mBAAmB,gCAoIrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, PropsWithChildren, RefObject, SyntheticEvent } from 'react';
2
- import { type FloatingPlacement } from '..';
2
+ import { type FloatingPlacement } from './Panel.positionUtils';
3
3
  export type PanelProps = PropsWithChildren<{
4
4
  arrow?: boolean;
5
5
  flip?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../../../src/common/Panel/Panel.tsx"],"names":[],"mappings":"AAWA,OAAO,EAEL,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,cAAc,EAIf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAY,KAAK,iBAAiB,EAAuB,MAAM,IAAI,CAAC;AAwB3E,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC,GACA,cAAc,CAAC,cAAc,CAAC,CAAC;AAEjC,QAAA,MAAM,KAAK;YAZD,OAAO;WACR,OAAO;cACJ,OAAO;WACV,OAAO;cACJ,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,KAAK,IAAI;eACtC,iBAAiB;eACjB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;kBACtB,OAAO;qBACJ,OAAO;;;mFAkGxB,CAAC;AAEH,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../../../src/common/Panel/Panel.tsx"],"names":[],"mappings":"AAUA,OAAO,EAEL,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,cAAc,EAIf,MAAM,OAAO,CAAC;AAMf,OAAO,EACL,KAAK,iBAAiB,EAKvB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC,GACA,cAAc,CAAC,cAAc,CAAC,CAAC;AAEjC,QAAA,MAAM,KAAK;YAZD,OAAO;WACR,OAAO;cACJ,OAAO;WACV,OAAO;cACJ,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,KAAK,IAAI;eACtC,iBAAiB;eACjB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;kBACtB,OAAO;qBACJ,OAAO;;;mFAoGxB,CAAC;AAEH,eAAe,KAAK,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Placement } from '@floating-ui/react';
2
+ export type FloatingPlacement = 'top' | 'right' | 'bottom' | 'left' | 'top-left' | 'top-right' | 'right-top' | 'right-bottom' | 'bottom-left' | 'bottom-right' | 'left-top' | 'left-bottom';
3
+ export declare const POPOVER_OFFSET = 16;
4
+ export declare const fallbackPlacements: Record<Placement, Placement[]>;
5
+ export declare const positionToPlacement: (position: FloatingPlacement) => Placement;
6
+ export declare const mirrorPositionForRtl: (position: FloatingPlacement) => FloatingPlacement;
7
+ //# sourceMappingURL=Panel.positionUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Panel.positionUtils.d.ts","sourceRoot":"","sources":["../../../../src/common/Panel/Panel.positionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GACzB,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,UAAU,GACV,WAAW,GACX,WAAW,GACX,cAAc,GACd,aAAa,GACb,cAAc,GACd,UAAU,GACV,aAAa,CAAC;AAElB,eAAO,MAAM,cAAc,KAAK,CAAC;AAKjC,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,CAa7D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,UAAU,iBAAiB,KAAG,SAqBjE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,UAAU,iBAAiB,KAAG,iBAmBlE,CAAC"}
@@ -1,4 +1,3 @@
1
- import type { Placement } from '@floating-ui/react';
2
1
  export declare enum Position {
3
2
  BOTTOM = "bottom",
4
3
  BOTTOM_LEFT = "bottom-left",
@@ -19,16 +18,4 @@ export type PositionTop = 'top';
19
18
  export type PositionRight = 'right';
20
19
  export type PositionBottom = 'bottom';
21
20
  export type PositionLeft = 'left';
22
- export type PositionTopLeft = 'top-left';
23
- export type PositionTopRight = 'top-right';
24
- export type PositionBottomLeft = 'bottom-left';
25
- export type PositionBottomRight = 'bottom-right';
26
- export type PositionLeftTop = 'left-top';
27
- export type PositionLeftBottom = 'left-bottom';
28
- export type PositionRightTop = 'right-top';
29
- export type PositionRightBottom = 'right-bottom';
30
- /** Neptune position values that can be converted to floating-ui Placement */
31
- export type FloatingPlacement = PositionTop | PositionRight | PositionBottom | PositionLeft | PositionTopLeft | PositionTopRight | PositionRightTop | PositionRightBottom | PositionBottomLeft | PositionBottomRight | PositionLeftTop | PositionLeftBottom;
32
- /** Maps Neptune position values to floating-ui Placement */
33
- export declare const positionToPlacement: (position: FloatingPlacement) => Placement;
34
21
  //# sourceMappingURL=position.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../../src/common/PropsValues/position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,oBAAY,QAAQ;IAClB,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AACtC,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC;AAChC,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;AACpC,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AACtC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC;AACzC,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC3C,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAC/C,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC;AACjD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC;AACzC,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAC/C,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC3C,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAEjD,6EAA6E;AAC7E,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,aAAa,GACb,cAAc,GACd,YAAY,GACZ,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,GACf,kBAAkB,CAAC;AAEvB,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,GAAI,UAAU,iBAAiB,KAAG,SAqBjE,CAAC"}
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../../src/common/PropsValues/position.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AACtC,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC;AAChC,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;AACpC,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AACtC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC"}
@@ -4,7 +4,7 @@ declare const ResponsivePanel: import("react").ForwardRefExoticComponent<{
4
4
  altAxis?: boolean;
5
5
  open?: boolean;
6
6
  onClose?: (event: Event | import("react").SyntheticEvent) => void;
7
- position?: import("..").FloatingPlacement;
7
+ position?: import("../Panel/Panel.positionUtils").FloatingPlacement;
8
8
  anchorRef: import("react").RefObject<Element | null>;
9
9
  anchorWidth?: boolean;
10
10
  considerHeight?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transferwise/components",
3
- "version": "46.160.0",
3
+ "version": "46.160.1",
4
4
  "description": "Neptune React components",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -52,7 +52,7 @@
52
52
  "@rollup/plugin-url": "^8.0.2",
53
53
  "@storybook/addon-a11y": "^10.5.4",
54
54
  "@storybook/addon-docs": "^10.5.4",
55
- "@storybook/addon-mcp": "^0.6.0",
55
+ "@storybook/addon-mcp": "^0.7.0",
56
56
  "@storybook/addon-webpack5-compiler-babel": "^4.0.1",
57
57
  "@storybook/react-webpack5": "^10.5.4",
58
58
  "@testing-library/dom": "^10.4.1",
@@ -71,12 +71,12 @@
71
71
  "@types/react-dom": "^18.3.7",
72
72
  "@types/react-transition-group": "4.4.12",
73
73
  "@monaco-editor/react": "^4.7.0",
74
- "monaco-editor": "^0.55.1",
74
+ "monaco-editor": "^0.56.0",
75
75
  "monaco-editor-webpack-plugin": "^7.1.1",
76
- "@wise/art": "^2.31.1",
76
+ "@wise/art": "^2.32.0",
77
77
  "@wise/eslint-config": "^14.2.1",
78
78
  "babel-plugin-formatjs": "^11.3.16",
79
- "eslint": "^9.39.4",
79
+ "eslint": "^9.39.5",
80
80
  "eslint-plugin-storybook": "^10.5.4",
81
81
  "gulp": "^5.0.1",
82
82
  "jest": "^29.7.0",
@@ -4,10 +4,18 @@
4
4
  display: inline-block;
5
5
  }
6
6
  .np-dot-mask {
7
+ --np-dot-h-side: left;
7
8
  -webkit-mask-image: radial-gradient(circle at bottom calc(100% - (var(--np-dot-size) / 2)) left calc(100% - (var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
8
9
  mask-image: radial-gradient(circle at bottom calc(100% - (var(--np-dot-size) / 2)) left calc(100% - (var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
10
+ -webkit-mask-image: radial-gradient(circle at bottom calc(100% - (var(--np-dot-size) / 2)) var(--np-dot-h-side) calc(100% - (var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
11
+ mask-image: radial-gradient(circle at bottom calc(100% - (var(--np-dot-size) / 2)) var(--np-dot-h-side) calc(100% - (var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
9
12
  -webkit-mask-image: radial-gradient(circle at bottom calc(100% - calc(var(--np-dot-size) / 2)) left calc(100% - calc(var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
10
13
  mask-image: radial-gradient(circle at bottom calc(100% - calc(var(--np-dot-size) / 2)) left calc(100% - calc(var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
14
+ -webkit-mask-image: radial-gradient(circle at bottom calc(100% - calc(var(--np-dot-size) / 2)) var(--np-dot-h-side) calc(100% - calc(var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
15
+ mask-image: radial-gradient(circle at bottom calc(100% - calc(var(--np-dot-size) / 2)) var(--np-dot-h-side) calc(100% - calc(var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
16
+ }
17
+ [dir="rtl"] .np-dot-mask {
18
+ --np-dot-h-side: right;
11
19
  }
12
20
  .np-dot-badge {
13
21
  position: absolute;
@@ -4,10 +4,18 @@
4
4
  display: inline-block;
5
5
  }
6
6
  .np-dot-mask {
7
+ --np-dot-h-side: left;
7
8
  -webkit-mask-image: radial-gradient(circle at bottom calc(100% - (var(--np-dot-size) / 2)) left calc(100% - (var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
8
9
  mask-image: radial-gradient(circle at bottom calc(100% - (var(--np-dot-size) / 2)) left calc(100% - (var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
10
+ -webkit-mask-image: radial-gradient(circle at bottom calc(100% - (var(--np-dot-size) / 2)) var(--np-dot-h-side) calc(100% - (var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
11
+ mask-image: radial-gradient(circle at bottom calc(100% - (var(--np-dot-size) / 2)) var(--np-dot-h-side) calc(100% - (var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
9
12
  -webkit-mask-image: radial-gradient(circle at bottom calc(100% - calc(var(--np-dot-size) / 2)) left calc(100% - calc(var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
10
13
  mask-image: radial-gradient(circle at bottom calc(100% - calc(var(--np-dot-size) / 2)) left calc(100% - calc(var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
14
+ -webkit-mask-image: radial-gradient(circle at bottom calc(100% - calc(var(--np-dot-size) / 2)) var(--np-dot-h-side) calc(100% - calc(var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
15
+ mask-image: radial-gradient(circle at bottom calc(100% - calc(var(--np-dot-size) / 2)) var(--np-dot-h-side) calc(100% - calc(var(--np-dot-size) / 2)), transparent 0, transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)), black calc(var(--np-dot-size) / 2 + var(--np-dot-offset) + 0.5px));
16
+ }
17
+ [dir="rtl"] .np-dot-mask {
18
+ --np-dot-h-side: right;
11
19
  }
12
20
  .np-dot-badge {
13
21
  position: absolute;
@@ -4,8 +4,14 @@
4
4
  display: inline-block;
5
5
 
6
6
  &-mask {
7
+ --np-dot-h-side: left;
8
+
9
+ [dir="rtl"] & {
10
+ --np-dot-h-side: right;
11
+ }
12
+
7
13
  mask-image: radial-gradient(
8
- circle at bottom calc(100% - calc(var(--np-dot-size) / 2)) left
14
+ circle at bottom calc(100% - calc(var(--np-dot-size) / 2)) var(--np-dot-h-side)
9
15
  calc(100% - calc(var(--np-dot-size) / 2)),
10
16
  transparent 0,
11
17
  transparent calc(var(--np-dot-size) / 2 + var(--np-dot-offset)),
@@ -34,7 +34,7 @@ const buttonPriorities = ['primary', 'secondary', 'secondary-neutral', 'tertiary
34
34
  const buttonSizes = ['sm', 'md', 'lg'] as const;
35
35
  export const AllVariants: Story = {
36
36
  tags: ['!autodocs'],
37
- ...withVariantConfig(['default', 'dark', 'bright-green', 'forest-green', 'rtl'], {
37
+ ...withVariantConfig(['default', 'dark', 'bright-green', 'forest-green'], {
38
38
  parameters: {
39
39
  padding: '0',
40
40
  },
@@ -52,7 +52,7 @@ export const Multiple: Story = {
52
52
  </>
53
53
  );
54
54
  },
55
- ...withVariantConfig(['default', 'dark', 'rtl']),
55
+ ...withVariantConfig(['default', 'dark']),
56
56
  };
57
57
 
58
58
  export const WithinField = {
@@ -30,7 +30,7 @@ export const MultipleMobile: Story = {
30
30
  </>
31
31
  );
32
32
  },
33
- ...withVariantConfig(['default', 'dark', 'rtl', 'mobile']),
33
+ ...withVariantConfig(['default', 'dark', 'mobile']),
34
34
  };
35
35
 
36
36
  /**
@@ -41,8 +41,9 @@ export const MultipleMobile: Story = {
41
41
  export const RTLDiff: Story = {
42
42
  render: () => (
43
43
  <>
44
- <Checkbox label="Label only" onChange={() => {}} />
44
+ <Checkbox checked label="Label only" onChange={() => {}} />
45
45
  <Checkbox
46
+ checked
46
47
  label="Label with secondary"
47
48
  secondary="Secondary description text"
48
49
  onChange={() => {}}
@@ -32,6 +32,9 @@
32
32
  background: var(--color-background-screen);
33
33
  transform: translate(-50%, -50%);
34
34
  }
35
+ [dir="rtl"] .np-tw-checkbox-indeterminate::after {
36
+ transform: translate(50%, -50%);
37
+ }
35
38
  .np-tw-checkbox-indeterminate .has-error::after {
36
39
  background-color: #e74848;
37
40
  background-color: var(--color-interactive-negative);
@@ -40,6 +40,10 @@
40
40
  left: 50%;
41
41
  background: var(--color-background-screen);
42
42
  transform: translate(-50%, -50%);
43
+
44
+ [dir="rtl"] & {
45
+ transform: translate(50%, -50%);
46
+ }
43
47
  }
44
48
 
45
49
  .has-error {
@@ -17,10 +17,10 @@ type Story = StoryObj<typeof Chevron>;
17
17
  */
18
18
  export const RTLDiff: Story = {
19
19
  render: () => (
20
- <div style={{ display: 'flex', gap: '16px', alignItems: 'center' }}>
20
+ <>
21
21
  <Chevron orientation="left" size="md" />
22
22
  <Chevron orientation="right" size="md" />
23
- </div>
23
+ </>
24
24
  ),
25
25
  ...withRTLDiff(),
26
26
  };
@@ -1,12 +1,17 @@
1
- import { ChevronLeft } from '@transferwise/icons';
1
+ import { ChevronLeft, ChevronRight } from '@transferwise/icons';
2
2
  import { clsx } from 'clsx';
3
3
  import { motion } from 'motion/react';
4
4
 
5
+ import { useDirection } from '../../common/hooks';
6
+
5
7
  interface Props {
6
8
  shouldShow: boolean;
7
9
  }
8
10
 
9
11
  export const Chevron = ({ shouldShow = true }: Props) => {
12
+ const { isRTL } = useDirection();
13
+ const Icon = isRTL ? ChevronRight : ChevronLeft;
14
+
10
15
  return (
11
16
  <div
12
17
  className={clsx(
@@ -17,7 +22,7 @@ export const Chevron = ({ shouldShow = true }: Props) => {
17
22
  >
18
23
  <motion.div
19
24
  animate={{
20
- x: [12, 0, 0, -12],
25
+ x: isRTL ? [-12, 0, 0, 12] : [12, 0, 0, -12],
21
26
  opacity: [0, 1, 1, 0],
22
27
  }}
23
28
  transition={{
@@ -28,7 +33,7 @@ export const Chevron = ({ shouldShow = true }: Props) => {
28
33
  repeatType: 'loop',
29
34
  }}
30
35
  >
31
- <ChevronLeft />
36
+ <Icon />
32
37
  </motion.div>
33
38
  </div>
34
39
  );
@@ -86,7 +86,7 @@ export const SectionTrailingSpaceWithAction: Story = {
86
86
  };
87
87
 
88
88
  export const AllVariants: Story = {
89
- ...withVariantConfig(['default', 'dark', 'bright-green', 'forest-green', 'rtl'], {
89
+ ...withVariantConfig(['default', 'dark', 'bright-green', 'forest-green'], {
90
90
  parameters: {
91
91
  padding: '0',
92
92
  },
@@ -12,8 +12,6 @@ export default {
12
12
 
13
13
  type Story = StoryObj<typeof Info>;
14
14
 
15
- const iframeDiff = withRTLDiff({ renderAs: 'iframe' });
16
-
17
15
  const openInfo = async ({ canvasElement }: { canvasElement: HTMLElement }) => {
18
16
  const canvas = within(canvasElement);
19
17
  const button = canvas.queryByRole('button');
@@ -21,32 +19,60 @@ const openInfo = async ({ canvasElement }: { canvasElement: HTMLElement }) => {
21
19
  await userEvent.click(button);
22
20
  };
23
21
 
24
- export const Popover: Story = {
22
+ export const PlacementTop: Story = {
23
+ render: () => (
24
+ <Info
25
+ aria-label="Info trigger"
26
+ title="Information"
27
+ content="This is some descriptive content inside the info component."
28
+ presentation="POPOVER"
29
+ preferredPlacement="top"
30
+ />
31
+ ),
32
+ play: openInfo,
33
+ ...withRTLDiff({ renderAs: 'iframe', hAlign: 'center', vAlign: 'bottom' }),
34
+ };
35
+
36
+ export const PlacementRight: Story = {
37
+ render: () => (
38
+ <Info
39
+ aria-label="Info trigger"
40
+ title="Information"
41
+ content="This is some descriptive content inside the info component."
42
+ presentation="POPOVER"
43
+ preferredPlacement="right"
44
+ />
45
+ ),
46
+ play: openInfo,
47
+ ...withRTLDiff({ renderAs: 'iframe', hAlign: 'left', vAlign: 'center' }),
48
+ };
49
+
50
+ export const PlacementBottom: Story = {
25
51
  render: () => (
26
52
  <Info
27
53
  aria-label="Info trigger"
28
54
  title="Information"
29
55
  content="This is some descriptive content inside the info component."
30
56
  presentation="POPOVER"
31
- size="sm"
57
+ preferredPlacement="bottom"
32
58
  />
33
59
  ),
34
60
  play: openInfo,
35
- ...iframeDiff,
61
+ ...withRTLDiff({ renderAs: 'iframe', hAlign: 'center' }),
36
62
  };
37
63
 
38
- export const PopoverLarge: Story = {
64
+ export const PlacementLeft: Story = {
39
65
  render: () => (
40
66
  <Info
41
67
  aria-label="Info trigger"
42
68
  title="Information"
43
69
  content="This is some descriptive content inside the info component."
44
70
  presentation="POPOVER"
45
- size="lg"
71
+ preferredPlacement="left"
46
72
  />
47
73
  ),
48
74
  play: openInfo,
49
- ...iframeDiff,
75
+ ...withRTLDiff({ renderAs: 'iframe', hAlign: 'right', vAlign: 'center' }),
50
76
  };
51
77
 
52
78
  export const Modal: Story = {
@@ -56,9 +82,8 @@ export const Modal: Story = {
56
82
  title="Information"
57
83
  content="This is some descriptive content inside the info component."
58
84
  presentation="MODAL"
59
- size="sm"
60
85
  />
61
86
  ),
62
87
  play: openInfo,
63
- ...iframeDiff,
88
+ ...withRTLDiff({ renderAs: 'iframe', hAlign: 'center', vAlign: 'center' }),
64
89
  };
@@ -36,5 +36,5 @@ export const Sandbox = createSandboxStory({
36
36
  });
37
37
 
38
38
  export const Basic: Story = {
39
- ...withVariantConfig(['default', 'dark', 'rtl']),
39
+ ...withVariantConfig(['default', 'dark']),
40
40
  };
@@ -166,7 +166,7 @@ export const Variants: Story<TestCurrency> = {
166
166
  </div>
167
167
  );
168
168
  },
169
- ...withVariantConfig(['default', 'dark', 'bright-green', 'forest-green', 'rtl']),
169
+ ...withVariantConfig(['default', 'dark', 'bright-green', 'forest-green']),
170
170
  };
171
171
 
172
172
  /**
@@ -60,7 +60,7 @@ export const SB_LIST_ITEM_CONTROLS: Record<SB_ListItem_ControlType, ReactNode> =
60
60
  ),
61
61
  navigation: <ListItem.Navigation href="https://wise.com" />,
62
62
  navigationAsButton: <ListItem.Navigation onClick={fn()} />,
63
- checkbox: <ListItem.Checkbox onChange={() => {}} />,
63
+ checkbox: <ListItem.Checkbox checked onChange={() => {}} />,
64
64
  radio: <ListItem.Radio name="radio" value={Math.random().toString()} onChange={() => {}} />,
65
65
  switch: <ListItem.Switch onClick={() => {}} />,
66
66
  iconButton: (
@@ -0,0 +1,23 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-webpack5';
2
+ import { withRTLDiff } from '../../../.storybook/decorators/RtlDiffDecorator';
3
+ import Loader from '..';
4
+
5
+ export default {
6
+ component: Loader,
7
+ title: 'Loading/Loader/Tests',
8
+ tags: ['!autodocs', '!manifest'],
9
+ } satisfies Meta<typeof Loader>;
10
+
11
+ type Story = StoryObj<typeof Loader>;
12
+
13
+ export const RTLDiff: Story = {
14
+ render: () => (
15
+ <>
16
+ <Loader size="sm" displayInstantly />
17
+ <Loader size="md" displayInstantly />
18
+ <Loader size="sm" displayInstantly label="Sending your money" />
19
+ <Loader size="md" displayInstantly label="Sending your money" />
20
+ </>
21
+ ),
22
+ ...withRTLDiff(),
23
+ };
@@ -84,5 +84,5 @@ export const OpenDropdown: Story = {
84
84
  if (!trigger) return;
85
85
  await userEvent.click(trigger);
86
86
  },
87
- ...withRTLDiff({ renderAs: 'iframe', width: '80%' }),
87
+ ...withRTLDiff({ renderAs: 'iframe', width: '40%' }),
88
88
  };
@@ -41,7 +41,10 @@
41
41
  inline-size: 161px;
42
42
  }
43
43
  [dir="rtl"] .wds-nudge-media-globe {
44
- transform: scaleX(-1);
44
+ margin-inline-start: -63px;
45
+ margin-block-start: -15px;
46
+ position: absolute;
47
+ inline-size: 161px;
45
48
  }
46
49
  .wds-nudge-media-lock {
47
50
  margin-inline-start: -11px;
@@ -50,36 +53,24 @@
50
53
  inline-size: 104px;
51
54
  transform: rotate(-14.86deg);
52
55
  }
53
- [dir="rtl"] .wds-nudge-media-lock {
54
- transform: scaleX(-1);
55
- }
56
56
  .wds-nudge-media-wallet {
57
57
  margin-inline-start: -15px;
58
58
  margin-block-start: 18px;
59
59
  position: absolute;
60
60
  inline-size: 107px;
61
61
  }
62
- [dir="rtl"] .wds-nudge-media-wallet {
63
- transform: scaleX(-1);
64
- }
65
62
  .wds-nudge-media-gear {
66
63
  margin-inline-start: -18px;
67
64
  margin-block-start: 19px;
68
65
  position: absolute;
69
66
  inline-size: 111px;
70
67
  }
71
- [dir="rtl"] .wds-nudge-media-gear {
72
- transform: scaleX(-1);
73
- }
74
68
  .wds-nudge-media-invite-letter {
75
69
  margin-inline-start: -17px;
76
70
  margin-block-start: -2px;
77
71
  position: absolute;
78
72
  inline-size: 105px;
79
73
  }
80
- [dir="rtl"] .wds-nudge-media-invite-letter {
81
- transform: scaleX(-1);
82
- }
83
74
  .wds-nudge-media-personal-card,
84
75
  .wds-nudge-media-business-card {
85
76
  margin-inline-start: -15px;
@@ -87,73 +78,48 @@
87
78
  position: absolute;
88
79
  inline-size: 104px;
89
80
  }
90
- [dir="rtl"] .wds-nudge-media-personal-card,
91
- [dir="rtl"] .wds-nudge-media-business-card {
92
- transform: scaleX(-1);
93
- }
94
81
  .wds-nudge-media-heart {
95
82
  margin-inline-start: -7px;
96
83
  margin-block-start: 11px;
97
84
  position: absolute;
98
85
  inline-size: 95px;
99
86
  }
100
- [dir="rtl"] .wds-nudge-media-heart {
101
- transform: scaleX(-1);
102
- }
103
87
  .wds-nudge-media-multi-currency {
104
88
  margin-inline-start: -30px;
105
89
  margin-block-start: 1px;
106
90
  position: absolute;
107
91
  inline-size: 131px;
108
92
  }
109
- [dir="rtl"] .wds-nudge-media-multi-currency {
110
- transform: scaleX(-1);
111
- }
112
93
  .wds-nudge-media-shopping-bag {
113
94
  margin-inline-start: -9px;
114
95
  margin-block-start: 14px;
115
96
  position: absolute;
116
97
  inline-size: 116px;
117
98
  }
118
- [dir="rtl"] .wds-nudge-media-shopping-bag {
119
- transform: scaleX(-1);
120
- }
121
99
  .wds-nudge-media-flower {
122
100
  margin-inline-start: -24px;
123
101
  margin-block-start: 11px;
124
102
  position: absolute;
125
103
  inline-size: 156px;
126
104
  }
127
- [dir="rtl"] .wds-nudge-media-flower {
128
- transform: scaleX(-1);
129
- }
130
105
  .wds-nudge-media-backpack {
131
106
  margin-inline-start: -16px;
132
107
  margin-block-start: 6px;
133
108
  position: absolute;
134
109
  inline-size: 123px;
135
110
  }
136
- [dir="rtl"] .wds-nudge-media-backpack {
137
- transform: scaleX(-1);
138
- }
139
111
  .wds-nudge-media-gift-box {
140
112
  margin-inline-start: -22px;
141
113
  margin-block-start: 6px;
142
114
  position: absolute;
143
115
  inline-size: 129px;
144
116
  }
145
- [dir="rtl"] .wds-nudge-media-gift-box {
146
- transform: scaleX(-1);
147
- }
148
117
  .wds-nudge-media-documents {
149
118
  margin-inline-start: -8px;
150
119
  margin-block-start: 8px;
151
120
  position: absolute;
152
121
  inline-size: 120px;
153
122
  }
154
- [dir="rtl"] .wds-nudge-media-documents {
155
- transform: scaleX(-1);
156
- }
157
123
  .wds-nudge-container {
158
124
  align-items: stretch;
159
125
  display: flex;
@@ -32,6 +32,10 @@
32
32
 
33
33
  &-globe {
34
34
  .media-position(161px, -76px, -5px);
35
+
36
+ [dir="rtl"] & {
37
+ .media-position(161px, -63px, -15px);
38
+ }
35
39
  }
36
40
 
37
41
  &-lock {
@@ -129,8 +133,4 @@
129
133
  margin-top: @margin-top;
130
134
  position: absolute;
131
135
  width: @size;
132
-
133
- [dir="rtl"] & {
134
- transform: scaleX(-1);
135
- }
136
136
  }
@@ -10,28 +10,45 @@ export default {
10
10
 
11
11
  type Story = StoryObj<typeof Nudge>;
12
12
 
13
+ const MEDIA_NAMES = [
14
+ 'globe',
15
+ 'lock',
16
+ 'wallet',
17
+ 'gear',
18
+ 'invite-letter',
19
+ 'personal-card',
20
+ 'business-card',
21
+ 'heart',
22
+ 'multi-currency',
23
+ 'shopping-bag',
24
+ 'flower',
25
+ 'gift-box',
26
+ 'backpack',
27
+ 'documents',
28
+ ] as const;
29
+
13
30
  export const RTLDiff: Story = {
14
31
  render: () => (
15
32
  <>
33
+ {MEDIA_NAMES.map((mediaName) => (
34
+ <Nudge
35
+ key={mediaName}
36
+ mediaName={mediaName}
37
+ title={mediaName}
38
+ link="Link"
39
+ href="#"
40
+ onDismiss={() => {}}
41
+ />
42
+ ))}
16
43
  <Nudge
17
44
  mediaName="globe"
18
- title="With media and dismiss"
19
- link="Link"
20
- href="#"
21
- onDismiss={() => {}}
22
- />
23
- <div style={{ marginTop: 16 }} />
24
- <Nudge
25
- mediaName="globe"
26
- title="With media, action, and dismiss"
45
+ title="With action"
27
46
  action={{ text: 'Learn more', href: '#' }}
28
47
  onDismiss={() => {}}
29
48
  />
30
- <div style={{ marginTop: 16 }} />
31
49
  <Nudge title="Without media, with dismiss" link="Link" href="#" onDismiss={() => {}} />
32
- <div style={{ marginTop: 16 }} />
33
50
  <Nudge title="Without media, no dismiss" link="Link" href="#" />
34
51
  </>
35
52
  ),
36
- ...withRTLDiff(),
53
+ ...withRTLDiff({ width: 'stretch' }),
37
54
  };