@transferwise/components 46.136.1 → 46.137.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) 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/criticalBanner/CriticalCommsBanner.js +3 -0
  10. package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
  11. package/build/criticalBanner/CriticalCommsBanner.mjs +3 -0
  12. package/build/criticalBanner/CriticalCommsBanner.mjs.map +1 -1
  13. package/build/field/Field.js +3 -2
  14. package/build/field/Field.js.map +1 -1
  15. package/build/field/Field.mjs +3 -2
  16. package/build/field/Field.mjs.map +1 -1
  17. package/build/i18n/en.json +2 -0
  18. package/build/i18n/en.json.js +2 -0
  19. package/build/i18n/en.json.js.map +1 -1
  20. package/build/i18n/en.json.mjs +2 -0
  21. package/build/i18n/en.json.mjs.map +1 -1
  22. package/build/index.js +2 -0
  23. package/build/index.js.map +1 -1
  24. package/build/index.mjs +1 -0
  25. package/build/index.mjs.map +1 -1
  26. package/build/listItem/Prompt/ListItemPrompt.js +3 -2
  27. package/build/listItem/Prompt/ListItemPrompt.js.map +1 -1
  28. package/build/listItem/Prompt/ListItemPrompt.mjs +3 -2
  29. package/build/listItem/Prompt/ListItemPrompt.mjs.map +1 -1
  30. package/build/logo/Logo.js +77 -25
  31. package/build/logo/Logo.js.map +1 -1
  32. package/build/logo/Logo.mjs +79 -27
  33. package/build/logo/Logo.mjs.map +1 -1
  34. package/build/logo/logo-assets.js +68 -97
  35. package/build/logo/logo-assets.js.map +1 -1
  36. package/build/logo/logo-assets.mjs +62 -90
  37. package/build/logo/logo-assets.mjs.map +1 -1
  38. package/build/main.css +225 -58
  39. package/build/prompt/ActionPrompt/ActionPrompt.js +8 -40
  40. package/build/prompt/ActionPrompt/ActionPrompt.js.map +1 -1
  41. package/build/prompt/ActionPrompt/ActionPrompt.mjs +8 -40
  42. package/build/prompt/ActionPrompt/ActionPrompt.mjs.map +1 -1
  43. package/build/prompt/CriticalBanner/CriticalBanner.js +143 -0
  44. package/build/prompt/CriticalBanner/CriticalBanner.js.map +1 -0
  45. package/build/prompt/CriticalBanner/CriticalBanner.mjs +141 -0
  46. package/build/prompt/CriticalBanner/CriticalBanner.mjs.map +1 -0
  47. package/build/prompt/CriticalBanner/helpers.js +29 -0
  48. package/build/prompt/CriticalBanner/helpers.js.map +1 -0
  49. package/build/prompt/CriticalBanner/helpers.mjs +26 -0
  50. package/build/prompt/CriticalBanner/helpers.mjs.map +1 -0
  51. package/build/prompt/InfoPrompt/InfoPrompt.js +3 -2
  52. package/build/prompt/InfoPrompt/InfoPrompt.js.map +1 -1
  53. package/build/prompt/InfoPrompt/InfoPrompt.mjs +3 -2
  54. package/build/prompt/InfoPrompt/InfoPrompt.mjs.map +1 -1
  55. package/build/prompt/PrimitivePrompt/PrimitivePrompt.js +11 -4
  56. package/build/prompt/PrimitivePrompt/PrimitivePrompt.js.map +1 -1
  57. package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs +11 -4
  58. package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs.map +1 -1
  59. package/build/prompt/common/Expander/Expander.js +35 -0
  60. package/build/prompt/common/Expander/Expander.js.map +1 -0
  61. package/build/prompt/common/Expander/Expander.messages.js +17 -0
  62. package/build/prompt/common/Expander/Expander.messages.js.map +1 -0
  63. package/build/prompt/common/Expander/Expander.messages.mjs +13 -0
  64. package/build/prompt/common/Expander/Expander.messages.mjs.map +1 -0
  65. package/build/prompt/common/Expander/Expander.mjs +33 -0
  66. package/build/prompt/common/Expander/Expander.mjs.map +1 -0
  67. package/build/prompt/helpers/promptMedia.js +52 -0
  68. package/build/prompt/helpers/promptMedia.js.map +1 -0
  69. package/build/prompt/helpers/promptMedia.mjs +50 -0
  70. package/build/prompt/helpers/promptMedia.mjs.map +1 -0
  71. package/build/styles/logo/Logo.css +3 -23
  72. package/build/styles/main.css +225 -58
  73. package/build/styles/prompt/CriticalBanner/CriticalBanner.css +134 -0
  74. package/build/styles/prompt/CriticalBanner/CriticalBanner.vars.css +0 -0
  75. package/build/styles/prompt/InfoPrompt/InfoPrompt.css +24 -0
  76. package/build/styles/prompt/common/Expander/Expander.css +8 -0
  77. package/build/typeahead/Typeahead.js +3 -2
  78. package/build/typeahead/Typeahead.js.map +1 -1
  79. package/build/typeahead/Typeahead.mjs +3 -2
  80. package/build/typeahead/Typeahead.mjs.map +1 -1
  81. package/build/types/common/hooks/useContainerSize.d.ts +14 -0
  82. package/build/types/common/hooks/useContainerSize.d.ts.map +1 -0
  83. package/build/types/common/hooks/useResizeObserver.d.ts +1 -1
  84. package/build/types/common/hooks/useResizeObserver.d.ts.map +1 -1
  85. package/build/types/criticalBanner/CriticalCommsBanner.d.ts +3 -0
  86. package/build/types/criticalBanner/CriticalCommsBanner.d.ts.map +1 -1
  87. package/build/types/index.d.ts +2 -2
  88. package/build/types/index.d.ts.map +1 -1
  89. package/build/types/logo/Logo.d.ts +33 -1
  90. package/build/types/logo/Logo.d.ts.map +1 -1
  91. package/build/types/logo/logo-assets.d.ts +33 -9
  92. package/build/types/logo/logo-assets.d.ts.map +1 -1
  93. package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts +2 -11
  94. package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts.map +1 -1
  95. package/build/types/prompt/CriticalBanner/CriticalBanner.d.ts +39 -0
  96. package/build/types/prompt/CriticalBanner/CriticalBanner.d.ts.map +1 -0
  97. package/build/types/prompt/CriticalBanner/helpers.d.ts +18 -0
  98. package/build/types/prompt/CriticalBanner/helpers.d.ts.map +1 -0
  99. package/build/types/prompt/CriticalBanner/index.d.ts +3 -0
  100. package/build/types/prompt/CriticalBanner/index.d.ts.map +1 -0
  101. package/build/types/prompt/InfoPrompt/InfoPrompt.d.ts.map +1 -1
  102. package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts +35 -3
  103. package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts.map +1 -1
  104. package/build/types/prompt/common/Expander/Expander.d.ts +20 -0
  105. package/build/types/prompt/common/Expander/Expander.d.ts.map +1 -0
  106. package/build/types/prompt/common/Expander/Expander.messages.d.ts +14 -0
  107. package/build/types/prompt/common/Expander/Expander.messages.d.ts.map +1 -0
  108. package/build/types/prompt/helpers/promptMedia.d.ts +22 -0
  109. package/build/types/prompt/helpers/promptMedia.d.ts.map +1 -0
  110. package/build/types/prompt/index.d.ts +2 -0
  111. package/build/types/prompt/index.d.ts.map +1 -1
  112. package/build/types/test-utils/index.d.ts +4 -0
  113. package/build/types/test-utils/index.d.ts.map +1 -1
  114. package/package.json +6 -6
  115. package/src/common/hooks/useContainerSize.test.tsx +125 -0
  116. package/src/common/hooks/useContainerSize.ts +32 -0
  117. package/src/common/hooks/useResizeObserver.ts +3 -2
  118. package/src/criticalBanner/CriticalCommsBanner.story.tsx +4 -0
  119. package/src/criticalBanner/CriticalCommsBanner.test.story.tsx +1 -1
  120. package/src/criticalBanner/CriticalCommsBanner.tsx +3 -0
  121. package/src/i18n/en.json +2 -0
  122. package/src/index.ts +2 -2
  123. package/src/logo/Logo.css +3 -23
  124. package/src/logo/Logo.less +3 -29
  125. package/src/logo/Logo.story.tsx +117 -89
  126. package/src/logo/Logo.test.story.tsx +15 -24
  127. package/src/logo/Logo.tsx +90 -28
  128. package/src/logo/logo-assets.tsx +36 -92
  129. package/src/main.css +225 -58
  130. package/src/main.less +3 -1
  131. package/src/prompt/ActionPrompt/ActionPrompt.tsx +9 -62
  132. package/src/prompt/CriticalBanner/CriticalBanner.accessibility.docs.mdx +113 -0
  133. package/src/prompt/CriticalBanner/CriticalBanner.css +134 -0
  134. package/src/prompt/CriticalBanner/CriticalBanner.less +155 -0
  135. package/src/prompt/CriticalBanner/CriticalBanner.story.tsx +635 -0
  136. package/src/prompt/CriticalBanner/CriticalBanner.test.story.tsx +422 -0
  137. package/src/prompt/CriticalBanner/CriticalBanner.tsx +179 -0
  138. package/src/prompt/CriticalBanner/CriticalBanner.vars.css +0 -0
  139. package/src/prompt/CriticalBanner/CriticalBanner.vars.less +6 -0
  140. package/src/prompt/CriticalBanner/helpers.ts +39 -0
  141. package/src/prompt/CriticalBanner/index.ts +2 -0
  142. package/src/prompt/InfoPrompt/InfoPrompt.css +24 -0
  143. package/src/prompt/InfoPrompt/InfoPrompt.less +23 -0
  144. package/src/prompt/InfoPrompt/InfoPrompt.tsx +5 -1
  145. package/src/prompt/PrimitivePrompt/PrimitivePrompt.tsx +56 -40
  146. package/src/prompt/common/Expander/Expander.css +8 -0
  147. package/src/prompt/common/Expander/Expander.less +9 -0
  148. package/src/prompt/common/Expander/Expander.messages.ts +14 -0
  149. package/src/prompt/common/Expander/Expander.test.tsx +167 -0
  150. package/src/prompt/common/Expander/Expander.tsx +83 -0
  151. package/src/prompt/helpers/promptMedia.tsx +79 -0
  152. package/src/prompt/index.ts +4 -0
  153. package/src/sentimentSurface/SentimentSurface.story.tsx +43 -17
