@transferwise/components 0.0.0-experimental-db4013c → 0.0.0-experimental-bd6f8cc

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 (118) hide show
  1. package/build/avatarLayout/AvatarLayout.js +2 -9
  2. package/build/avatarLayout/AvatarLayout.js.map +1 -1
  3. package/build/avatarLayout/AvatarLayout.mjs +2 -9
  4. package/build/avatarLayout/AvatarLayout.mjs.map +1 -1
  5. package/build/button/Button.js +79 -84
  6. package/build/button/Button.js.map +1 -1
  7. package/build/button/Button.mjs +80 -85
  8. package/build/button/Button.mjs.map +1 -1
  9. package/build/criticalBanner/CriticalCommsBanner.js +2 -2
  10. package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
  11. package/build/criticalBanner/CriticalCommsBanner.mjs +1 -1
  12. package/build/header/Header.js +2 -2
  13. package/build/header/Header.js.map +1 -1
  14. package/build/header/Header.mjs +1 -1
  15. package/build/index.js +2 -2
  16. package/build/index.mjs +1 -1
  17. package/build/link/Link.js +3 -8
  18. package/build/link/Link.js.map +1 -1
  19. package/build/link/Link.mjs +3 -8
  20. package/build/link/Link.mjs.map +1 -1
  21. package/build/main.css +11 -226
  22. package/build/nudge/Nudge.js.map +1 -1
  23. package/build/nudge/Nudge.mjs.map +1 -1
  24. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.js +4 -2
  25. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.js.map +1 -1
  26. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.mjs +4 -2
  27. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.mjs.map +1 -1
  28. package/build/primitives/PrimitiveButton/src/PrimitiveButton.js +5 -3
  29. package/build/primitives/PrimitiveButton/src/PrimitiveButton.js.map +1 -1
  30. package/build/primitives/PrimitiveButton/src/PrimitiveButton.mjs +5 -3
  31. package/build/primitives/PrimitiveButton/src/PrimitiveButton.mjs.map +1 -1
  32. package/build/select/Select.js +2 -2
  33. package/build/select/Select.js.map +1 -1
  34. package/build/select/Select.mjs +1 -1
  35. package/build/styles/avatarLayout/AvatarLayout.css +0 -11
  36. package/build/styles/button/Button.css +15 -207
  37. package/build/styles/main.css +11 -226
  38. package/build/styles/nudge/Nudge.css +11 -0
  39. package/build/types/avatarLayout/AvatarLayout.d.ts.map +1 -1
  40. package/build/types/button/Button.d.ts +23 -2
  41. package/build/types/button/Button.d.ts.map +1 -1
  42. package/build/types/button/index.d.ts +2 -2
  43. package/build/types/button/index.d.ts.map +1 -1
  44. package/build/types/link/Link.d.ts +2 -2
  45. package/build/types/link/Link.d.ts.map +1 -1
  46. package/build/types/nudge/Nudge.d.ts +1 -1
  47. package/build/types/nudge/Nudge.d.ts.map +1 -1
  48. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.d.ts.map +1 -1
  49. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.d.ts +2 -6
  50. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.d.ts.map +1 -1
  51. package/build/types/primitives/PrimitiveButton/src/PrimitiveButton.d.ts.map +1 -1
  52. package/build/types/test-utils/story-config.d.ts +1 -1
  53. package/build/types/test-utils/story-config.d.ts.map +1 -1
  54. package/build/upload/steps/completeStep/completeStep.js +2 -2
  55. package/build/upload/steps/completeStep/completeStep.js.map +1 -1
  56. package/build/upload/steps/completeStep/completeStep.mjs +1 -1
  57. package/build/upload/steps/processingStep/processingStep.js +2 -2
  58. package/build/upload/steps/processingStep/processingStep.js.map +1 -1
  59. package/build/upload/steps/processingStep/processingStep.mjs +1 -1
  60. package/build/uploadInput/UploadInput.js +3 -3
  61. package/build/uploadInput/UploadInput.js.map +1 -1
  62. package/build/uploadInput/UploadInput.mjs +1 -1
  63. package/package.json +3 -3
  64. package/src/alert/Alert.tests.story.tsx +1 -1
  65. package/src/avatarLayout/AvatarLayout.css +0 -11
  66. package/src/avatarLayout/AvatarLayout.less +1 -18
  67. package/src/avatarLayout/AvatarLayout.tsx +2 -10
  68. package/src/button/Button.css +15 -207
  69. package/src/button/Button.less +14 -214
  70. package/src/button/Button.spec.tsx +224 -188
  71. package/src/button/Button.story.tsx +135 -701
  72. package/src/button/Button.tsx +131 -97
  73. package/src/button/__snapshots__/Button.spec.tsx.snap +309 -0
  74. package/src/button/index.ts +3 -2
  75. package/src/field/Field.story.tsx +1 -1
  76. package/src/flowNavigation/__snapshots__/FlowNavigation.spec.js.snap +2 -1
  77. package/src/inputs/SelectInput.story.tsx +1 -1
  78. package/src/label/Label.story.tsx +1 -1
  79. package/src/link/Link.tsx +6 -15
  80. package/src/main.css +11 -226
  81. package/src/main.less +0 -1
  82. package/src/nudge/Nudge.css +11 -0
  83. package/src/nudge/Nudge.less +3 -0
  84. package/src/nudge/Nudge.story.tsx +10 -0
  85. package/src/nudge/Nudge.tsx +2 -1
  86. package/src/primitives/PrimitiveAnchor/src/PrimitiveAnchor.tsx +8 -2
  87. package/src/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.ts +2 -7
  88. package/src/primitives/PrimitiveAnchor/test/PrimitiveAnchor.spec.tsx +3 -1
  89. package/src/primitives/PrimitiveButton/src/PrimitiveButton.tsx +12 -4
  90. package/src/primitives/PrimitiveButton/test/PrimitiveButton.spec.tsx +13 -16
  91. package/src/test-utils/Parameters.d.ts +1 -9
  92. package/src/test-utils/story-config.ts +1 -10
  93. package/build/button/Button.resolver.js +0 -74
  94. package/build/button/Button.resolver.js.map +0 -1
  95. package/build/button/Button.resolver.mjs +0 -72
  96. package/build/button/Button.resolver.mjs.map +0 -1
  97. package/build/button/LegacyButton.js +0 -114
  98. package/build/button/LegacyButton.js.map +0 -1
  99. package/build/button/LegacyButton.mjs +0 -112
  100. package/build/button/LegacyButton.mjs.map +0 -1
  101. package/build/styles/button/Button.vars.css +0 -46
  102. package/build/styles/button/LegacyButton.css +0 -23
  103. package/build/types/button/Button.resolver.d.ts +0 -33
  104. package/build/types/button/Button.resolver.d.ts.map +0 -1
  105. package/build/types/button/Button.types.d.ts +0 -67
  106. package/build/types/button/Button.types.d.ts.map +0 -1
  107. package/build/types/button/LegacyButton.d.ts +0 -30
  108. package/build/types/button/LegacyButton.d.ts.map +0 -1
  109. package/src/button/Button.resolver.tsx +0 -73
  110. package/src/button/Button.tests.story.tsx +0 -27
  111. package/src/button/Button.types.ts +0 -94
  112. package/src/button/Button.vars.css +0 -46
  113. package/src/button/Button.vars.less +0 -60
  114. package/src/button/LegacyButton.css +0 -23
  115. package/src/button/LegacyButton.less +0 -24
  116. package/src/button/LegacyButton.spec.tsx +0 -147
  117. package/src/button/LegacyButton.story.tsx +0 -220
  118. package/src/button/LegacyButton.tsx +0 -160
