@transferwise/components 0.0.0-experimental-6e04f56 → 0.0.0-experimental-542ae69

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 (232) hide show
  1. package/build/Body/Body.js +1 -1
  2. package/build/Body/Body.js.map +1 -1
  3. package/build/Body/Body.mjs +1 -1
  4. package/build/Body/Body.mjs.map +1 -1
  5. package/build/Calendar/DayCalendar/Table/DayCalendarTable.js +1 -1
  6. package/build/Calendar/DayCalendar/Table/DayCalendarTable.js.map +1 -1
  7. package/build/Calendar/DayCalendar/Table/DayCalendarTable.mjs +1 -1
  8. package/build/Calendar/DayCalendar/Table/DayCalendarTable.mjs.map +1 -1
  9. package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.js +1 -1
  10. package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.js.map +1 -1
  11. package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.mjs +1 -1
  12. package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.mjs.map +1 -1
  13. package/build/Calendar/TableLink/TableLink.js +1 -1
  14. package/build/Calendar/TableLink/TableLink.js.map +1 -1
  15. package/build/Calendar/TableLink/TableLink.mjs +1 -1
  16. package/build/Calendar/TableLink/TableLink.mjs.map +1 -1
  17. package/build/FlowNavigation/AnimatedLabel/AnimatedLabel.js +1 -1
  18. package/build/FlowNavigation/AnimatedLabel/AnimatedLabel.js.map +1 -1
  19. package/build/FlowNavigation/AnimatedLabel/AnimatedLabel.mjs +1 -1
  20. package/build/FlowNavigation/AnimatedLabel/AnimatedLabel.mjs.map +1 -1
  21. package/build/Inputs/SelectInput/BottomSheet/SelectInputBottomSheet.js +2 -2
  22. package/build/Inputs/SelectInput/BottomSheet/SelectInputBottomSheet.js.map +1 -1
  23. package/build/Inputs/SelectInput/BottomSheet/SelectInputBottomSheet.mjs +2 -2
  24. package/build/Inputs/SelectInput/BottomSheet/SelectInputBottomSheet.mjs.map +1 -1
  25. package/build/Inputs/SelectInput/Option/SelectInputOption.js +1 -1
  26. package/build/Inputs/SelectInput/Option/SelectInputOption.js.map +1 -1
  27. package/build/Inputs/SelectInput/Option/SelectInputOption.mjs +1 -1
  28. package/build/Inputs/SelectInput/Option/SelectInputOption.mjs.map +1 -1
  29. package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.js +3 -3
  30. package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.js.map +1 -1
  31. package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.mjs +3 -3
  32. package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.mjs.map +1 -1
  33. package/build/Inputs/SelectInput/Popover/SelectInputPopover.js +2 -2
  34. package/build/Inputs/SelectInput/Popover/SelectInputPopover.js.map +1 -1
  35. package/build/Inputs/SelectInput/Popover/SelectInputPopover.mjs +2 -2
  36. package/build/Inputs/SelectInput/Popover/SelectInputPopover.mjs.map +1 -1
  37. package/build/Label/Label.js +1 -1
  38. package/build/Label/Label.js.map +1 -1
  39. package/build/Label/Label.mjs +1 -1
  40. package/build/Label/Label.mjs.map +1 -1
  41. package/build/Snackbar/Snackbar.js +101 -98
  42. package/build/Snackbar/Snackbar.js.map +1 -1
  43. package/build/Snackbar/Snackbar.mjs +102 -99
  44. package/build/Snackbar/Snackbar.mjs.map +1 -1
  45. package/build/Stepper/Stepper.js +1 -1
  46. package/build/Stepper/Stepper.js.map +1 -1
  47. package/build/Stepper/Stepper.mjs +1 -1
  48. package/build/Stepper/Stepper.mjs.map +1 -1
  49. package/build/Table/Header/TableHeader.js +1 -1
  50. package/build/Table/Header/TableHeader.js.map +1 -1
  51. package/build/Table/Header/TableHeader.mjs +1 -1
  52. package/build/Table/Header/TableHeader.mjs.map +1 -1
  53. package/build/Tabs/Tab/Tab.js +1 -1
  54. package/build/Tabs/Tab/Tab.js.map +1 -1
  55. package/build/Tabs/Tab/Tab.mjs +1 -1
  56. package/build/Tabs/Tab/Tab.mjs.map +1 -1
  57. package/build/Tag/Tag.js +1 -1
  58. package/build/Tag/Tag.js.map +1 -1
  59. package/build/Tag/Tag.mjs +1 -1
  60. package/build/Tag/Tag.mjs.map +1 -1
  61. package/build/Typeahead/TypeaheadOption/TypeaheadOption.js +2 -2
  62. package/build/Typeahead/TypeaheadOption/TypeaheadOption.js.map +1 -1
  63. package/build/Typeahead/TypeaheadOption/TypeaheadOption.mjs +2 -2
  64. package/build/Typeahead/TypeaheadOption/TypeaheadOption.mjs.map +1 -1
  65. package/build/Upload/Steps/UploadImageStep/UploadImageStep.js +2 -2
  66. package/build/Upload/Steps/UploadImageStep/UploadImageStep.js.map +1 -1
  67. package/build/Upload/Steps/UploadImageStep/UploadImageStep.mjs +2 -2
  68. package/build/Upload/Steps/UploadImageStep/UploadImageStep.mjs.map +1 -1
  69. package/build/_deprecated/ActionButton/ActionButton.js +1 -1
  70. package/build/_deprecated/ActionButton/ActionButton.js.map +1 -1
  71. package/build/_deprecated/ActionButton/ActionButton.mjs +1 -1
  72. package/build/_deprecated/ActionButton/ActionButton.mjs.map +1 -1
  73. package/build/_deprecated/Avatar/Avatar.js +1 -1
  74. package/build/_deprecated/Avatar/Avatar.js.map +1 -1
  75. package/build/_deprecated/Avatar/Avatar.mjs +1 -1
  76. package/build/_deprecated/Avatar/Avatar.mjs.map +1 -1
  77. package/build/_deprecated/Select/Select.js +2 -2
  78. package/build/_deprecated/Select/Select.js.map +1 -1
  79. package/build/_deprecated/Select/Select.mjs +2 -2
  80. package/build/_deprecated/Select/Select.mjs.map +1 -1
  81. package/build/common/PropsValues/typography.js +6 -0
  82. package/build/common/PropsValues/typography.js.map +1 -1
  83. package/build/common/PropsValues/typography.mjs +6 -0
  84. package/build/common/PropsValues/typography.mjs.map +1 -1
  85. package/build/main.css +2907 -1535
  86. package/build/styles/Accordion/Accordion.css +2 -1
  87. package/build/styles/Body/Body.css +1 -1
  88. package/build/styles/Chips/Chip/Chip.css +4 -2
  89. package/build/styles/Decision/Decision.css +2 -1
  90. package/build/styles/Inputs/Input/Input.css +62 -66
  91. package/build/styles/Inputs/TextArea/TextArea.css +62 -66
  92. package/build/styles/MoneyInput/MoneyInput.css +6 -3
  93. package/build/styles/Popover/Popover.css +3 -47
  94. package/build/styles/ProgressBar/ProgressBar.css +2 -1
  95. package/build/styles/Table/Table.css +15 -5
  96. package/build/styles/Tile/Tile.css +2 -1
  97. package/build/styles/Typeahead/Typeahead.css +4 -2
  98. package/build/styles/_deprecated/CriticalBanner/CriticalCommsBanner.css +2 -1
  99. package/build/styles/_deprecated/Select/Select.css +44 -11
  100. package/build/styles/css/accordion.css +23 -52
  101. package/build/styles/css/button-groups.css +29 -8
  102. package/build/styles/css/buttons.css +26 -2
  103. package/build/styles/css/decision.css +23 -52
  104. package/build/styles/css/dropdowns.css +39 -62
  105. package/build/styles/css/droppable.css +28 -8
  106. package/build/styles/css/footer.css +41 -14
  107. package/build/styles/css/input-groups.css +172 -165
  108. package/build/styles/css/list-group.css +0 -45
  109. package/build/styles/css/navbar.css +39 -62
  110. package/build/styles/css/neptune-addons.css +15 -0
  111. package/build/styles/css/neptune-core.css +250 -526
  112. package/build/styles/css/neptune.css +2759 -1422
  113. package/build/styles/css/popovers.css +35 -60
  114. package/build/styles/css/sequences.css +6 -1
  115. package/build/styles/css/tooltip.css +27 -7
  116. package/build/styles/less/neptune-tokens.less +0 -48
  117. package/build/styles/main.css +2907 -1535
  118. package/build/styles/props/neptune-tokens.css +793 -1
  119. package/build/styles/styles/less/accordion.css +23 -52
  120. package/build/styles/styles/less/button-groups.css +29 -8
  121. package/build/styles/styles/less/buttons.css +26 -2
  122. package/build/styles/styles/less/decision.css +23 -52
  123. package/build/styles/styles/less/dropdowns.css +39 -62
  124. package/build/styles/styles/less/droppable.css +28 -8
  125. package/build/styles/styles/less/footer.css +41 -14
  126. package/build/styles/styles/less/forms/bootstrap-forms.css +137 -91
  127. package/build/styles/styles/less/input-groups.css +172 -165
  128. package/build/styles/styles/less/list-group.css +0 -45
  129. package/build/styles/styles/less/navbar.css +39 -62
  130. package/build/styles/styles/less/neptune-addons.css +15 -0
  131. package/build/styles/styles/less/neptune-core.css +250 -526
  132. package/build/styles/styles/less/neptune.css +2759 -1422
  133. package/build/styles/styles/less/popovers.css +35 -60
  134. package/build/styles/styles/less/sequences.css +6 -1
  135. package/build/styles/styles/less/tooltip.css +27 -7
  136. package/build/types/Snackbar/Snackbar.d.ts +15 -1
  137. package/build/types/Snackbar/Snackbar.d.ts.map +1 -1
  138. package/build/types/common/PropsValues/typography.d.ts +13 -1
  139. package/build/types/common/PropsValues/typography.d.ts.map +1 -1
  140. package/package.json +1 -1
  141. package/src/Accordion/Accordion.css +2 -1
  142. package/src/Accordion/Accordion.less +2 -1
  143. package/src/Body/Body.css +1 -1
  144. package/src/Body/Body.less +1 -1
  145. package/src/Body/Body.test.tsx +4 -4
  146. package/src/Body/Body.tsx +2 -2
  147. package/src/Calendar/DayCalendar/Table/DayCalendarTable.tsx +2 -2
  148. package/src/Calendar/MonthCalendar/Table/MonthCalendarTable.tsx +1 -1
  149. package/src/Calendar/TableLink/TableLink.tsx +1 -1
  150. package/src/Chips/Chip/Chip.css +4 -2
  151. package/src/Chips/Chip/Chip.less +2 -1
  152. package/src/Decision/Decision.css +2 -1
  153. package/src/Decision/Decision.less +2 -1
  154. package/src/DefinitionList/_stories/DefinitionList.story.tsx +1 -1
  155. package/src/Display/_stories/Display.story.tsx +20 -6
  156. package/src/FlowNavigation/AnimatedLabel/AnimatedLabel.tsx +1 -1
  157. package/src/Inputs/Input/Input.css +62 -66
  158. package/src/Inputs/SelectInput/BottomSheet/SelectInputBottomSheet.tsx +2 -2
  159. package/src/Inputs/SelectInput/Option/SelectInputOption.tsx +1 -1
  160. package/src/Inputs/SelectInput/OptionContent/SelectInputOptionContent.tsx +3 -3
  161. package/src/Inputs/SelectInput/Popover/SelectInputPopover.tsx +2 -2
  162. package/src/Inputs/SelectInput/_stories/SelectInput.story.tsx +1 -1
  163. package/src/Inputs/TextArea/TextArea.css +62 -66
  164. package/src/Inputs/_common.less +5 -5
  165. package/src/Label/Label.tsx +1 -1
  166. package/src/MoneyInput/MoneyInput.css +6 -3
  167. package/src/MoneyInput/MoneyInput.less +7 -4
  168. package/src/PocketSurface/_stories/PocketSurface.story.tsx +2 -2
  169. package/src/Popover/Popover.css +3 -47
  170. package/src/Popover/Popover.less +1 -1
  171. package/src/ProgressBar/ProgressBar.css +2 -1
  172. package/src/ProgressBar/ProgressBar.less +12 -11
  173. package/src/SentimentSurface/_stories/SentimentSurface.story.tsx +1 -1
  174. package/src/Snackbar/Snackbar.tsx +88 -90
  175. package/src/Stepper/Stepper.tsx +1 -1
  176. package/src/Table/Header/TableHeader.tsx +1 -1
  177. package/src/Table/StatusText/TableStatusText.test.tsx +5 -5
  178. package/src/Table/Table.css +15 -5
  179. package/src/Table/Table.less +17 -6
  180. package/src/Tabs/Tab/Tab.tsx +1 -1
  181. package/src/Tag/Tag.tsx +1 -1
  182. package/src/Tag/_stories/Tag.story.tsx +1 -1
  183. package/src/Tile/Tile.css +2 -1
  184. package/src/Tile/Tile.less +2 -1
  185. package/src/Typeahead/Typeahead.css +4 -2
  186. package/src/Typeahead/Typeahead.less +2 -1
  187. package/src/Typeahead/TypeaheadOption/TypeaheadOption.tsx +2 -2
  188. package/src/Upload/Steps/UploadImageStep/UploadImageStep.tsx +2 -2
  189. package/src/_deprecated/ActionButton/ActionButton.tsx +1 -1
  190. package/src/_deprecated/Avatar/Avatar.tsx +1 -1
  191. package/src/_deprecated/CriticalBanner/CriticalCommsBanner.css +2 -1
  192. package/src/_deprecated/CriticalBanner/CriticalCommsBanner.less +2 -1
  193. package/src/_deprecated/NavigationOption/_stories/NavigationOption.story.tsx +6 -6
  194. package/src/_deprecated/Select/Select.css +44 -11
  195. package/src/_deprecated/Select/Select.less +10 -5
  196. package/src/_deprecated/Select/Select.tsx +2 -2
  197. package/src/common/PropsValues/typography.ts +20 -1
  198. package/src/main.css +2907 -1535
  199. package/src/styles/less/accordion.css +23 -52
  200. package/src/styles/less/addons/_background-utilities.less +5 -0
  201. package/src/styles/less/button-groups.css +29 -8
  202. package/src/styles/less/button-groups.less +3 -2
  203. package/src/styles/less/buttons.css +26 -2
  204. package/src/styles/less/buttons.less +1 -1
  205. package/src/styles/less/core/_typography.less +67 -221
  206. package/src/styles/less/decision.css +23 -52
  207. package/src/styles/less/decision.less +2 -2
  208. package/src/styles/less/dropdowns.css +39 -62
  209. package/src/styles/less/dropdowns.less +6 -5
  210. package/src/styles/less/droppable.css +28 -8
  211. package/src/styles/less/droppable.less +4 -4
  212. package/src/styles/less/footer.css +41 -14
  213. package/src/styles/less/footer.less +4 -3
  214. package/src/styles/less/forms/bootstrap-forms.css +137 -91
  215. package/src/styles/less/forms/bootstrap-forms.less +70 -57
  216. package/src/styles/less/input-groups.css +172 -165
  217. package/src/styles/less/input-groups.less +5 -5
  218. package/src/styles/less/list-group.css +0 -45
  219. package/src/styles/less/list-group.less +7 -4
  220. package/src/styles/less/mixins/_text-emphasis.less +7 -1
  221. package/src/styles/less/navbar.css +39 -62
  222. package/src/styles/less/neptune-addons.css +15 -0
  223. package/src/styles/less/neptune-core.css +250 -526
  224. package/src/styles/less/neptune.bundle.less +4 -0
  225. package/src/styles/less/neptune.css +2759 -1422
  226. package/src/styles/less/popovers.css +35 -60
  227. package/src/styles/less/popovers.less +3 -3
  228. package/src/styles/less/sequences.css +6 -1
  229. package/src/styles/less/sequences.less +7 -2
  230. package/src/styles/less/tooltip.css +27 -7
  231. package/src/styles/less/tooltip.less +1 -1
  232. package/src/Snackbar/Snackbar.test.tsx +0 -190