@@ -0,0 +1,155 @@
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
+ &__title {
21
+ display: -webkit-box;
22
+ -webkit-line-clamp: 8;
23
+ line-clamp: 8;
24
+ -webkit-box-orient: vertical;
25
+ max-height: 192px; // ~8 lines (24px line-height × 8) - balanced for common cases
26
+ overflow: hidden;
27
+ transition: max-height var(--critical-banner-duration) var(--critical-banner-easing);
28
+ }
29
+
30
+ &--collapsed &__title {
31
+ -webkit-line-clamp: 2;
32
+ line-clamp: 2;
33
+ max-height: 48px; // ~2 lines (24px line-height × 2)
34
+ }
35
+
36
+ &__description {
37
+ max-height: 30vh;
38
+ opacity: 1;
39
+ overflow: hidden;
40
+ transition:
41
+ max-height var(--critical-banner-duration) var(--critical-banner-easing),
42
+ opacity var(--critical-banner-duration) var(--critical-banner-easing);
43
+ }
44
+
45
+ &--collapsed &__description--with-title {
46
+ max-height: 0;
47
+ opacity: 0;
48
+ }
49
+
50
+ // When collapsed WITHOUT a title: show 2 lines
51
+ &--collapsed &__description:not(&__description--with-title) {
52
+ display: -webkit-box;
53
+ -webkit-line-clamp: 2;
54
+ line-clamp: 2;
55
+ -webkit-box-orient: vertical;
56
+ overflow: hidden;
57
+ }
58
+
59
+ .wds-prompt__content-wrapper {
60
+ grid-template-columns: auto 1fr auto;
61
+ align-items: flex-start;
62
+ transition: row-gap var(--critical-banner-duration) var(--critical-banner-easing);
63
+ }
64
+
65
+ &--collapsed .wds-prompt__content-wrapper {
66
+ row-gap: 0;
67
+ }
68
+
69
+ &__text-wrapper {
70
+ position: relative;
71
+ display: flex;
72
+ flex-direction: column;
73
+ justify-content: center;
74
+ align-items: flex-start;
75
+ text-align: start;
76
+ min-width: 0;
77
+ max-width: 480px;
78
+ height: 100%;
79
+
80
+ // Padding prevents text shifting when collapsing/expanding layout shift
81
+ padding-top: 3px;
82
+
83
+ @media (--screen-400-zoom) {
84
+ padding-top: 0;
85
+ }
86
+
87
+ @container (max-width: 320px) {
88
+ padding-top: 0;
89
+ }
90
+ }
91
+
92
+ &--collapsed &__title,
93
+ &--collapsed &__description {
94
+ transform: translateY(0);
95
+ }
96
+
97
+ &__toggle {
98
+ flex-shrink: 0;
99
+ transition: transform var(--critical-banner-duration) var(--critical-banner-easing);
100
+
101
+ &--collapsed {
102
+ transform: rotate(180deg);
103
+ }
104
+
105
+ @container (min-width: @wds-critical-banner-collapsible-max) {
106
+ display: none;
107
+ }
108
+ }
109
+
110
+ /* Override PrimitivePrompt's --screen-sm-max actions behaviour:
111
+ actions only go full-width below mobile-max token (container query) */
112
+ .wds-prompt__actions-wrapper {
113
+ grid-column-start: 2;
114
+ grid-column-end: 3;
115
+ max-height: 200px;
116
+ opacity: 1;
117
+ overflow: visible;
118
+
119
+ @container (max-width: @wds-critical-banner-action-wrapper-max) {
120
+ grid-column: span 3;
121
+ width: 100%;
122
+
123
+ .wds-Button {
124
+ flex: 1 1 100%;
125
+ width: 100%;
126
+ }
127
+ }
128
+ }
129
+
130
+ &--collapsed .wds-prompt__actions-wrapper {
131
+ max-height: 0;
132
+ opacity: 0;
133
+ overflow: hidden;
134
+ pointer-events: none;
135
+ }
136
+
137
+ &--with-two-actions .wds-prompt__actions-wrapper {
138
+ @container (max-width: @wds-critical-banner-action-wrapper-max) {
139
+ .wds-Button {
140
+ flex: 1 1 calc(50% - (var(--Prompt-actions-gap) / 2));
141
+ min-width: fit-content;
142
+ }
143
+ }
144
+ }
145
+ }
146
+
147
+ // Reduced motion support
148
+ @media (prefers-reduced-motion: reduce) {
149
+ .wds-critical-banner__description,
150
+ .wds-critical-banner__title,
151
+ .wds-critical-banner .wds-prompt__content-wrapper,
152
+ .wds-critical-banner__toggle {
153
+ transition: none !important;
154
+ }
155
+ }