@transferwise/components 0.0.0-experimental-d73d39f → 0.0.0-experimental-807a5a3

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 (116) hide show
  1. package/build/common/hooks/useContainerSize.js +30 -0
  2. package/build/common/hooks/useContainerSize.js.map +1 -0
  3. package/build/common/hooks/useContainerSize.mjs +28 -0
  4. package/build/common/hooks/useContainerSize.mjs.map +1 -0
  5. package/build/common/hooks/useResizeObserver.js +3 -3
  6. package/build/common/hooks/useResizeObserver.js.map +1 -1
  7. package/build/common/hooks/useResizeObserver.mjs +3 -3
  8. package/build/common/hooks/useResizeObserver.mjs.map +1 -1
  9. package/build/field/Field.js +3 -2
  10. package/build/field/Field.js.map +1 -1
  11. package/build/field/Field.mjs +3 -2
  12. package/build/field/Field.mjs.map +1 -1
  13. package/build/i18n/en.json +2 -0
  14. package/build/i18n/en.json.js +2 -0
  15. package/build/i18n/en.json.js.map +1 -1
  16. package/build/i18n/en.json.mjs +2 -0
  17. package/build/i18n/en.json.mjs.map +1 -1
  18. package/build/index.js +2 -0
  19. package/build/index.js.map +1 -1
  20. package/build/index.mjs +1 -0
  21. package/build/index.mjs.map +1 -1
  22. package/build/listItem/Prompt/ListItemPrompt.js +3 -2
  23. package/build/listItem/Prompt/ListItemPrompt.js.map +1 -1
  24. package/build/listItem/Prompt/ListItemPrompt.mjs +3 -2
  25. package/build/listItem/Prompt/ListItemPrompt.mjs.map +1 -1
  26. package/build/main.css +164 -29
  27. package/build/prompt/ActionPrompt/ActionPrompt.js +8 -40
  28. package/build/prompt/ActionPrompt/ActionPrompt.js.map +1 -1
  29. package/build/prompt/ActionPrompt/ActionPrompt.mjs +8 -40
  30. package/build/prompt/ActionPrompt/ActionPrompt.mjs.map +1 -1
  31. package/build/prompt/CriticalBanner/CriticalBanner.js +142 -0
  32. package/build/prompt/CriticalBanner/CriticalBanner.js.map +1 -0
  33. package/build/prompt/CriticalBanner/CriticalBanner.mjs +140 -0
  34. package/build/prompt/CriticalBanner/CriticalBanner.mjs.map +1 -0
  35. package/build/prompt/CriticalBanner/helpers.js +29 -0
  36. package/build/prompt/CriticalBanner/helpers.js.map +1 -0
  37. package/build/prompt/CriticalBanner/helpers.mjs +26 -0
  38. package/build/prompt/CriticalBanner/helpers.mjs.map +1 -0
  39. package/build/prompt/PrimitivePrompt/PrimitivePrompt.js +11 -4
  40. package/build/prompt/PrimitivePrompt/PrimitivePrompt.js.map +1 -1
  41. package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs +11 -4
  42. package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs.map +1 -1
  43. package/build/prompt/common/Expander/Expander.js +35 -0
  44. package/build/prompt/common/Expander/Expander.js.map +1 -0
  45. package/build/prompt/common/Expander/Expander.messages.js +17 -0
  46. package/build/prompt/common/Expander/Expander.messages.js.map +1 -0
  47. package/build/prompt/common/Expander/Expander.messages.mjs +13 -0
  48. package/build/prompt/common/Expander/Expander.messages.mjs.map +1 -0
  49. package/build/prompt/common/Expander/Expander.mjs +33 -0
  50. package/build/prompt/common/Expander/Expander.mjs.map +1 -0
  51. package/build/prompt/helpers/promptMedia.js +52 -0
  52. package/build/prompt/helpers/promptMedia.js.map +1 -0
  53. package/build/prompt/helpers/promptMedia.mjs +50 -0
  54. package/build/prompt/helpers/promptMedia.mjs.map +1 -0
  55. package/build/styles/main.css +164 -29
  56. package/build/styles/prompt/CriticalBanner/CriticalBanner.css +108 -0
  57. package/build/styles/prompt/CriticalBanner/CriticalBanner.vars.css +0 -0
  58. package/build/styles/prompt/common/Expander/Expander.css +8 -0
  59. package/build/typeahead/Typeahead.js +3 -2
  60. package/build/typeahead/Typeahead.js.map +1 -1
  61. package/build/typeahead/Typeahead.mjs +3 -2
  62. package/build/typeahead/Typeahead.mjs.map +1 -1
  63. package/build/types/common/hooks/useContainerSize.d.ts +14 -0
  64. package/build/types/common/hooks/useContainerSize.d.ts.map +1 -0
  65. package/build/types/common/hooks/useResizeObserver.d.ts +1 -1
  66. package/build/types/common/hooks/useResizeObserver.d.ts.map +1 -1
  67. package/build/types/index.d.ts +2 -2
  68. package/build/types/index.d.ts.map +1 -1
  69. package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts +2 -11
  70. package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts.map +1 -1
  71. package/build/types/prompt/CriticalBanner/CriticalBanner.d.ts +39 -0
  72. package/build/types/prompt/CriticalBanner/CriticalBanner.d.ts.map +1 -0
  73. package/build/types/prompt/CriticalBanner/helpers.d.ts +18 -0
  74. package/build/types/prompt/CriticalBanner/helpers.d.ts.map +1 -0
  75. package/build/types/prompt/CriticalBanner/index.d.ts +3 -0
  76. package/build/types/prompt/CriticalBanner/index.d.ts.map +1 -0
  77. package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts +35 -3
  78. package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts.map +1 -1
  79. package/build/types/prompt/common/Expander/Expander.d.ts +20 -0
  80. package/build/types/prompt/common/Expander/Expander.d.ts.map +1 -0
  81. package/build/types/prompt/common/Expander/Expander.messages.d.ts +14 -0
  82. package/build/types/prompt/common/Expander/Expander.messages.d.ts.map +1 -0
  83. package/build/types/prompt/helpers/promptMedia.d.ts +22 -0
  84. package/build/types/prompt/helpers/promptMedia.d.ts.map +1 -0
  85. package/build/types/prompt/index.d.ts +2 -0
  86. package/build/types/prompt/index.d.ts.map +1 -1
  87. package/build/types/test-utils/index.d.ts +4 -0
  88. package/build/types/test-utils/index.d.ts.map +1 -1
  89. package/package.json +3 -3
  90. package/src/common/hooks/useContainerSize.test.tsx +121 -0
  91. package/src/common/hooks/useContainerSize.ts +32 -0
  92. package/src/common/hooks/useResizeObserver.ts +3 -2
  93. package/src/i18n/en.json +2 -0
  94. package/src/index.ts +2 -2
  95. package/src/main.css +164 -29
  96. package/src/main.less +3 -1
  97. package/src/prompt/ActionPrompt/ActionPrompt.tsx +9 -62
  98. package/src/prompt/CriticalBanner/CriticalBanner.accessibility.docs.mdx +113 -0
  99. package/src/prompt/CriticalBanner/CriticalBanner.css +108 -0
  100. package/src/prompt/CriticalBanner/CriticalBanner.less +127 -0
  101. package/src/prompt/CriticalBanner/CriticalBanner.story.tsx +633 -0
  102. package/src/prompt/CriticalBanner/CriticalBanner.test.story.tsx +422 -0
  103. package/src/prompt/CriticalBanner/CriticalBanner.tsx +178 -0
  104. package/src/prompt/CriticalBanner/CriticalBanner.vars.css +0 -0
  105. package/src/prompt/CriticalBanner/CriticalBanner.vars.less +6 -0
  106. package/src/prompt/CriticalBanner/helpers.ts +39 -0
  107. package/src/prompt/CriticalBanner/index.ts +2 -0
  108. package/src/prompt/PrimitivePrompt/PrimitivePrompt.tsx +56 -40
  109. package/src/prompt/common/Expander/Expander.css +8 -0
  110. package/src/prompt/common/Expander/Expander.less +9 -0
  111. package/src/prompt/common/Expander/Expander.messages.ts +14 -0
  112. package/src/prompt/common/Expander/Expander.test.tsx +167 -0
  113. package/src/prompt/common/Expander/Expander.tsx +83 -0
  114. package/src/prompt/helpers/promptMedia.tsx +79 -0
  115. package/src/prompt/index.ts +4 -0
  116. package/src/sentimentSurface/SentimentSurface.story.tsx +43 -17