@@ -1,4 +1,36 @@
1
- .close {
1
+ .popover,
2
+ .popover-content {
3
+ word-wrap: break-word;
4
+ }
5
+ @supports (hyphenate-limit-chars: 1) {
6
+ .popover,
7
+ .popover-content {
8
+ hyphens: auto;hyphenate-limit-chars: 7 3;
9
+ }
10
+ @media (min-width: 840px) {
11
+ .popover,
12
+ .popover-content {
13
+ hyphenate-limit-chars: 8 3;
14
+ }
15
+ }
16
+ @media (min-width: 1160px) {
17
+ .popover,
18
+ .popover-content {
19
+ hyphenate-limit-chars: 10 4 3;
20
+ }
21
+ }
22
+ }@supports (not (hyphenate-limit-chars: 1)) and (-webkit-hyphenate-limit-before: 1) {
23
+ .popover,
24
+ .popover-content {
25
+ hyphens: auto;-webkit-hyphenate-limit-before: 3;-webkit-hyphenate-limit-after: 3;
26
+ }
27
+ @media (min-width: 1160px) {
28
+ .popover,
29
+ .popover-content {
30
+ -webkit-hyphenate-limit-before: 4;
31
+ }
32
+ }
33
+ }.close {
2
34
  float: inline-end;
3
35
  color: #0097c7;
4
36
  color: var(--color-content-accent);
@@ -66,12 +98,6 @@ button.close {
66
98
  word-break: normal;
67
99
  word-spacing: normal;
68
100
  word-wrap: normal;
69
- font-size: 0.875rem;
70
- font-size: var(--font-size-14);
71
- line-height: 155%;
72
- letter-spacing: -0.006em;
73
- font-weight: 400;
74
- font-weight: var(--font-weight-regular);
75
101
  word-wrap: break-word;
76
102
  background-color: #ffffff;
77
103
  background-color: var(--color-background-screen);
@@ -258,20 +284,8 @@ button.close {
258
284
  margin-inline: 0;
259
285
  }
260
286
  .popover-title {
261
- padding: 0;
262
287
  margin: 0;
263
- color: #37517e;
264
- color: var(--color-content-primary);
265
- line-height: 1.2;
266
- line-height: var(--line-height-title);
267
- letter-spacing: 0;
268
- word-wrap: break-word;
269
- font-size: 1.125rem;
270
- font-size: var(--font-size-18);
271
- font-weight: 600;
272
- font-weight: var(--font-weight-semi-bold);
273
- letter-spacing: -0.014em;
274
- line-height: 135%;
288
+ padding: 0;
275
289
  background-color: #ffffff;
276
290
  background-color: var(--color-background-screen);
277
291
  border-block-end: 0;
@@ -279,50 +293,11 @@ button.close {
279
293
  border-start-end-radius: 2px;
280
294
  border-end-end-radius: 0;
281
295
  border-end-start-radius: 0;
296
+ color: #37517e !important;
282
297
  color: var(--color-content-primary) !important;
283
298
  }
284
- @supports (hyphenate-limit-chars: 1) {
285
- .popover-title {
286
- hyphens: auto;
287
- hyphenate-limit-chars: 7 3;
288
- }
289
- @media (min-width: 840px) {
290
- .popover-title {
291
- hyphenate-limit-chars: 8 3;
292
- }
293
- }
294
- @media (min-width: 1160px) {
295
- .popover-title {
296
- hyphenate-limit-chars: 10 4 3;
297
- }
298
- }
299
- }
300
- @supports (not (hyphenate-limit-chars: 1)) and (-webkit-hyphenate-limit-before: 1) {
301
- .popover-title {
302
- hyphens: auto;
303
- -webkit-hyphenate-limit-before: 3;
304
- -webkit-hyphenate-limit-after: 3;
305
- }
306
- @media (min-width: 1160px) {
307
- .popover-title {
308
- -webkit-hyphenate-limit-before: 4;
309
- }
310
- }
311
- }
312
- .popover-title + p,
313
- .popover-title + ul:not(.list-unstyled),
314
- .popover-title + ol:not(.list-unstyled) {
315
- margin-block-start: 8px;
316
- margin-block-start: var(--size-8);
317
- }
318
299
  .popover-content {
319
300
  padding: 0;
320
- font-size: 0.875rem;
321
- font-size: var(--font-size-14);
322
- line-height: 155%;
323
- letter-spacing: -0.006em;
324
- font-weight: 400;
325
- font-weight: var(--font-weight-regular);
326
301
  word-wrap: break-word;
327
302
  color: #5d7079;
328
303
  color: var(--color-content-secondary);
@@ -24,7 +24,7 @@
24
24
  // So reset our font and text properties to avoid inheriting weird values.
25
25
  .reset-text();
26
26
 
27
- .np-text-body-default;
27
+ .wds-text-body-default;
28
28
 
29
29
  background-color: var(--color-background-screen);
30
30
  background-clip: padding-box;
@@ -221,7 +221,7 @@
221
221
  margin: 0; // reset heading margin
222
222
  padding: 0;
223
223
 
224
- .np-text-title-body();
224
+ .wds-text-title-body();
225
225
 
226
226
  background-color: var(--color-background-screen);
227
227
  border-bottom: 0;
@@ -232,7 +232,7 @@
232
232
  .popover-content {
233
233
  padding: 0;
234
234
 
235
- .np-text-body-default;
235
+ .wds-text-body-default;
236
236
 
237
237
  color: var(--color-content-secondary);
238
238
  }
@@ -131,6 +131,10 @@
131
131
  .sequence > li .h2,
132
132
  .sequence > li .h3,
133
133
  .sequence > li .h4,
134
+ .sequence > li .wds-text-title-screen,
135
+ .sequence > li .wds-text-title-section,
136
+ .sequence > li .wds-text-title-subsection,
137
+ .sequence > li .wds-text-title-body,
134
138
  .sequence > li .btn-toolbar {
135
139
  margin-block-end: 16px;
136
140
  }
@@ -221,7 +225,8 @@
221
225
  }
222
226
  .sequence-inverse > .active .small,
223
227
  .sequence-inverse > .active .body-2,
224
- .sequence-inverse > .active .np-text-body-default {
228
+ .sequence-inverse > .active .np-text-body-default,
229
+ .sequence-inverse > .active .wds-text-body-default {
225
230
  color: #5d7079;
226
231
  color: var(--color-content-secondary);
227
232
  }
@@ -85,6 +85,10 @@
85
85
  .h2,
86
86
  .h3,
87
87
  .h4,
88
+ .wds-text-title-screen,
89
+ .wds-text-title-section,
90
+ .wds-text-title-subsection,
91
+ .wds-text-title-body,
88
92
  .btn-toolbar {
89
93
  margin-bottom: 16px;
90
94
  }
@@ -186,7 +190,8 @@
186
190
 
187
191
  .small,
188
192
  .body-2,
189
- .np-text-body-default {
193
+ .np-text-body-default,
194
+ .wds-text-body-default {
190
195
  color: var(--color-content-secondary);
191
196
  }
192
197
 
@@ -216,7 +221,7 @@
216
221
 
217
222
  > .active {
218
223
  &::before {
219
- border-width: (@sequence-pip-size / 2); // TODO sequence-line-width?
224
+ border-width: (@sequence-pip-size / 2); // TODO sequence-line-width?
220
225
  }
221
226
 
222
227
  ~ li::before {
@@ -1,4 +1,30 @@
1
- .tooltip {
1
+ .tooltip-inner {
2
+ word-wrap: break-word;
3
+ }
4
+ @supports (hyphenate-limit-chars: 1) {
5
+ .tooltip-inner {
6
+ hyphens: auto;hyphenate-limit-chars: 7 3;
7
+ }
8
+ @media (min-width: 840px) {
9
+ .tooltip-inner {
10
+ hyphenate-limit-chars: 8 3;
11
+ }
12
+ }
13
+ @media (min-width: 1160px) {
14
+ .tooltip-inner {
15
+ hyphenate-limit-chars: 10 4 3;
16
+ }
17
+ }
18
+ }@supports (not (hyphenate-limit-chars: 1)) and (-webkit-hyphenate-limit-before: 1) {
19
+ .tooltip-inner {
20
+ hyphens: auto;-webkit-hyphenate-limit-before: 3;-webkit-hyphenate-limit-after: 3;
21
+ }
22
+ @media (min-width: 1160px) {
23
+ .tooltip-inner {
24
+ -webkit-hyphenate-limit-before: 4;
25
+ }
26
+ }
27
+ }.tooltip {
2
28
  position: absolute;
3
29
  z-index: 1070;
4
30
  display: block;
@@ -45,12 +71,6 @@
45
71
  padding-inline: 5px;
46
72
  }
47
73
  .tooltip-inner {
48
- font-size: 0.875rem;
49
- font-size: var(--font-size-14);
50
- line-height: 155%;
51
- letter-spacing: -0.006em;
52
- font-weight: 400;
53
- font-weight: var(--font-weight-regular);
54
74
  word-wrap: break-word;
55
75
  max-inline-size: 200px;
56
76
  min-inline-size: 120px;
@@ -50,7 +50,7 @@
50
50
 
51
51
  // Wrapper for the tooltip content
52
52
  .tooltip-inner {
53
- .np-text-body-default;
53
+ .wds-text-body-default;
54
54
 
55
55
  max-width: @tooltip-max-width;
56
56
  min-width: 120px;
@@ -1,190 +0,0 @@
1
- import { act, render, screen, userEvent } from '../test-utils';
2
- import Button from '../Button';
3
-
4
- import { Snackbar, type SnackbarProps } from './Snackbar';
5
- import { SnackbarConsumer } from './SnackbarContext';
6
- import SnackbarProvider from './SnackbarProvider';
7
-
8
- const CSS_TRANSITION_DURATION = 400;
9
- const TIMEOUT = 4000;
10
-
11
- const user = userEvent.setup({ advanceTimers: jest.advanceTimersByTimeAsync });
12
-
13
- const advanceTimers = (duration: number) => {
14
- act(() => {
15
- jest.advanceTimersByTime(duration);
16
- });
17
- };
18
-
19
- const renderSnackbar = (props: Partial<SnackbarProps> = {}) =>
20
- render(<Snackbar text="" timeout={TIMEOUT} timestamp={0} {...props} />);
21
-
22
- beforeEach(() => {
23
- jest.useFakeTimers();
24
- });
25
-
26
- afterEach(() => {
27
- jest.clearAllTimers();
28
- jest.useRealTimers();
29
- });
30
-
31
- describe('Snackbar', () => {
32
- it('renders the live region wrapper even while no notification is shown', () => {
33
- renderSnackbar();
34
-
35
- expect(screen.getByRole('alert')).toHaveAttribute('aria-live', 'assertive');
36
- expect(screen.getByRole('alert')).toHaveClass('snackbar');
37
- });
38
-
39
- it('does not show a notification that is already present on mount', () => {
40
- renderSnackbar({ text: 'Changes saved', timestamp: 1 });
41
-
42
- expect(screen.queryByText('Changes saved')).not.toBeInTheDocument();
43
- });
44
-
45
- it('shows the notification once text arrives after mount', () => {
46
- const { rerender } = renderSnackbar();
47
-
48
- rerender(<Snackbar text="Changes saved" timeout={TIMEOUT} timestamp={1} />);
49
-
50
- expect(screen.getByText('Changes saved')).toBeInTheDocument();
51
- });
52
-
53
- it('renders an action and calls its onClick handler', async () => {
54
- const onClick = jest.fn();
55
- const { rerender } = renderSnackbar();
56
-
57
- rerender(
58
- <Snackbar
59
- action={{ label: 'View', onClick }}
60
- text="Transfer completed"
61
- timeout={TIMEOUT}
62
- timestamp={1}
63
- />,
64
- );
65
- await user.click(screen.getByRole('button', { name: 'View' }));
66
-
67
- expect(onClick).toHaveBeenCalledTimes(1);
68
- });
69
-
70
- it('dismisses the notification once the timeout elapses', () => {
71
- const { rerender } = renderSnackbar();
72
-
73
- rerender(<Snackbar text="Changes saved" timeout={TIMEOUT} timestamp={1} />);
74
-
75
- advanceTimers(TIMEOUT - 1);
76
- expect(screen.getByText('Changes saved')).toBeInTheDocument();
77
-
78
- advanceTimers(1);
79
- advanceTimers(CSS_TRANSITION_DURATION);
80
- expect(screen.queryByText('Changes saved')).not.toBeInTheDocument();
81
- });
82
-
83
- it('exits the current notification before entering the next one', () => {
84
- const { rerender } = renderSnackbar();
85
-
86
- rerender(<Snackbar text="First message" timeout={TIMEOUT} timestamp={1} />);
87
- rerender(<Snackbar text="Second message" timeout={TIMEOUT} timestamp={2} />);
88
-
89
- advanceTimers(CSS_TRANSITION_DURATION - 1);
90
- expect(screen.queryByText('Second message')).not.toBeInTheDocument();
91
-
92
- advanceTimers(1);
93
- expect(screen.getByText('Second message')).toBeInTheDocument();
94
- expect(screen.queryByText('First message')).not.toBeInTheDocument();
95
- });
96
-
97
- it('shows the next notification immediately when the previous one has already been dismissed', () => {
98
- const { rerender } = renderSnackbar();
99
-
100
- rerender(<Snackbar text="First message" timeout={TIMEOUT} timestamp={1} />);
101
- advanceTimers(TIMEOUT + CSS_TRANSITION_DURATION);
102
-
103
- rerender(<Snackbar text="Second message" timeout={TIMEOUT} timestamp={2} />);
104
- expect(screen.getByText('Second message')).toBeInTheDocument();
105
- });
106
-
107
- it('restarts the timeout for a replacing notification', () => {
108
- const { rerender } = renderSnackbar();
109
-
110
- rerender(<Snackbar text="First message" timeout={TIMEOUT} timestamp={1} />);
111
- advanceTimers(TIMEOUT - 100);
112
-
113
- rerender(<Snackbar text="Second message" timeout={TIMEOUT} timestamp={2} />);
114
- advanceTimers(CSS_TRANSITION_DURATION);
115
- expect(screen.getByText('Second message')).toBeInTheDocument();
116
-
117
- advanceTimers(TIMEOUT - 1);
118
- expect(screen.getByText('Second message')).toBeInTheDocument();
119
-
120
- advanceTimers(1);
121
- advanceTimers(CSS_TRANSITION_DURATION);
122
- expect(screen.queryByText('Second message')).not.toBeInTheDocument();
123
- });
124
-
125
- // Documents existing behaviour rather than endorsing it: clearing the text leaves the notification
126
- // on screen indefinitely, because the previous shouldComponentUpdate blocked the dismissal too.
127
- it('keeps the notification visible for as long as text is empty', () => {
128
- const { rerender } = renderSnackbar();
129
-
130
- rerender(<Snackbar text="Changes saved" timeout={TIMEOUT} timestamp={1} />);
131
- rerender(<Snackbar text="" timeout={TIMEOUT} timestamp={2} />);
132
-
133
- advanceTimers(TIMEOUT + CSS_TRANSITION_DURATION);
134
- expect(screen.getByText('Changes saved')).toBeInTheDocument();
135
- });
136
-
137
- it('ignores a repeated timestamp', () => {
138
- const { rerender } = renderSnackbar();
139
-
140
- rerender(<Snackbar text="First message" timeout={TIMEOUT} timestamp={1} />);
141
- rerender(<Snackbar text="Second message" timeout={TIMEOUT} timestamp={1} />);
142
-
143
- advanceTimers(CSS_TRANSITION_DURATION);
144
- expect(screen.getByText('First message')).toBeInTheDocument();
145
- expect(screen.queryByText('Second message')).not.toBeInTheDocument();
146
- });
147
-
148
- it('clears its pending dismissal timer on unmount', () => {
149
- const { rerender, unmount } = renderSnackbar();
150
-
151
- rerender(<Snackbar text="Changes saved" timeout={TIMEOUT} timestamp={1} />);
152
- const pendingTimers = jest.getTimerCount();
153
- unmount();
154
-
155
- // The timer left behind belongs to CSSTransition's enter timeout, not to Snackbar.
156
- expect(jest.getTimerCount()).toBe(pendingTimers - 1);
157
- });
158
- });
159
-
160
- describe('Snackbar created through SnackbarProvider', () => {
161
- const renderProvider = () =>
162
- render(
163
- <SnackbarProvider timeout={TIMEOUT}>
164
- <SnackbarConsumer>
165
- {({ createSnackbar }) => (
166
- <Button onClick={() => createSnackbar({ text: 'Changes saved' })}>Show</Button>
167
- )}
168
- </SnackbarConsumer>
169
- </SnackbarProvider>,
170
- );
171
-
172
- it('shows a notification created through the context', async () => {
173
- renderProvider();
174
-
175
- await user.click(screen.getByRole('button', { name: 'Show' }));
176
-
177
- expect(screen.getByText('Changes saved')).toBeInTheDocument();
178
- });
179
-
180
- it('shows only one notification when the trigger is clicked repeatedly', async () => {
181
- renderProvider();
182
-
183
- const trigger = screen.getByRole('button', { name: 'Show' });
184
- await user.click(trigger);
185
- await user.click(trigger);
186
- await user.click(trigger);
187
-
188
- expect(screen.getAllByRole('alert')).toHaveLength(1);
189
- });
190
- });