package/src/main.css CHANGED
@@ -518,18 +518,10 @@ div.critical-comms .critical-comms-body {
518
518
  -webkit-mask-image: radial-gradient(circle at bottom calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)) right calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)), transparent 0, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
519
519
  mask-image: radial-gradient(circle at bottom calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)) right calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)), transparent 0, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
520
520
  }
521
- [dir="rtl"] .np-avatar-layout-diagonal-mask {
522
- -webkit-mask-image: radial-gradient(circle at bottom calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)) left calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)), transparent 0, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
523
- mask-image: radial-gradient(circle at bottom calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)) left calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)), transparent 0, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
524
- }
525
521
  .np-avatar-layout-diagonal-child {
526
522
  margin-left: calc(var(--np-avatar-layout-size) - var(--np-avatar-size) * 2);
527
523
  margin-top: calc(var(--np-avatar-layout-size) - var(--np-avatar-size));
528
524
  }
529
- [dir="rtl"] .np-avatar-layout-diagonal-child {
530
- margin-left: 0;
531
- margin-right: calc(var(--np-avatar-layout-size) - var(--np-avatar-size) * 2);
532
- }
533
525
  .np-avatar-layout-horizontal {
534
526
  width: calc(var(--np-avatar-size) * var(--np-avatar-avatars-count) - (var(--np-avatar-offset) * (var(--np-avatar-avatars-count) - 1)));
535
527
  width: calc(var(--np-avatar-size) * var(--np-avatar-avatars-count) - calc(var(--np-avatar-offset) * calc(var(--np-avatar-avatars-count) - 1)));
@@ -544,9 +536,6 @@ div.critical-comms .critical-comms-body {
544
536
  .np-avatar-layout-horizontal-child {
545
537
  margin-left: calc(var(--np-avatar-offset) * -1);
546
538
  }
547
- [dir="rtl"] .np-avatar-layout-horizontal-child {
548
- margin-right: calc(var(--np-avatar-offset) * -1);
549
- }
550
539
  .np-icon-button {
551
540
  border: none;
552
541
  }
@@ -717,221 +706,6 @@ div.critical-comms .critical-comms-body {
717
706
  .np-btn.disabled[class] {
718
707
  pointer-events: auto;
719
708
  }
720
- .wds-Button {
721
- --Button-background: var(--color-interactive-accent);
722
- --Button-background-hover: var(--color-interactive-accent-hover);
723
- --Button-background-active: var(--color-interactive-accent-active);
724
- --Button-color: var(--color-interactive-control);
725
- --Button-border-radius: var(--radius-full);
726
- --Button-label-gap: var(--size-4);
727
- --Button-large-padding: var(--size-12) var(--size-16);
728
- --Button-medium-padding: var(--size-8) var(--size-12);
729
- --Button-small-padding: calc(var(--size-10) * 0.5) var(--size-12);
730
- --Button-avatar-border-color: var(--color-border-neutral);
731
- --Button-transition-duration: 150ms;
732
- --Button-transition-easing: ease-in-out;
733
- --Button-secondary-background: var(--color-interactive-neutral);
734
- --Button-secondary-background-hover: var(--color-interactive-neutral-hover);
735
- --Button-secondary-background-active: var(--color-interactive-neutral-active);
736
- --Button-secondary-color: var(--color-interactive-primary);
737
- --Button-tertiary-background: var(--color-background-neutral);
738
- --Button-tertiary-background-hover: var(--color-background-neutral-hover);
739
- --Button-tertiary-background-active: var(--color-background-neutral-active);
740
- --Button-tertiary-color: var(--color-content-primary);
741
- --Button-minimal-background: transparent;
742
- --Button-minimal-background-hover: var(--color-background-screen-hover);
743
- --Button-minimal-background-active: var(--color-background-screen-active);
744
- --Button-minimal-color: var(--color-interactive-primary);
745
- --Button-primary-negative-background: var(--color-sentiment-negative-primary);
746
- --Button-primary-negative-background-hover: var(--color-sentiment-negative-primary-hover);
747
- --Button-primary-negative-background-active: var(--color-sentiment-negative-primary-active);
748
- --Button-primary-negative-color: var(--color-contrast-overlay);
749
- --Button-secondary-negative-background: var(--color-sentiment-negative-secondary);
750
- --Button-secondary-negative-background-hover: var(--color-sentiment-negative-secondary-hover);
751
- --Button-secondary-negative-background-active: var(--color-sentiment-negative-secondary-active);
752
- --Button-secondary-negative-color: var(--color-sentiment-negative-primary);
753
- }
754
- .np-theme-personal--bright-green .wds-Button {
755
- --Button-primary-negative-color: var(--color-white);
756
- --Button-secondary-color: var(--color-interactive-control);
757
- --Button-secondary-negative-color: var(--color-white);
758
- }
759
- .np-theme-personal--forest-green .wds-Button {
760
- --Button-secondary-background: var(--color-interactive-neutral);
761
- --Button-secondary-negative-background: var(--color-sentiment-negative-primary);
762
- --Button-secondary-negative-background-hover: var(--color-sentiment-negative-primary-hover);
763
- --Button-secondary-negative-background-active: var(--color-sentiment-negative-primary-active);
764
- --Button-secondary-negative-color: var(--color-contrast-overlay);
765
- }
766
- /* Button Styles */
767
- .wds-Button {
768
- display: inline-flex;
769
- flex: none;
770
- width: auto;
771
- align-items: center;
772
- justify-content: center;
773
- vertical-align: middle;
774
- text-align: center;
775
- -webkit-text-decoration: none;
776
- text-decoration: none;
777
- white-space: nowrap;
778
- word-wrap: break-word;
779
- -webkit-appearance: none;
780
- -moz-appearance: none;
781
- appearance: none;
782
- background-color: var(--Button-background);
783
- border: none;
784
- border-radius: var(--Button-border-radius);
785
- color: var(--Button-color);
786
- cursor: pointer;
787
- transition: color, background-color var(--Button-transition-duration) var(--Button-transition-easing);
788
- }
789
- .wds-Button:hover {
790
- background-color: var(--Button-background-hover);
791
- }
792
- .wds-Button:active {
793
- background-color: var(--Button-background-active);
794
- }
795
- .wds-Button.wds-Button--disabled,
796
- .wds-Button:disabled {
797
- filter: none;
798
- mix-blend-mode: luminosity;
799
- opacity: 0.45;
800
- cursor: not-allowed;
801
- }
802
- .wds-Button.wds-Button--disabled,
803
- .wds-Button:disabled,
804
- .wds-Button.wds-Button--disabled:hover,
805
- .wds-Button:disabled:hover,
806
- .wds-Button.wds-Button--disabled:active,
807
- .wds-Button:disabled:active {
808
- background-color: var(--Button-background);
809
- }
810
- .wds-Button--secondary {
811
- --Button-background: var(--Button-secondary-background);
812
- --Button-background-hover: var(--Button-secondary-background-hover);
813
- --Button-background-active: var(--Button-secondary-background-active);
814
- --Button-color: var(--Button-secondary-color);
815
- }
816
- .wds-Button--tertiary {
817
- --Button-background: var(--Button-tertiary-background);
818
- --Button-background-hover: var(--Button-tertiary-background-hover);
819
- --Button-background-active: var(--Button-tertiary-background-active);
820
- --Button-color: var(--Button-tertiary-color);
821
- }
822
- .wds-Button--tertiary .wds-Button-icon--end {
823
- color: var(--color-interactive-primary);
824
- }
825
- .wds-Button--minimal {
826
- --Button-background: var(--Button-minimal-background);
827
- --Button-background-hover: var(--Button-minimal-background-hover);
828
- --Button-background-active: var(--Button-minimal-background-active);
829
- --Button-color: var(--Button-minimal-color);
830
- -webkit-text-decoration: underline;
831
- text-decoration: underline;
832
- text-underline-offset: 3px;
833
- text-decoration-thickness: 1px;
834
- }
835
- .wds-Button--negative.wds-Button--primary {
836
- --Button-background: var(--Button-primary-negative-background);
837
- --Button-background-hover: var(--Button-primary-negative-background-hover);
838
- --Button-background-active: var(--Button-primary-negative-background-active);
839
- --Button-color: var(--Button-primary-negative-color);
840
- }
841
- .wds-Button--negative.wds-Button--secondary {
842
- --Button-background: var(--Button-secondary-negative-background);
843
- --Button-background-hover: var(--Button-secondary-negative-background-hover);
844
- --Button-background-active: var(--Button-secondary-negative-background-active);
845
- --Button-color: var(--Button-secondary-negative-color);
846
- }
847
- .wds-Button--large {
848
- padding: var(--Button-large-padding);
849
- }
850
- .wds-Button--medium {
851
- padding: var(--Button-medium-padding);
852
- }
853
- .wds-Button--medium:has(.wds-Button-avatars) {
854
- padding-inline-start: 8px;
855
- padding-inline-start: var(--size-8);
856
- }
857
- .wds-Button--medium:has(.wds-Button-icon--end) {
858
- padding-inline-end: 8px;
859
- padding-inline-end: var(--size-8);
860
- }
861
- .wds-Button--medium .wds-Button-icon--start {
862
- margin-inline-end: var(--Button-label-gap);
863
- }
864
- .wds-Button--small {
865
- padding: var(--Button-small-padding);
866
- }
867
- .wds-Button--small:has(.wds-Button-icon--start) {
868
- padding-inline-start: 8px;
869
- padding-inline-start: var(--size-8);
870
- }
871
- .wds-Button--small:has(.wds-Button-icon--end) {
872
- padding-inline-end: 8px;
873
- padding-inline-end: var(--size-8);
874
- }
875
- .wds-Button--block {
876
- width: 100%;
877
- }
878
- .wds-Button-avatars {
879
- display: inline-flex;
880
- }
881
- .wds-Button-avatars .np-avatar-view .np-avatar-view-content {
882
- color: var(--Button-color);
883
- }
884
- .wds-Button-icon {
885
- display: inline-block;
886
- }
887
- .wds-Button-content {
888
- position: relative;
889
- }
890
- .wds-Button-content--loading .wds-Button-label,
891
- .wds-Button-content--loading .wds-Button-media,
892
- .wds-Button-content--loading .wds-Button-icon {
893
- visibility: hidden;
894
- opacity: 0;
895
- }
896
- .wds-Button-label {
897
- display: flex;
898
- justify-content: center;
899
- align-items: center;
900
- gap: var(--Button-label-gap);
901
- position: relative;
902
- }
903
- .wds-Button-loader {
904
- position: absolute;
905
- width: 100%;
906
- height: 100%;
907
- }
908
- .wds-Button-loader .process-circle {
909
- stroke: var(--Button-color);
910
- }
911
- /* Avatar border transparency */
912
- /* dark buttons get 20% transparency, light buttons get 12% */
913
- .wds-Button-avatars .np-circle {
914
- --circle-border-color: color-mix(in srgb, var(--Button-color) 20%, transparent);
915
- }
916
- .np-theme-personal:not(.np-theme-personal--dark):not(.np-theme-personal--forest-green):not(.np-theme-personal--bright-green) .wds-Button--secondary.wds-Button--negative .wds-Button-avatars .np-circle,
917
- .np-theme-personal:not(.np-theme-personal--dark):not(.np-theme-personal--forest-green):not(.np-theme-personal--bright-green) .wds-Button--secondary .wds-Button-avatars .np-circle,
918
- .np-theme-personal:not(.np-theme-personal--dark):not(.np-theme-personal--forest-green):not(.np-theme-personal--bright-green) .wds-Button--tertiary .wds-Button-avatars .np-circle,
919
- .np-theme-personal:not(.np-theme-personal--dark):not(.np-theme-personal--forest-green):not(.np-theme-personal--bright-green) .wds-Button--minimal .wds-Button-avatars .np-circle {
920
- --circle-border-color: color-mix(in srgb, var(--Button-color) 12%, transparent);
921
- }
922
- .np-theme-personal--dark .wds-Button--primary .wds-Button-avatars .np-circle,
923
- .np-theme-personal--dark .wds-Button--primary.wds-Button--negative .wds-Button-avatars .np-circle,
924
- .np-theme-personal--forest-green .wds-Button--primary .wds-Button-avatars .np-circle,
925
- .np-theme-personal--forest-green .wds-Button--primary.wds-Button--negative .wds-Button-avatars .np-circle {
926
- --circle-border-color: color-mix(in srgb, var(--Button-color) 12%, transparent);
927
- }
928
- .np-theme-personal--bright-green .wds-Button--tertiary .wds-Button-avatars .np-circle,
929
- .np-theme-personal--bright-green .wds-Button--minimal .wds-Button-avatars .np-circle {
930
- --circle-border-color: color-mix(in srgb, var(--Button-color) 12%, transparent);
931
- }
932
- [dir="rtl"] .wds-Button .tw-icon-chevron-right,[dir="rtl"] .wds-Button .tw-icon-arrow-right,[dir="rtl"] .wds-Button .tw-icon-chevron-left,[dir="rtl"] .wds-Button .tw-icon-arrow-left,[dir="rtl"] .wds-Button .tw-icon-arrow-diagonal-down,[dir="rtl"] .wds-Button .tw-icon-arrow-diagonal-up,[dir="rtl"] .wds-Button .tw-icon-list,[dir="rtl"] .wds-Button .tw-icon-activity {
933
- scale: -1 1;
934
- }
935
709
  .np-card {
936
710
  overflow: hidden;
937
711
  transition-property: transform, box-shadow;
@@ -3915,6 +3689,17 @@ html:not([dir="rtl"]) .np-navigation-option {
3915
3689
  margin-left: 0;
3916
3690
  margin-right: 1px;
3917
3691
  }
3692
+ .wds-nudge-media-flower {
3693
+ margin-left: -24px;
3694
+ margin-top: 11px;
3695
+ position: absolute;
3696
+ width: 156px;
3697
+ }
3698
+ [dir="rtl"] .wds-nudge-media-flower {
3699
+ transform: scaleX(-1);
3700
+ margin-left: 0;
3701
+ margin-right: -24px;
3702
+ }
3918
3703
  .wds-nudge-container {
3919
3704
  align-items: stretch;
3920
3705
  display: flex;
package/src/main.less CHANGED
@@ -7,7 +7,6 @@
7
7
  @import "./avatarLayout/AvatarLayout.less";
8
8
  @import "./iconButton/IconButton.less";
9
9
  @import "./badge/Badge.less";
10
- @import "./button/LegacyButton.less";
11
10
  @import "./button/Button.less";
12
11
  @import "./card/Card.less";
13
12
  @import "./carousel/Carousel.less";
@@ -136,6 +136,17 @@
136
136
  margin-left: 0;
137
137
  margin-right: 1px;
138
138
  }
139
+ .wds-nudge-media-flower {
140
+ margin-left: -24px;
141
+ margin-top: 11px;
142
+ position: absolute;
143
+ width: 156px;
144
+ }
145
+ [dir="rtl"] .wds-nudge-media-flower {
146
+ transform: scaleX(-1);
147
+ margin-left: 0;
148
+ margin-right: -24px;
149
+ }
139
150
  .wds-nudge-container {
140
151
  align-items: stretch;
141
152
  display: flex;
@@ -65,6 +65,9 @@
65
65
  &-shopping-bag {
66
66
  .media-position(116px, 1px, 14px);
67
67
  }
68
+ &-flower {
69
+ .media-position(156px, -24px, 11px);
70
+ }
68
71
  }
69
72
 
70
73
  &-container {
@@ -104,6 +104,16 @@ export const Default = () => {
104
104
  onClick={action('action clicked')}
105
105
  onDismiss={action('dismissed')}
106
106
  />
107
+
108
+ <Nudge
109
+ mediaName={Assets.FLOWER}
110
+ className="m-b-2"
111
+ title="Text that is no longer than two lines."
112
+ link="Link"
113
+ href="#"
114
+ onClick={action('action clicked')}
115
+ onDismiss={action('dismissed')}
116
+ />
107
117
  </div>
108
118
  );
109
119
  };
@@ -38,7 +38,8 @@ type MediaNameType =
38
38
  | `${Assets.BUSINESS_CARD}`
39
39
  | `${Assets.HEART}`
40
40
  | `${Assets.MULTI_CURRENCY}`
41
- | `${Assets.SHOPPING_BAG}`;
41
+ | `${Assets.SHOPPING_BAG}`
42
+ | `${Assets.FLOWER}`;
42
43
 
43
44
  type BaseProps = {
44
45
  /** @deprecated use `mediaName` property instead */
@@ -30,7 +30,13 @@ const PrimitiveAnchor = forwardRef<HTMLAnchorElement, PrimitiveAnchorProps>(
30
30
  },
31
31
  ref,
32
32
  ) => {
33
- const anchorClasses = clsx(className);
33
+ const anchorClasses = clsx(
34
+ 'wds-Anchor',
35
+ {
36
+ 'wds-Anchor--disabled': disabled,
37
+ },
38
+ className,
39
+ );
34
40
 
35
41
  const handleClick = useCallback(
36
42
  (event: React.MouseEvent<HTMLAnchorElement>) => {
@@ -90,7 +96,7 @@ const PrimitiveAnchor = forwardRef<HTMLAnchorElement, PrimitiveAnchorProps>(
90
96
  * https://www.scottohara.me/blog/2021/05/28/disabled-links.html
91
97
  */
92
98
  const anchorProps = {
93
- 'aria-disabled': disabled || undefined,
99
+ 'aria-disabled': disabled,
94
100
  className: anchorClasses,
95
101
  'data-testid': testId,
96
102
  href: disabled ? undefined : href,
@@ -13,21 +13,16 @@ export type PrimitiveAnchorElementRef = React.Ref<HTMLAnchorElement>;
13
13
  export interface PrimitiveAnchorProps
14
14
  extends BasePrimitiveProps,
15
15
  StyleProp,
16
- Omit<PrimitiveAnchorAttributes, 'role' | 'type'> {
16
+ Omit<PrimitiveAnchorAttributes, 'role'> {
17
17
  /** Content of the anchor */
18
18
  children?: ReactNode;
19
19
 
20
20
  /** The URL to navigate to when the anchor is clicked */
21
- href?: string | undefined;
21
+ href: string;
22
22
 
23
23
  /** Disable the anchor */
24
24
  disabled?: boolean;
25
25
 
26
26
  /** Reference to the anchor element */
27
27
  ref?: PrimitiveAnchorElementRef;
28
-
29
- /**
30
- * HTML anchor `target` attribute. If set to `_blank`, `rel="noopener noreferrer"` is automatically added to the rendered node.
31
- */
32
- target?: HTMLAnchorElement['target'];
33
28
  }
@@ -1,5 +1,5 @@
1
1
  import { render, screen } from '@testing-library/react';
2
- import PrimitiveAnchor from '../src';
2
+ import PrimitiveAnchor from '..';
3
3
 
4
4
  describe('PrimitiveAnchor', () => {
5
5
  const defaultProps = {
@@ -27,6 +27,7 @@ describe('PrimitiveAnchor', () => {
27
27
  renderAnchor(props);
28
28
 
29
29
  const link = screen.getByRole('link');
30
+ expect(link).toHaveClass('wds-Anchor');
30
31
  expect(link).toHaveClass('custom-class');
31
32
  });
32
33
 
@@ -40,6 +41,7 @@ describe('PrimitiveAnchor', () => {
40
41
 
41
42
  const link = screen.getByRole('link');
42
43
  expect(link).toHaveAttribute('aria-disabled', 'true');
44
+ expect(link).toHaveClass('wds-Anchor--disabled');
43
45
  expect(link).not.toHaveAttribute('href', 'https://example.com');
44
46
  });
45
47
 
@@ -35,7 +35,14 @@ const PrimitiveButton = forwardRef<HTMLButtonElement, PrimitiveButtonProps>(
35
35
  ref,
36
36
  ) => {
37
37
  const intl = useIntl();
38
- const classNames = clsx(className);
38
+ const classNames = clsx(
39
+ 'wds-Button',
40
+ {
41
+ 'wds-Button--disabled': disabled,
42
+ 'wds-Button--loading': loading,
43
+ },
44
+ className,
45
+ );
39
46
 
40
47
  const handleClick = useCallback(
41
48
  (event: React.MouseEvent<HTMLButtonElement>) => {
@@ -95,9 +102,10 @@ const PrimitiveButton = forwardRef<HTMLButtonElement, PrimitiveButtonProps>(
95
102
  * by assistive technologies, set to 'polite' during loading.
96
103
  */
97
104
  const buttonProps = {
98
- 'aria-disabled': loading || undefined,
99
- 'aria-busy': loading || undefined,
100
- 'aria-label': loading ? intl.formatMessage(messages.loadingAriaLabel) : props['aria-label'],
105
+ 'aria-disabled': disabled || loading,
106
+ 'aria-label': loading
107
+ ? intl.formatMessage(messages.loadingAriaLabel as MessageDescriptor)
108
+ : props['aria-label'],
101
109
  'aria-live': (loading ? 'polite' : 'off') as 'polite' | 'off' | 'assertive' | undefined,
102
110
  className: classNames,
103
111
  'data-testid': testId,
@@ -1,7 +1,8 @@
1
- import { screen } from '@testing-library/react';
1
+ import { fireEvent, screen } from '@testing-library/react';
2
+ import { userEvent } from '@testing-library/user-event';
3
+ import PrimitiveButton from '..';
4
+ import messages from '../../../i18n/commonMessages/Button.messages';
2
5
  import { render } from '../../../test-utils';
3
- import PrimitiveButton from '../src';
4
- import allMessages from '../../../i18n';
5
6
 
6
7
  describe('Button', () => {
7
8
  const defaultProps = {
@@ -11,7 +12,7 @@ describe('Button', () => {
11
12
  const renderButton = (
12
13
  props?: Partial<typeof defaultProps>,
13
14
  locale = 'en',
14
- localeMessages = allMessages.en,
15
+ localeMessages = messages,
15
16
  ) => {
16
17
  return render(
17
18
  <PrimitiveButton {...defaultProps} {...props} />,
@@ -35,6 +36,7 @@ describe('Button', () => {
35
36
  renderButton(props);
36
37
 
37
38
  const button = screen.getByRole('button');
39
+ expect(button).toHaveClass('wds-Button');
38
40
  expect(button).toHaveClass('custom-class');
39
41
  });
40
42
 
@@ -47,20 +49,10 @@ describe('Button', () => {
47
49
  renderButton(props);
48
50
 
49
51
  const button = screen.getByRole('button');
52
+ expect(button).toHaveClass('wds-Button--disabled');
50
53
  expect(button).toBeDisabled();
51
54
  });
52
55
 
53
- it('disables and announces the button as busy in loading mode', () => {
54
- const props = {
55
- ...defaultProps,
56
- loading: true,
57
- };
58
-
59
- renderButton(props);
60
-
61
- expect(screen.getByRole('button', { busy: true })).toHaveAttribute('aria-disabled', 'true');
62
- });
63
-
64
56
  it('sets data-testid attribute', () => {
65
57
  const props = {
66
58
  ...defaultProps,
@@ -109,7 +101,12 @@ describe('Button', () => {
109
101
  loading: true,
110
102
  };
111
103
 
112
- renderButton(props, 'es', allMessages.es);
104
+ const spanishMessages = {
105
+ ...messages,
106
+ 'neptune.Button.loadingAriaLabel': 'cargando',
107
+ };
108
+
109
+ renderButton(props, 'es', spanishMessages);
113
110
 
114
111
  const button = screen.getByRole('button');
115
112
  expect(button).toHaveAttribute('aria-label', 'cargando');
@@ -1,15 +1,7 @@
1
1
  declare module '@storybook/react' {
2
2
  interface Parameters {
3
3
  /** Prefer using `storyConfig` for configuring variants */
4
- variants?: (
5
- | 'default'
6
- | 'light'
7
- | 'dark'
8
- | 'bright-green'
9
- | 'forest-green'
10
- | 'rtl'
11
- | (string & Record<string, unknown>)
12
- )[];
4
+ variants?: ('default' | 'light' | 'dark' | 'rtl' | (string & Record<string, unknown>))[];
13
5
  /** Used by Chromatic */
14
6
  chromatic?: ChromaticParameters;
15
7
  viewport?: {
@@ -30,16 +30,7 @@ interface StoryConfig {
30
30
  *
31
31
  * @default undefined
32
32
  */
33
- variants?: (
34
- | 'default'
35
- | 'light'
36
- | 'dark'
37
- | 'bright-green'
38
- | 'forest-green'
39
- | 'rtl'
40
- | 'mobile'
41
- | '400%'
42
- )[];
33
+ variants?: ('default' | 'light' | 'dark' | 'rtl' | 'mobile' | '400%')[];
43
34
  }
44
35
 
45
36
  const getViewportWidth = (viewport: (typeof viewports)[keyof typeof viewports]) => {
@@ -1,74 +0,0 @@
1
- 'use strict';
2
-
3
- var React = require('react');
4
- var LegacyButton = require('./LegacyButton.js');
5
- var Button$1 = require('./Button.js');
6
- var jsxRuntime = require('react/jsx-runtime');
7
-
8
- const mapProps = props => {
9
- const {
10
- priority,
11
- size,
12
- type,
13
- ...newProps
14
- } = props;
15
- const priorityMapping = {
16
- accent: {
17
- primary: 'primary',
18
- secondary: 'tertiary',
19
- tertiary: 'minimal'
20
- },
21
- positive: {
22
- primary: 'primary',
23
- secondary: 'tertiary',
24
- tertiary: 'tertiary'
25
- },
26
- negative: {
27
- primary: 'primary',
28
- secondary: 'secondary',
29
- tertiary: 'secondary'
30
- }
31
- };
32
- const mappedPriority = type && priority ? priorityMapping[type]?.[priority] || priority : priority || undefined;
33
- const mappedSentiment = type === 'negative' ? 'negative' : undefined;
34
- const legacyButtonTypes = ['accent', 'negative', 'positive', 'primary', 'pay', 'secondary', 'danger', 'link'];
35
- const resolveSize = () => {
36
- if (size) {
37
- return {
38
- xs: 'sm',
39
- sm: 'sm',
40
- md: 'md',
41
- lg: 'lg'
42
- }[size] || size;
43
- }
44
- return size;
45
- };
46
- return {
47
- ...newProps,
48
- size: resolveSize(),
49
- priority: mappedPriority,
50
- sentiment: mappedSentiment || ('sentiment' in props ? props.sentiment : null),
51
- type: type && !legacyButtonTypes.includes(type) ? type : props.htmlType || null,
52
- v2: true
53
- };
54
- };
55
- const Button = /*#__PURE__*/React.forwardRef(({
56
- v2 = false,
57
- ...props
58
- }, ref) => {
59
- if (v2) {
60
- const mappedProps = mapProps(props);
61
- return /*#__PURE__*/jsxRuntime.jsx(Button$1, {
62
- ...mappedProps,
63
- ref: ref
64
- });
65
- }
66
- return /*#__PURE__*/jsxRuntime.jsx(LegacyButton, {
67
- ...props,
68
- ref: ref
69
- });
70
- });
71
- Button.displayName = 'Button';
72
-
73
- module.exports = Button;
74
- //# sourceMappingURL=Button.resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Button.resolver.js","sources":["../../src/button/Button.resolver.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport LegacyButton, { LegacyButtonProps } from './LegacyButton';\nimport { ButtonReferenceType, ButtonProps as NewButtonProps } from './Button.types';\nimport NewButton from './Button';\n\nexport type ButtonProps = LegacyButtonProps | NewButtonProps;\n\nconst mapProps = (props: LegacyButtonProps): NewButtonProps => {\n const { priority, size, type, ...newProps } = props;\n\n const priorityMapping: Record<string, Record<string, NewButtonProps['priority']>> = {\n accent: {\n primary: 'primary',\n secondary: 'tertiary',\n tertiary: 'minimal',\n },\n positive: {\n primary: 'primary',\n secondary: 'tertiary',\n tertiary: 'tertiary',\n },\n negative: {\n primary: 'primary',\n secondary: 'secondary',\n tertiary: 'secondary',\n },\n };\n\n const mappedPriority =\n type && priority ? priorityMapping[type]?.[priority] || priority : priority || undefined;\n const mappedSentiment = type === 'negative' ? 'negative' : undefined;\n\n const legacyButtonTypes: LegacyButtonProps['type'][] = [\n 'accent',\n 'negative',\n 'positive',\n 'primary',\n 'pay',\n 'secondary',\n 'danger',\n 'link',\n ];\n\n const resolveSize = () => {\n if (size) {\n return { xs: 'sm', sm: 'sm', md: 'md', lg: 'lg' }[size] || size;\n }\n\n return size;\n };\n\n return {\n ...newProps,\n size: resolveSize(),\n priority: mappedPriority,\n sentiment: mappedSentiment || ('sentiment' in props ? props.sentiment : null),\n type: type && !legacyButtonTypes.includes(type) ? type : props.htmlType || null,\n v2: true,\n } as NewButtonProps;\n};\n\nconst Button = forwardRef<ButtonReferenceType, ButtonProps>(({ v2 = false, ...props }, ref) => {\n if (v2) {\n const mappedProps = mapProps(props as LegacyButtonProps);\n return <NewButton {...mappedProps} ref={ref} />;\n }\n\n return <LegacyButton {...(props as LegacyButtonProps)} ref={ref} />;\n});\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":["mapProps","props","priority","size","type","newProps","priorityMapping","accent","primary","secondary","tertiary","positive","negative","mappedPriority","undefined","mappedSentiment","legacyButtonTypes","resolveSize","xs","sm","md","lg","sentiment","includes","htmlType","v2","Button","forwardRef","ref","mappedProps","_jsx","NewButton","LegacyButton","displayName"],"mappings":";;;;;;;AAOA,MAAMA,QAAQ,GAAIC,KAAwB,IAAoB;EAC5D,MAAM;IAAEC,QAAQ;IAAEC,IAAI;IAAEC,IAAI;IAAE,GAAGC,QAAAA;AAAQ,GAAE,GAAGJ,KAAK,CAAA;AAEnD,EAAA,MAAMK,eAAe,GAA+D;AAClFC,IAAAA,MAAM,EAAE;AACNC,MAAAA,OAAO,EAAE,SAAS;AAClBC,MAAAA,SAAS,EAAE,UAAU;AACrBC,MAAAA,QAAQ,EAAE,SAAA;KACX;AACDC,IAAAA,QAAQ,EAAE;AACRH,MAAAA,OAAO,EAAE,SAAS;AAClBC,MAAAA,SAAS,EAAE,UAAU;AACrBC,MAAAA,QAAQ,EAAE,UAAA;KACX;AACDE,IAAAA,QAAQ,EAAE;AACRJ,MAAAA,OAAO,EAAE,SAAS;AAClBC,MAAAA,SAAS,EAAE,WAAW;AACtBC,MAAAA,QAAQ,EAAE,WAAA;AACX,KAAA;GACF,CAAA;AAED,EAAA,MAAMG,cAAc,GAClBT,IAAI,IAAIF,QAAQ,GAAGI,eAAe,CAACF,IAAI,CAAC,GAAGF,QAAQ,CAAC,IAAIA,QAAQ,GAAGA,QAAQ,IAAIY,SAAS,CAAA;EAC1F,MAAMC,eAAe,GAAGX,IAAI,KAAK,UAAU,GAAG,UAAU,GAAGU,SAAS,CAAA;AAEpE,EAAA,MAAME,iBAAiB,GAAgC,CACrD,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,CACP,CAAA;EAED,MAAMC,WAAW,GAAGA,MAAK;AACvB,IAAA,IAAId,IAAI,EAAE;MACR,OAAO;AAAEe,QAAAA,EAAE,EAAE,IAAI;AAAEC,QAAAA,EAAE,EAAE,IAAI;AAAEC,QAAAA,EAAE,EAAE,IAAI;AAAEC,QAAAA,EAAE,EAAE,IAAA;AAAI,OAAE,CAAClB,IAAI,CAAC,IAAIA,IAAI,CAAA;AACjE,KAAA;AAEA,IAAA,OAAOA,IAAI,CAAA;GACZ,CAAA;EAED,OAAO;AACL,IAAA,GAAGE,QAAQ;IACXF,IAAI,EAAEc,WAAW,EAAE;AACnBf,IAAAA,QAAQ,EAAEW,cAAc;AACxBS,IAAAA,SAAS,EAAEP,eAAe,KAAK,WAAW,IAAId,KAAK,GAAGA,KAAK,CAACqB,SAAS,GAAG,IAAI,CAAC;AAC7ElB,IAAAA,IAAI,EAAEA,IAAI,IAAI,CAACY,iBAAiB,CAACO,QAAQ,CAACnB,IAAI,CAAC,GAAGA,IAAI,GAAGH,KAAK,CAACuB,QAAQ,IAAI,IAAI;AAC/EC,IAAAA,EAAE,EAAE,IAAA;GACa,CAAA;AACrB,CAAC,CAAA;AAED,MAAMC,MAAM,gBAAGC,gBAAU,CAAmC,CAAC;AAAEF,EAAAA,EAAE,GAAG,KAAK;EAAE,GAAGxB,KAAAA;AAAK,CAAE,EAAE2B,GAAG,KAAI;AAC5F,EAAA,IAAIH,EAAE,EAAE;AACN,IAAA,MAAMI,WAAW,GAAG7B,QAAQ,CAACC,KAA0B,CAAC,CAAA;IACxD,oBAAO6B,cAAA,CAACC,QAAS,EAAA;AAAA,MAAA,GAAKF,WAAW;AAAED,MAAAA,GAAG,EAAEA,GAAAA;AAAI,MAAG,CAAA;AACjD,GAAA;EAEA,oBAAOE,cAAA,CAACE,YAAY,EAAA;AAAA,IAAA,GAAM/B,KAA2B;AAAE2B,IAAAA,GAAG,EAAEA,GAAAA;AAAI,IAAG,CAAA;AACrE,CAAC,EAAC;AAEFF,MAAM,CAACO,WAAW,GAAG,QAAQ;;;;"}