@@ -0,0 +1,108 @@
1
+ .wds-critical-banner {
2
+ --Prompt-padding: var(--size-16);
3
+ --Prompt-actions-gap: var(--size-8);
4
+ --Prompt-gap: var(--size-10) var(--size-16);
5
+ --Prompt-border-radius: 0;
6
+ container-type: inline-size;
7
+ --critical-banner-easing: cubic-bezier(0.9, 0, 0.7, 1);
8
+ --critical-banner-duration: 150ms;
9
+ /* Override PrimitivePrompt's --screen-sm-max actions behaviour:
10
+ actions only go full-width below mobile-max token (container query) */
11
+ }
12
+ .wds-critical-banner--media-image {
13
+ width: 48px;
14
+ width: var(--size-48);
15
+ height: 48px;
16
+ height: var(--size-48);
17
+ -o-object-fit: contain;
18
+ object-fit: contain;
19
+ }
20
+ .wds-critical-banner--collapsed .wds-critical-banner__title {
21
+ display: -webkit-box;
22
+ -webkit-line-clamp: 2;
23
+ line-clamp: 2;
24
+ -webkit-box-orient: vertical;
25
+ overflow: hidden;
26
+ }
27
+ .wds-critical-banner__description {
28
+ max-height: 30vh;
29
+ opacity: 1;
30
+ overflow: hidden;
31
+ transition: max-height var(--critical-banner-duration) var(--critical-banner-easing), opacity var(--critical-banner-duration) var(--critical-banner-easing);
32
+ }
33
+ .wds-critical-banner--collapsed .wds-critical-banner__description--with-title {
34
+ max-height: 0;
35
+ opacity: 0;
36
+ }
37
+ .wds-critical-banner--collapsed .wds-critical-banner__description:not(.wds-critical-banner__description--with-title) {
38
+ display: -webkit-box;
39
+ -webkit-line-clamp: 2;
40
+ line-clamp: 2;
41
+ -webkit-box-orient: vertical;
42
+ overflow: hidden;
43
+ }
44
+ .wds-critical-banner .wds-prompt__content-wrapper {
45
+ grid-template-columns: auto 1fr auto;
46
+ align-items: flex-start;
47
+ transition: row-gap var(--critical-banner-duration) var(--critical-banner-easing);
48
+ }
49
+ .wds-critical-banner--collapsed .wds-prompt__content-wrapper {
50
+ row-gap: 0;
51
+ }
52
+ .wds-critical-banner__text-wrapper {
53
+ display: flex;
54
+ flex-direction: column;
55
+ justify-content: center;
56
+ min-width: 0;
57
+ max-width: 480px;
58
+ height: 100%;
59
+ }
60
+ .wds-critical-banner__toggle {
61
+ flex-shrink: 0;
62
+ transition: transform var(--critical-banner-duration) var(--critical-banner-easing);
63
+ }
64
+ .wds-critical-banner__toggle--collapsed {
65
+ transform: rotate(180deg);
66
+ }
67
+ @container (min-width: 768px) {
68
+ .wds-critical-banner__toggle {
69
+ display: none;
70
+ }
71
+ }
72
+ .wds-critical-banner .wds-prompt__actions-wrapper {
73
+ grid-column-start: 2;
74
+ grid-column-end: 3;
75
+ max-height: 200px;
76
+ opacity: 1;
77
+ overflow: visible;
78
+ }
79
+ @container (max-width: 480px) {
80
+ .wds-critical-banner .wds-prompt__actions-wrapper {
81
+ grid-column: span 3;
82
+ width: 100%;
83
+ }
84
+ .wds-critical-banner .wds-prompt__actions-wrapper .wds-Button {
85
+ flex: 1 1 100%;
86
+ width: 100%;
87
+ }
88
+ }
89
+ .wds-critical-banner--collapsed .wds-prompt__actions-wrapper {
90
+ max-height: 0;
91
+ opacity: 0;
92
+ overflow: hidden;
93
+ pointer-events: none;
94
+ }
95
+ @container (max-width: 480px) {
96
+ .wds-critical-banner--with-two-actions .wds-prompt__actions-wrapper .wds-Button {
97
+ flex: 1 1 calc(50% - (var(--Prompt-actions-gap) / 2));
98
+ min-width: -moz-fit-content;
99
+ min-width: fit-content;
100
+ }
101
+ }
102
+ @media (prefers-reduced-motion: reduce) {
103
+ .wds-critical-banner__description,
104
+ .wds-critical-banner .wds-prompt__content-wrapper,
105
+ .wds-critical-banner__toggle {
106
+ transition: none !important;
107
+ }
108
+ }
@@ -0,0 +1,127 @@
1
+ @import (reference) "./CriticalBanner.vars.less";
2
+
3
+ .wds-critical-banner {
4
+ --Prompt-padding: var(--size-16);
5
+ --Prompt-actions-gap: var(--size-8);
6
+ --Prompt-gap: var(--size-10) var(--size-16);
7
+ --Prompt-border-radius: 0;
8
+ container-type: inline-size;
9
+
10
+ // Animation variables
11
+ --critical-banner-easing: cubic-bezier(0.9, 0, 0.7, 1);
12
+ --critical-banner-duration: 150ms;
13
+
14
+ &--media-image {
15
+ width: var(--size-48);
16
+ height: var(--size-48);
17
+ object-fit: contain;
18
+ }
19
+
20
+ &--collapsed &__title {
21
+ display: -webkit-box;
22
+ -webkit-line-clamp: 2;
23
+ line-clamp: 2;
24
+ -webkit-box-orient: vertical;
25
+ overflow: hidden;
26
+ }
27
+
28
+ &__description {
29
+ max-height: 30vh;
30
+ opacity: 1;
31
+ overflow: hidden;
32
+ transition:
33
+ max-height var(--critical-banner-duration) var(--critical-banner-easing),
34
+ opacity var(--critical-banner-duration) var(--critical-banner-easing);
35
+ }
36
+
37
+ &--collapsed &__description--with-title {
38
+ max-height: 0;
39
+ opacity: 0;
40
+ }
41
+
42
+ // When collapsed WITHOUT a title: show 2 lines
43
+ &--collapsed &__description:not(&__description--with-title) {
44
+ display: -webkit-box;
45
+ -webkit-line-clamp: 2;
46
+ line-clamp: 2;
47
+ -webkit-box-orient: vertical;
48
+ overflow: hidden;
49
+ }
50
+
51
+ .wds-prompt__content-wrapper {
52
+ grid-template-columns: auto 1fr auto;
53
+ align-items: flex-start;
54
+ transition: row-gap var(--critical-banner-duration) var(--critical-banner-easing);
55
+ }
56
+
57
+ &--collapsed .wds-prompt__content-wrapper {
58
+ row-gap: 0;
59
+ }
60
+
61
+ &__text-wrapper {
62
+ display: flex;
63
+ flex-direction: column;
64
+ justify-content: center;
65
+ min-width: 0;
66
+ max-width: 480px;
67
+ height: 100%;
68
+ }
69
+
70
+ &__toggle {
71
+ flex-shrink: 0;
72
+ transition: transform var(--critical-banner-duration) var(--critical-banner-easing);
73
+
74
+ &--collapsed {
75
+ transform: rotate(180deg);
76
+ }
77
+
78
+ @container (min-width: @wds-critical-banner-cq-collapsible-max) {
79
+ display: none;
80
+ }
81
+ }
82
+
83
+ /* Override PrimitivePrompt's --screen-sm-max actions behaviour:
84
+ actions only go full-width below mobile-max token (container query) */
85
+ .wds-prompt__actions-wrapper {
86
+ grid-column-start: 2;
87
+ grid-column-end: 3;
88
+ max-height: 200px;
89
+ opacity: 1;
90
+ overflow: visible;
91
+
92
+ @container (max-width: @wds-critical-banner-cq-buttons-max) {
93
+ grid-column: span 3;
94
+ width: 100%;
95
+
96
+ .wds-Button {
97
+ flex: 1 1 100%;
98
+ width: 100%;
99
+ }
100
+ }
101
+ }
102
+
103
+ &--collapsed .wds-prompt__actions-wrapper {
104
+ max-height: 0;
105
+ opacity: 0;
106
+ overflow: hidden;
107
+ pointer-events: none;
108
+ }
109
+
110
+ &--with-two-actions .wds-prompt__actions-wrapper {
111
+ @container (max-width: @wds-critical-banner-cq-buttons-max) {
112
+ .wds-Button {
113
+ flex: 1 1 calc(50% - (var(--Prompt-actions-gap) / 2));
114
+ min-width: fit-content;
115
+ }
116
+ }
117
+ }
118
+ }
119
+
120
+ // Reduced motion support
121
+ @media (prefers-reduced-motion: reduce) {
122
+ .wds-critical-banner__description,
123
+ .wds-critical-banner .wds-prompt__content-wrapper,
124
+ .wds-critical-banner__toggle {
125
+ transition: none !important;
126
+ }
127
+ }