@transferwise/components 0.0.0-experimental-53c607c → 0.0.0-experimental-b002e6f

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 (130) 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 +97 -74
  6. package/build/button/Button.js.map +1 -1
  7. package/build/button/Button.mjs +98 -75
  8. package/build/button/Button.mjs.map +1 -1
  9. package/build/common/action/Action.js +1 -1
  10. package/build/common/action/Action.js.map +1 -1
  11. package/build/common/action/Action.mjs +1 -1
  12. package/build/common/action/Action.mjs.map +1 -1
  13. package/build/criticalBanner/CriticalCommsBanner.js +2 -2
  14. package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
  15. package/build/criticalBanner/CriticalCommsBanner.mjs +1 -1
  16. package/build/definitionList/DefinitionList.js.map +1 -1
  17. package/build/definitionList/DefinitionList.mjs.map +1 -1
  18. package/build/header/Header.js +2 -2
  19. package/build/header/Header.js.map +1 -1
  20. package/build/header/Header.mjs +1 -1
  21. package/build/index.js +2 -2
  22. package/build/index.mjs +1 -1
  23. package/build/link/Link.js +3 -8
  24. package/build/link/Link.js.map +1 -1
  25. package/build/link/Link.mjs +3 -8
  26. package/build/link/Link.mjs.map +1 -1
  27. package/build/main.css +0 -269
  28. package/build/nudge/Nudge.js +1 -1
  29. package/build/nudge/Nudge.js.map +1 -1
  30. package/build/nudge/Nudge.mjs +1 -1
  31. package/build/nudge/Nudge.mjs.map +1 -1
  32. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.js +3 -1
  33. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.js.map +1 -1
  34. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.mjs +3 -1
  35. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.mjs.map +1 -1
  36. package/build/primitives/PrimitiveButton/src/PrimitiveButton.js +4 -1
  37. package/build/primitives/PrimitiveButton/src/PrimitiveButton.js.map +1 -1
  38. package/build/primitives/PrimitiveButton/src/PrimitiveButton.mjs +4 -1
  39. package/build/primitives/PrimitiveButton/src/PrimitiveButton.mjs.map +1 -1
  40. package/build/select/Select.js +3 -5
  41. package/build/select/Select.js.map +1 -1
  42. package/build/select/Select.mjs +2 -4
  43. package/build/select/Select.mjs.map +1 -1
  44. package/build/styles/avatarLayout/AvatarLayout.css +0 -11
  45. package/build/styles/button/Button.css +16 -251
  46. package/build/styles/main.css +0 -269
  47. package/build/types/avatarLayout/AvatarLayout.d.ts +2 -1
  48. package/build/types/avatarLayout/AvatarLayout.d.ts.map +1 -1
  49. package/build/types/avatarLayout/index.d.ts +0 -1
  50. package/build/types/avatarLayout/index.d.ts.map +1 -1
  51. package/build/types/button/Button.d.ts +23 -1
  52. package/build/types/button/Button.d.ts.map +1 -1
  53. package/build/types/button/index.d.ts +2 -2
  54. package/build/types/button/index.d.ts.map +1 -1
  55. package/build/types/definitionList/DefinitionList.d.ts +1 -2
  56. package/build/types/definitionList/DefinitionList.d.ts.map +1 -1
  57. package/build/types/link/Link.d.ts +2 -2
  58. package/build/types/link/Link.d.ts.map +1 -1
  59. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.d.ts.map +1 -1
  60. package/build/types/primitives/PrimitiveButton/src/PrimitiveButton.d.ts.map +1 -1
  61. package/build/types/select/Select.d.ts.map +1 -1
  62. package/build/types/test-utils/index.d.ts.map +1 -1
  63. package/build/upload/steps/completeStep/completeStep.js +2 -2
  64. package/build/upload/steps/completeStep/completeStep.js.map +1 -1
  65. package/build/upload/steps/completeStep/completeStep.mjs +1 -1
  66. package/build/upload/steps/processingStep/processingStep.js +2 -2
  67. package/build/upload/steps/processingStep/processingStep.js.map +1 -1
  68. package/build/upload/steps/processingStep/processingStep.mjs +1 -1
  69. package/build/uploadInput/UploadInput.js +3 -3
  70. package/build/uploadInput/UploadInput.js.map +1 -1
  71. package/build/uploadInput/UploadInput.mjs +1 -1
  72. package/package.json +3 -3
  73. package/src/avatarLayout/AvatarLayout.css +0 -11
  74. package/src/avatarLayout/AvatarLayout.less +1 -18
  75. package/src/avatarLayout/AvatarLayout.tsx +3 -11
  76. package/src/avatarLayout/index.ts +0 -1
  77. package/src/avatarWrapper/AvatarWrapper.story.tsx +0 -2
  78. package/src/button/Button.css +16 -251
  79. package/src/button/Button.less +14 -214
  80. package/src/button/Button.spec.tsx +231 -54
  81. package/src/button/Button.story.tsx +136 -287
  82. package/src/button/Button.tsx +131 -86
  83. package/src/button/__snapshots__/{LegacyButton.spec.tsx.snap → Button.spec.tsx.snap} +22 -22
  84. package/src/button/index.ts +3 -2
  85. package/src/common/action/Action.tsx +1 -1
  86. package/src/definitionList/DefinitionList.story.tsx +57 -57
  87. package/src/definitionList/DefinitionList.tsx +1 -1
  88. package/src/flowNavigation/__snapshots__/FlowNavigation.spec.js.snap +1 -1
  89. package/src/iconButton/IconButton.less +1 -1
  90. package/src/inputs/SelectInput.story.tsx +1 -1
  91. package/src/link/Link.tsx +6 -15
  92. package/src/main.css +0 -269
  93. package/src/main.less +0 -1
  94. package/src/nudge/Nudge.tsx +1 -1
  95. package/src/primitives/PrimitiveAnchor/src/PrimitiveAnchor.tsx +7 -1
  96. package/src/primitives/PrimitiveAnchor/stories/PrimitiveAnchor.story.tsx +1 -1
  97. package/src/primitives/PrimitiveAnchor/test/PrimitiveAnchor.spec.tsx +3 -1
  98. package/src/primitives/PrimitiveButton/src/PrimitiveButton.tsx +8 -1
  99. package/src/primitives/PrimitiveButton/stories/PrimitiveButton.story.tsx +1 -1
  100. package/src/primitives/PrimitiveButton/test/PrimitiveButton.spec.tsx +5 -2
  101. package/src/select/Select.tsx +0 -1
  102. package/src/slidingPanel/SlidingPanel.spec.tsx +69 -0
  103. package/src/test-utils/index.tsx +1 -0
  104. package/build/button/Button.resolver.js +0 -67
  105. package/build/button/Button.resolver.js.map +0 -1
  106. package/build/button/Button.resolver.mjs +0 -65
  107. package/build/button/Button.resolver.mjs.map +0 -1
  108. package/build/button/LegacyButton.js +0 -114
  109. package/build/button/LegacyButton.js.map +0 -1
  110. package/build/button/LegacyButton.mjs +0 -112
  111. package/build/button/LegacyButton.mjs.map +0 -1
  112. package/build/styles/button/Button.vars.css +0 -57
  113. package/build/styles/button/LegacyButton.css +0 -23
  114. package/build/types/button/Button.resolver.d.ts +0 -31
  115. package/build/types/button/Button.resolver.d.ts.map +0 -1
  116. package/build/types/button/Button.types.d.ts +0 -50
  117. package/build/types/button/Button.types.d.ts.map +0 -1
  118. package/build/types/button/LegacyButton.d.ts +0 -30
  119. package/build/types/button/LegacyButton.d.ts.map +0 -1
  120. package/src/button/Button.resolver.tsx +0 -113
  121. package/src/button/Button.types.ts +0 -70
  122. package/src/button/Button.vars.css +0 -57
  123. package/src/button/Button.vars.less +0 -71
  124. package/src/button/LegacyButton.css +0 -23
  125. package/src/button/LegacyButton.less +0 -24
  126. package/src/button/LegacyButton.spec.tsx +0 -245
  127. package/src/button/LegacyButton.story.tsx +0 -224
  128. package/src/button/LegacyButton.tsx +0 -161
  129. package/src/definitionList/DefinitionList.spec.js +0 -91
  130. package/src/slidingPanel/SlidingPanel.spec.js +0 -56
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) * 2 - var(--np-avatar-offset) - 2px);
535
527
  height: var(--np-avatar-layout-size);
@@ -543,9 +535,6 @@ div.critical-comms .critical-comms-body {
543
535
  .np-avatar-layout-horizontal-child {
544
536
  margin-left: calc(var(--np-avatar-offset) * -1);
545
537
  }
546
- [dir="rtl"] .np-avatar-layout-horizontal-child {
547
- margin-right: calc(var(--np-avatar-offset) * -1);
548
- }
549
538
  .np-icon-button {
550
539
  border: none;
551
540
  }
@@ -716,264 +705,6 @@ div.critical-comms .critical-comms-body {
716
705
  .np-btn.disabled[class] {
717
706
  pointer-events: auto;
718
707
  }
719
- :root {
720
- --Button-background: var(--color-interactive-accent);
721
- --Button-background-hover: var(--color-interactive-accent-hover);
722
- --Button-background-active: var(--color-interactive-accent-active);
723
- --Button-color: var(--color-interactive-control);
724
- --Button-padding: var(--size-8) var(--size-12);
725
- --Button-border-radius: var(--radius-full);
726
- --Button-font-size: var(--font-size-16);
727
- --Button-line-height: var(--size-24);
728
- --Button-font-weight: var(--font-weight-semi-bold);
729
- --Button-letter-spacing: -0.011em;
730
- --Button-size-small-padding: 5px var(--size-12);
731
- --Button-size-medium-padding: var(--size-8) var(--size-12);
732
- --Button-size-large-padding: var(--size-12) var(--size-16);
733
- --Button-avatar-border-color: var(--color-border-neutral);
734
- --Button-secondary-background: var(--color-interactive-neutral);
735
- --Button-secondary-background-hover: var(--color-interactive-neutral-hover);
736
- --Button-secondary-background-active: var(--color-interactive-neutral-active);
737
- --Button-secondary-color: var(--color-interactive-primary);
738
- --Button-tertiary-background: var(--color-background-neutral);
739
- --Button-tertiary-background-hover: var(--color-background-neutral-hover);
740
- --Button-tertiary-background-active: var(--color-background-neutral-active);
741
- --Button-tertiary-color: var(--color-content-primary);
742
- --Button-minimal-background: transparent;
743
- --Button-minimal-background-hover: var(--color-background-screen-hover);
744
- --Button-minimal-background-active: var(--color-background-screen-active);
745
- --Button-minimal-color: var(--color-interactive-primary);
746
- --Button-primary-negative-background: var(--color-sentiment-negative-primary);
747
- --Button-primary-negative-background-hover: var(--color-sentiment-negative-primary-hover);
748
- --Button-primary-negative-background-active: var(--color-sentiment-negative-primary-active);
749
- --Button-primary-negative-color: var(--color-contrast);
750
- --Button-primary-netative-avatar-border-color: rgba(255,255,255,0.2);
751
- --Button-secondary-negative-background: var(--color-sentiment-negative-secondary);
752
- --Button-secondary-negative-background-hover: var(--color-sentiment-negative-secondary-hover);
753
- --Button-secondary-negative-background-active: var(--color-sentiment-negative-secondary-active);
754
- --Button-secondary-negative-color: var(--color-sentiment-negative-primary);
755
- --Button-secondary-netative-avatar-border-color: rgba(168,32,13,0.12157);
756
- }
757
- .np-theme-personal--dark .wds-Button {
758
- --Button-primary-netative-avatar-border-color: rgba(14,15,12,0.12157);
759
- }
760
- .np-theme-personal--forest-green .wds-Button {
761
- --color-interactive-neutral: rgba(159,232,112,0.2);
762
- --color-interactive-neutral-hover: rgba(205,255,173,0.2);
763
- --color-interactive-neutral-active: rgba(236,255,224,0.2);
764
- --color-sentiment-negative-secondary: rgba(255,196,194,0.2);
765
- --color-sentiment-negative-secondary-hover: rgba(255,220,219,0.2);
766
- --color-sentiment-negative-secondary-active: rgba(255,235,235,0.2);
767
- --Button-primary-netative-avatar-border-color: rgba(14,15,12,0.12157);
768
- --Button-secondary-netative-avatar-border-color: rgba(14,15,12,0.12157);
769
- }
770
- .np-theme-personal--bright-green .wds-Button {
771
- --color-contrast: #FFFFFF;
772
- --Button-secondary-color: var(--color-interactive-control);
773
- --Button-secondary-negative-color: var(--color-contrast);
774
- --Button-secondary-netative-avatar-border-color: var(--Button-primary-netative-avatar-border-color);
775
- }
776
- /* Button Styles */
777
- .wds-Button {
778
- display: inline-flex;
779
- flex: none;
780
- width: auto;
781
- align-items: center;
782
- justify-content: center;
783
- vertical-align: middle;
784
- font-weight: 600;
785
- font-weight: var(--Button-font-weight);
786
- font-size: 1rem;
787
- font-size: var(--Button-font-size);
788
- letter-spacing: -0.011em;
789
- letter-spacing: var(--Button-letter-spacing);
790
- line-height: 24px;
791
- line-height: var(--Button-line-height);
792
- text-align: center;
793
- -webkit-text-decoration: none;
794
- text-decoration: none;
795
- white-space: nowrap;
796
- word-wrap: break-word;
797
- -webkit-appearance: none;
798
- -moz-appearance: none;
799
- appearance: none;
800
- background-color: #00a2dd;
801
- background-color: var(--Button-background);
802
- border: none;
803
- border-radius: 9999px;
804
- border-radius: var(--Button-border-radius);
805
- color: var(--Button-color);
806
- cursor: pointer;
807
- padding: 8px 12px;
808
- padding: var(--Button-padding);
809
- }
810
- .wds-Button:focus {
811
- -webkit-text-decoration: none;
812
- text-decoration: none;
813
- }
814
- .wds-Button:hover {
815
- background-color: #008fc9;
816
- background-color: var(--Button-background-hover);
817
- -webkit-text-decoration: none;
818
- text-decoration: none;
819
- }
820
- .wds-Button:active {
821
- background-color: #0081ba;
822
- background-color: var(--Button-background-active);
823
- -webkit-text-decoration: none;
824
- text-decoration: none;
825
- }
826
- .wds-Button.wds-Button--disabled,
827
- .wds-Button:disabled {
828
- mix-blend-mode: luminosity;
829
- opacity: 0.45;
830
- cursor: not-allowed;
831
- }
832
- .wds-Button.wds-Button--disabled:hover,
833
- .wds-Button:disabled:hover,
834
- .wds-Button.wds-Button--disabled:active,
835
- .wds-Button:disabled:active {
836
- background-color: #00a2dd;
837
- background-color: var(--Button-background);
838
- }
839
- .wds-Button--secondary {
840
- --Button-background: var(--Button-secondary-background);
841
- --Button-background-hover: var(--Button-secondary-background-hover);
842
- --Button-background-active: var(--Button-secondary-background-active);
843
- --Button-color: var(--Button-secondary-color);
844
- }
845
- .wds-Button--tertiary {
846
- --Button-background: var(--Button-tertiary-background);
847
- --Button-background-hover: var(--Button-tertiary-background-hover);
848
- --Button-background-active: var(--Button-tertiary-background-active);
849
- --Button-color: var(--Button-tertiary-color);
850
- }
851
- .wds-Button--tertiary .wds-Button-icon--end {
852
- color: var(--color-interactive-primary);
853
- }
854
- .wds-Button--minimal {
855
- --Button-background: var(--Button-minimal-background);
856
- --Button-background-hover: var(--Button-minimal-background-hover);
857
- --Button-background-active: var(--Button-minimal-background-active);
858
- --Button-color: var(--Button-minimal-color);
859
- -webkit-text-decoration: underline;
860
- text-decoration: underline;
861
- text-underline-offset: 3px;
862
- text-decoration-thickness: 1px;
863
- }
864
- .wds-Button--minimal:hover,
865
- .wds-Button--minimal:hover:active {
866
- -webkit-text-decoration: underline;
867
- text-decoration: underline;
868
- }
869
- .wds-Button--negative.wds-Button--primary {
870
- --Button-background: var(--Button-primary-negative-background);
871
- --Button-background-hover: var(--Button-primary-negative-background-hover);
872
- --Button-background-active: var(--Button-primary-negative-background-active);
873
- --Button-color: var(--Button-primary-negative-color);
874
- --Button-avatar-border-color: var(--Button-primary-netative-avatar-border-color);
875
- }
876
- .wds-Button--negative.wds-Button--secondary {
877
- --Button-background: var(--Button-secondary-negative-background);
878
- --Button-background-hover: var(--Button-secondary-negative-background-hover);
879
- --Button-background-active: var(--Button-secondary-negative-background-active);
880
- --Button-color: var(--Button-secondary-negative-color);
881
- --Button-avatar-border-color: var(--Button-secondary-netative-avatar-border-color);
882
- }
883
- .wds-Button--small {
884
- --Button-padding: var(--Button-size-small-padding);
885
- --Button-line-height: 22px;
886
- --Button-font-size: var(--font-size-14);
887
- --Button-letter-spacing: -0.006em;
888
- }
889
- .wds-Button--small .wds-Button-icon--start {
890
- margin-right: 4px;
891
- margin-right: var(--size-4);
892
- }
893
- [dir="rtl"] .wds-Button--small .wds-Button-icon--start {
894
- margin-right: 0;
895
- margin-left: 4px;
896
- margin-left: var(--size-4);
897
- }
898
- .wds-Button--medium {
899
- --Button-padding: var(--Button-size-medium-padding);
900
- }
901
- .wds-Button--large {
902
- --Button-padding: var(--Button-size-large-padding);
903
- }
904
- .wds-Button--block {
905
- width: 100%;
906
- }
907
- .wds-Button-avatars {
908
- display: inline-flex;
909
- margin-right: 5px;
910
- margin-left: calc(4px * -1);
911
- margin-left: calc(var(--size-4) * -1);
912
- }
913
- [dir="rtl"] .wds-Button-avatars {
914
- margin-right: 0;
915
- margin-left: 5px;
916
- }
917
- .wds-Button-avatars .np-circle {
918
- --circle-border-color: var(--Button-avatar-border-color);
919
- }
920
- .wds-Button-avatars .np-avatar-view .np-avatar-view-content {
921
- color: var(--Button-color);
922
- }
923
- .wds-Button-icon {
924
- display: inline-block;
925
- }
926
- .wds-Button-icon--start {
927
- margin-right: 8px;
928
- margin-right: var(--size-8);
929
- }
930
- [dir="rtl"] .wds-Button-icon--start {
931
- margin-right: 0;
932
- margin-left: 8px;
933
- margin-left: var(--size-8);
934
- }
935
- .wds-Button-icon--end {
936
- margin-left: 4px;
937
- margin-left: var(--size-4);
938
- }
939
- [dir="rtl"] .wds-Button-icon--end {
940
- margin-left: 0;
941
- margin-right: 4px;
942
- margin-right: var(--size-4);
943
- }
944
- .wds-Button-content {
945
- position: relative;
946
- }
947
- .wds-Button-content--loading .wds-Button-label,
948
- .wds-Button-content--loading .wds-Button-media,
949
- .wds-Button-content--loading .wds-Button-icon {
950
- visibility: hidden;
951
- opacity: 0;
952
- }
953
- .wds-Button-label {
954
- display: flex;
955
- justify-content: center;
956
- align-items: center;
957
- position: relative;
958
- }
959
- .wds-Button-loader {
960
- position: absolute;
961
- display: flex;
962
- justify-content: center;
963
- align-items: center;
964
- width: 100%;
965
- height: 100%;
966
- }
967
- .wds-Button-loader .process-circle {
968
- stroke: var(--Button-color);
969
- }
970
- /* RTL Styles */
971
- [dir="rtl"] .wds-Button .tw-icon-chevron-right,[dir="rtl"] .wds-Button .tw-icon-arrow-right {
972
- transform: rotate(180deg);
973
- }
974
- [dir="rtl"] .wds-Button .tw-icon-chevron-left,[dir="rtl"] .wds-Button .tw-icon-arrow-left {
975
- transform: rotate(180deg);
976
- }
977
708
  .np-card {
978
709
  overflow: hidden;
979
710
  transition-property: transform, box-shadow;
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";
@@ -154,7 +154,7 @@ const Nudge = ({
154
154
  </Body>
155
155
  {link && (
156
156
  <Link
157
- href={href ?? '#'}
157
+ href={href}
158
158
  type={Typography.LINK_LARGE}
159
159
  className="wds-nudge-link"
160
160
  onClick={onClick}
@@ -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>) => {
@@ -1,6 +1,6 @@
1
1
  import { Meta, StoryObj } from '@storybook/react';
2
2
  import { fn } from '@storybook/test';
3
- import PrimitiveAnchor from '../src';
3
+ import PrimitiveAnchor from '..';
4
4
 
5
5
  export default {
6
6
  component: PrimitiveAnchor,
@@ -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>) => {
@@ -1,6 +1,6 @@
1
1
  import { Meta, StoryObj } from '@storybook/react';
2
2
  import { fn } from '@storybook/test';
3
- import PrimitiveButton from '../src';
3
+ import PrimitiveButton from '..';
4
4
 
5
5
  export default {
6
6
  component: PrimitiveButton,
@@ -1,5 +1,6 @@
1
- import { screen } from '@testing-library/react';
2
- import PrimitiveButton from '../src';
1
+ import { fireEvent, screen } from '@testing-library/react';
2
+ import { userEvent } from '@testing-library/user-event';
3
+ import PrimitiveButton from '..';
3
4
  import messages from '../../../i18n/commonMessages/Button.messages';
4
5
  import { render } from '../../../test-utils';
5
6
 
@@ -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,6 +49,7 @@ 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
 
@@ -573,7 +573,6 @@ export default function Select({
573
573
  aria-controls={listboxId}
574
574
  aria-expanded={open}
575
575
  onClick={handleOnClick}
576
- // @ts-expect-error Spread types may only be created from object types.
577
576
  {...buttonProps}
578
577
  >
579
578
  {selected ? (
@@ -0,0 +1,69 @@
1
+ import { render, screen } from '../test-utils';
2
+ import SlidingPanel, { SlidingPanelProps } from './SlidingPanel';
3
+
4
+ describe('SlidingPanel', () => {
5
+ const initialProps: SlidingPanelProps = {
6
+ open: true,
7
+ children: <div data-testid="content">Content</div>,
8
+ testId: 'wrapper',
9
+ };
10
+
11
+ const customRender = (overrides: Partial<SlidingPanelProps> = {}) =>
12
+ render(<SlidingPanel {...initialProps} {...overrides} />);
13
+
14
+ describe('open', () => {
15
+ it('should respect open=false', () => {
16
+ customRender({ open: false });
17
+ expect(screen.queryByTestId('wrapper')).not.toBeInTheDocument();
18
+ });
19
+
20
+ it('should respect open=true', () => {
21
+ customRender();
22
+ expect(screen.getByTestId('wrapper')).toBeInTheDocument();
23
+ });
24
+ });
25
+
26
+ describe('position', () => {
27
+ it(`should default to 'left'`, () => {
28
+ customRender();
29
+ expect(screen.queryByTestId('wrapper')).toHaveClass(`sliding-panel--open-left`);
30
+ });
31
+
32
+ (['left', 'right', 'top', 'bottom'] as const).forEach((position) => {
33
+ describe(position, () => {
34
+ it(`should add the classname`, () => {
35
+ customRender({ position });
36
+ expect(screen.queryByTestId('wrapper')).toHaveClass(`sliding-panel--open-${position}`);
37
+ });
38
+
39
+ it(`should add the classname for 'showSlidingPanelBorder'`, () => {
40
+ customRender({ position, showSlidingPanelBorder: true });
41
+ expect(screen.queryByTestId('wrapper')).toHaveClass(`sliding-panel--border-${position}`);
42
+ });
43
+ });
44
+ });
45
+ });
46
+
47
+ it('should render children', () => {
48
+ customRender();
49
+ expect(screen.getByTestId('content')).toBeInTheDocument();
50
+ });
51
+
52
+ it('should respect className', () => {
53
+ const className = 'customClass';
54
+ customRender({ className });
55
+ expect(screen.getByTestId('wrapper')).toHaveClass(className);
56
+ });
57
+
58
+ describe('slidingPanelPositionFixed', () => {
59
+ it('should not be fixed by default', () => {
60
+ customRender();
61
+ expect(screen.getByTestId('wrapper')).not.toHaveClass('sliding-panel--fixed');
62
+ });
63
+
64
+ it('should respect slidingPanelPositionFixed=true', () => {
65
+ customRender({ slidingPanelPositionFixed: true });
66
+ expect(screen.getByTestId('wrapper')).toHaveClass('sliding-panel--fixed');
67
+ });
68
+ });
69
+ });
@@ -1,5 +1,6 @@
1
1
  import { ReactElement, FC } from 'react';
2
2
  import { render, renderHook } from '@testing-library/react';
3
+ import { renderToString } from 'react-dom/server';
3
4
  import { userEvent } from '@testing-library/user-event';
4
5
 
5
6
  import { Provider } from '..';
@@ -1,67 +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
- as,
14
- ...newProps
15
- } = props;
16
- const priorityMapping = {
17
- accent: {
18
- primary: 'primary',
19
- secondary: 'tertiary',
20
- tertiary: 'minimal'
21
- },
22
- positive: {
23
- primary: 'primary',
24
- secondary: 'tertiary',
25
- tertiary: 'tertiary'
26
- },
27
- negative: {
28
- primary: 'primary',
29
- secondary: 'secondary',
30
- tertiary: 'secondary'
31
- }
32
- };
33
- const mappedPriority = type && priority ? priorityMapping[type]?.[priority] || priority : priority || null;
34
- const mappedAppearance = type === 'negative' ? 'negative' : null;
35
- const legacyButtonTypes = ['accent', 'negative', 'positive', 'primary', 'pay', 'secondary', 'danger', 'link'];
36
- return {
37
- ...newProps,
38
- size: size === 'xs' || size === 'sm' ? 'sm' : size === 'md' ? 'md' : size === 'lg' ? 'lg' : size,
39
- priority: mappedPriority,
40
- appearance: mappedAppearance || ('appearance' in props ? props.appearance : null),
41
- type: type && !legacyButtonTypes.includes(type) ? type : props.htmlType || null,
42
- href: as === 'a' ? props.href || '' : null
43
- };
44
- };
45
- const Button = /*#__PURE__*/React.forwardRef((props, ref) => {
46
- const {
47
- useNewButton,
48
- as,
49
- ...rest
50
- } = props;
51
- if (useNewButton) {
52
- const mappedProps = mapProps(props);
53
- return /*#__PURE__*/jsxRuntime.jsx(Button$1, {
54
- ...mappedProps,
55
- ref: ref,
56
- as: as
57
- });
58
- }
59
- return /*#__PURE__*/jsxRuntime.jsx(LegacyButton, {
60
- ...rest,
61
- ref: ref
62
- });
63
- });
64
- Button.displayName = 'Button';
65
-
66
- module.exports = Button;
67
- //# 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 { ButtonProps as NewButtonProps } from './Button.types';\nimport NewButton from './Button';\n\ntype LegacyButtonType =\n | 'accent'\n | 'negative'\n | 'positive'\n | 'primary'\n | 'pay'\n | 'secondary'\n | 'danger'\n | 'link'\n | null\n | undefined;\n\ntype NewButtonType = 'button' | 'submit' | 'reset' | LegacyButtonType | undefined;\n\ntype CommonButtonProps = {\n href?: string;\n target?: string;\n ref?: React.Ref<HTMLButtonElement | HTMLAnchorElement>;\n};\n\nexport type ButtonProps =\n | (Omit<LegacyButtonProps, 'ref'> &\n CommonButtonProps & {\n priority?: LegacyButtonProps['priority'];\n type?: LegacyButtonType;\n htmlType?: string;\n useNewButton?: false;\n })\n | (Omit<Omit<NewButtonProps, 'type'>, 'ref'> &\n CommonButtonProps & {\n priority?: NewButtonProps['priority'];\n type?: NewButtonType;\n useNewButton: true;\n });\n\nconst mapProps = (props: LegacyButtonProps): NewButtonProps => {\n const { priority, size, type, as, ...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 || null;\n const mappedAppearance = type === 'negative' ? 'negative' : null;\n\n const legacyButtonTypes: LegacyButtonType[] = [\n 'accent',\n 'negative',\n 'positive',\n 'primary',\n 'pay',\n 'secondary',\n 'danger',\n 'link',\n ];\n\n return {\n ...newProps,\n size:\n size === 'xs' || size === 'sm' ? 'sm' : size === 'md' ? 'md' : size === 'lg' ? 'lg' : size,\n priority: mappedPriority,\n appearance: mappedAppearance || ('appearance' in props ? props.appearance : null),\n type:\n type && !legacyButtonTypes.includes(type as LegacyButtonType) ? type : props.htmlType || null,\n href: as === 'a' ? props.href || '' : null,\n } as NewButtonProps;\n};\n\nconst Button = forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>((props, ref) => {\n const { useNewButton, as, ...rest } = props;\n\n if (useNewButton) {\n const mappedProps = mapProps(props as LegacyButtonProps);\n return (\n <NewButton\n {...mappedProps}\n ref={ref as React.Ref<HTMLButtonElement | HTMLAnchorElement>}\n as={as}\n />\n );\n }\n\n return (\n <LegacyButton\n {...(rest as LegacyButtonProps)}\n ref={ref as React.Ref<HTMLButtonElement | HTMLAnchorElement>}\n />\n );\n});\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":["mapProps","props","priority","size","type","as","newProps","priorityMapping","accent","primary","secondary","tertiary","positive","negative","mappedPriority","mappedAppearance","legacyButtonTypes","appearance","includes","htmlType","href","Button","forwardRef","ref","useNewButton","rest","mappedProps","_jsx","NewButton","LegacyButton","displayName"],"mappings":";;;;;;;AAwCA,MAAMA,QAAQ,GAAIC,KAAwB,IAAoB;EAC5D,MAAM;IAAEC,QAAQ;IAAEC,IAAI;IAAEC,IAAI;IAAEC,EAAE;IAAE,GAAGC,QAAAA;AAAU,GAAA,GAAGL,KAAK,CAAA;AAEvD,EAAA,MAAMM,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,GAClBV,IAAI,IAAIF,QAAQ,GAAGK,eAAe,CAACH,IAAI,CAAC,GAAGF,QAAQ,CAAC,IAAIA,QAAQ,GAAGA,QAAQ,IAAI,IAAI,CAAA;EACrF,MAAMa,gBAAgB,GAAGX,IAAI,KAAK,UAAU,GAAG,UAAU,GAAG,IAAI,CAAA;AAEhE,EAAA,MAAMY,iBAAiB,GAAuB,CAC5C,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,CACP,CAAA;EAED,OAAO;AACL,IAAA,GAAGV,QAAQ;IACXH,IAAI,EACFA,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGA,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGA,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGA,IAAI;AAC5FD,IAAAA,QAAQ,EAAEY,cAAc;AACxBG,IAAAA,UAAU,EAAEF,gBAAgB,KAAK,YAAY,IAAId,KAAK,GAAGA,KAAK,CAACgB,UAAU,GAAG,IAAI,CAAC;AACjFb,IAAAA,IAAI,EACFA,IAAI,IAAI,CAACY,iBAAiB,CAACE,QAAQ,CAACd,IAAwB,CAAC,GAAGA,IAAI,GAAGH,KAAK,CAACkB,QAAQ,IAAI,IAAI;IAC/FC,IAAI,EAAEf,EAAE,KAAK,GAAG,GAAGJ,KAAK,CAACmB,IAAI,IAAI,EAAE,GAAG,IAAA;GACrB,CAAA;AACrB,CAAC,CAAA;AAEKC,MAAAA,MAAM,gBAAGC,gBAAU,CAAqD,CAACrB,KAAK,EAAEsB,GAAG,KAAI;EAC3F,MAAM;IAAEC,YAAY;IAAEnB,EAAE;IAAE,GAAGoB,IAAAA;AAAI,GAAE,GAAGxB,KAAK,CAAA;AAE3C,EAAA,IAAIuB,YAAY,EAAE;AAChB,IAAA,MAAME,WAAW,GAAG1B,QAAQ,CAACC,KAA0B,CAAC,CAAA;IACxD,oBACE0B,cAAA,CAACC,QAAS,EAAA;AAAA,MAAA,GACJF,WAAW;AACfH,MAAAA,GAAG,EAAEA,GAAwD;AAC7DlB,MAAAA,EAAE,EAAEA,EAAAA;AAAG,KACP,CAAA,CAAA;AAEN,GAAA;EAEA,oBACEsB,cAAA,CAACE,YAAY,EAAA;AAAA,IAAA,GACNJ,IAA0B;AAC/BF,IAAAA,GAAG,EAAEA,GAAAA;AAAwD,GAAA,CAC7D,CAAA;AAEN,CAAC,EAAC;AAEFF,MAAM,CAACS,WAAW,GAAG,QAAQ;;;;"}
@@ -1,65 +0,0 @@
1
- import { forwardRef } from 'react';
2
- import LegacyButton from './LegacyButton.mjs';
3
- import Button$1 from './Button.mjs';
4
- import { jsx } from 'react/jsx-runtime';
5
-
6
- const mapProps = props => {
7
- const {
8
- priority,
9
- size,
10
- type,
11
- as,
12
- ...newProps
13
- } = props;
14
- const priorityMapping = {
15
- accent: {
16
- primary: 'primary',
17
- secondary: 'tertiary',
18
- tertiary: 'minimal'
19
- },
20
- positive: {
21
- primary: 'primary',
22
- secondary: 'tertiary',
23
- tertiary: 'tertiary'
24
- },
25
- negative: {
26
- primary: 'primary',
27
- secondary: 'secondary',
28
- tertiary: 'secondary'
29
- }
30
- };
31
- const mappedPriority = type && priority ? priorityMapping[type]?.[priority] || priority : priority || null;
32
- const mappedAppearance = type === 'negative' ? 'negative' : null;
33
- const legacyButtonTypes = ['accent', 'negative', 'positive', 'primary', 'pay', 'secondary', 'danger', 'link'];
34
- return {
35
- ...newProps,
36
- size: size === 'xs' || size === 'sm' ? 'sm' : size === 'md' ? 'md' : size === 'lg' ? 'lg' : size,
37
- priority: mappedPriority,
38
- appearance: mappedAppearance || ('appearance' in props ? props.appearance : null),
39
- type: type && !legacyButtonTypes.includes(type) ? type : props.htmlType || null,
40
- href: as === 'a' ? props.href || '' : null
41
- };
42
- };
43
- const Button = /*#__PURE__*/forwardRef((props, ref) => {
44
- const {
45
- useNewButton,
46
- as,
47
- ...rest
48
- } = props;
49
- if (useNewButton) {
50
- const mappedProps = mapProps(props);
51
- return /*#__PURE__*/jsx(Button$1, {
52
- ...mappedProps,
53
- ref: ref,
54
- as: as
55
- });
56
- }
57
- return /*#__PURE__*/jsx(LegacyButton, {
58
- ...rest,
59
- ref: ref
60
- });
61
- });
62
- Button.displayName = 'Button';
63
-
64
- export { Button as default };
65
- //# sourceMappingURL=Button.resolver.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Button.resolver.mjs","sources":["../../src/button/Button.resolver.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport LegacyButton, { LegacyButtonProps } from './LegacyButton';\nimport { ButtonProps as NewButtonProps } from './Button.types';\nimport NewButton from './Button';\n\ntype LegacyButtonType =\n | 'accent'\n | 'negative'\n | 'positive'\n | 'primary'\n | 'pay'\n | 'secondary'\n | 'danger'\n | 'link'\n | null\n | undefined;\n\ntype NewButtonType = 'button' | 'submit' | 'reset' | LegacyButtonType | undefined;\n\ntype CommonButtonProps = {\n href?: string;\n target?: string;\n ref?: React.Ref<HTMLButtonElement | HTMLAnchorElement>;\n};\n\nexport type ButtonProps =\n | (Omit<LegacyButtonProps, 'ref'> &\n CommonButtonProps & {\n priority?: LegacyButtonProps['priority'];\n type?: LegacyButtonType;\n htmlType?: string;\n useNewButton?: false;\n })\n | (Omit<Omit<NewButtonProps, 'type'>, 'ref'> &\n CommonButtonProps & {\n priority?: NewButtonProps['priority'];\n type?: NewButtonType;\n useNewButton: true;\n });\n\nconst mapProps = (props: LegacyButtonProps): NewButtonProps => {\n const { priority, size, type, as, ...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 || null;\n const mappedAppearance = type === 'negative' ? 'negative' : null;\n\n const legacyButtonTypes: LegacyButtonType[] = [\n 'accent',\n 'negative',\n 'positive',\n 'primary',\n 'pay',\n 'secondary',\n 'danger',\n 'link',\n ];\n\n return {\n ...newProps,\n size:\n size === 'xs' || size === 'sm' ? 'sm' : size === 'md' ? 'md' : size === 'lg' ? 'lg' : size,\n priority: mappedPriority,\n appearance: mappedAppearance || ('appearance' in props ? props.appearance : null),\n type:\n type && !legacyButtonTypes.includes(type as LegacyButtonType) ? type : props.htmlType || null,\n href: as === 'a' ? props.href || '' : null,\n } as NewButtonProps;\n};\n\nconst Button = forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>((props, ref) => {\n const { useNewButton, as, ...rest } = props;\n\n if (useNewButton) {\n const mappedProps = mapProps(props as LegacyButtonProps);\n return (\n <NewButton\n {...mappedProps}\n ref={ref as React.Ref<HTMLButtonElement | HTMLAnchorElement>}\n as={as}\n />\n );\n }\n\n return (\n <LegacyButton\n {...(rest as LegacyButtonProps)}\n ref={ref as React.Ref<HTMLButtonElement | HTMLAnchorElement>}\n />\n );\n});\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":["mapProps","props","priority","size","type","as","newProps","priorityMapping","accent","primary","secondary","tertiary","positive","negative","mappedPriority","mappedAppearance","legacyButtonTypes","appearance","includes","htmlType","href","Button","forwardRef","ref","useNewButton","rest","mappedProps","_jsx","NewButton","LegacyButton","displayName"],"mappings":";;;;;AAwCA,MAAMA,QAAQ,GAAIC,KAAwB,IAAoB;EAC5D,MAAM;IAAEC,QAAQ;IAAEC,IAAI;IAAEC,IAAI;IAAEC,EAAE;IAAE,GAAGC,QAAAA;AAAU,GAAA,GAAGL,KAAK,CAAA;AAEvD,EAAA,MAAMM,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,GAClBV,IAAI,IAAIF,QAAQ,GAAGK,eAAe,CAACH,IAAI,CAAC,GAAGF,QAAQ,CAAC,IAAIA,QAAQ,GAAGA,QAAQ,IAAI,IAAI,CAAA;EACrF,MAAMa,gBAAgB,GAAGX,IAAI,KAAK,UAAU,GAAG,UAAU,GAAG,IAAI,CAAA;AAEhE,EAAA,MAAMY,iBAAiB,GAAuB,CAC5C,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,CACP,CAAA;EAED,OAAO;AACL,IAAA,GAAGV,QAAQ;IACXH,IAAI,EACFA,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGA,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGA,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGA,IAAI;AAC5FD,IAAAA,QAAQ,EAAEY,cAAc;AACxBG,IAAAA,UAAU,EAAEF,gBAAgB,KAAK,YAAY,IAAId,KAAK,GAAGA,KAAK,CAACgB,UAAU,GAAG,IAAI,CAAC;AACjFb,IAAAA,IAAI,EACFA,IAAI,IAAI,CAACY,iBAAiB,CAACE,QAAQ,CAACd,IAAwB,CAAC,GAAGA,IAAI,GAAGH,KAAK,CAACkB,QAAQ,IAAI,IAAI;IAC/FC,IAAI,EAAEf,EAAE,KAAK,GAAG,GAAGJ,KAAK,CAACmB,IAAI,IAAI,EAAE,GAAG,IAAA;GACrB,CAAA;AACrB,CAAC,CAAA;AAEKC,MAAAA,MAAM,gBAAGC,UAAU,CAAqD,CAACrB,KAAK,EAAEsB,GAAG,KAAI;EAC3F,MAAM;IAAEC,YAAY;IAAEnB,EAAE;IAAE,GAAGoB,IAAAA;AAAI,GAAE,GAAGxB,KAAK,CAAA;AAE3C,EAAA,IAAIuB,YAAY,EAAE;AAChB,IAAA,MAAME,WAAW,GAAG1B,QAAQ,CAACC,KAA0B,CAAC,CAAA;IACxD,oBACE0B,GAAA,CAACC,QAAS,EAAA;AAAA,MAAA,GACJF,WAAW;AACfH,MAAAA,GAAG,EAAEA,GAAwD;AAC7DlB,MAAAA,EAAE,EAAEA,EAAAA;AAAG,KACP,CAAA,CAAA;AAEN,GAAA;EAEA,oBACEsB,GAAA,CAACE,YAAY,EAAA;AAAA,IAAA,GACNJ,IAA0B;AAC/BF,IAAAA,GAAG,EAAEA,GAAAA;AAAwD,GAAA,CAC7D,CAAA;AAEN,CAAC,EAAC;AAEFF,MAAM,CAACS,WAAW,GAAG,QAAQ;;;;"}