@transferwise/components 0.0.0-experimental-4b93e2b → 0.0.0-experimental-f144cf1

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 (218) hide show
  1. package/build/Calendar/DateHeader/DateHeader.js +6 -2
  2. package/build/Calendar/DateHeader/DateHeader.js.map +1 -1
  3. package/build/Calendar/DateHeader/DateHeader.mjs +7 -3
  4. package/build/Calendar/DateHeader/DateHeader.mjs.map +1 -1
  5. package/build/Carousel/Carousel.js +2 -2
  6. package/build/Carousel/Carousel.js.map +1 -1
  7. package/build/Carousel/Carousel.mjs +3 -3
  8. package/build/Carousel/Carousel.mjs.map +1 -1
  9. package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.js +3 -4
  10. package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.js.map +1 -1
  11. package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.mjs +3 -4
  12. package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.mjs.map +1 -1
  13. package/build/ListItem/Navigation/ListItemNavigation.js +1 -1
  14. package/build/ListItem/Navigation/ListItemNavigation.js.map +1 -1
  15. package/build/ListItem/Navigation/ListItemNavigation.mjs +2 -2
  16. package/build/ListItem/Navigation/ListItemNavigation.mjs.map +1 -1
  17. package/build/PhoneNumberInput/PhoneNumberInput.js +1 -2
  18. package/build/PhoneNumberInput/PhoneNumberInput.js.map +1 -1
  19. package/build/PhoneNumberInput/PhoneNumberInput.mjs +1 -2
  20. package/build/PhoneNumberInput/PhoneNumberInput.mjs.map +1 -1
  21. package/build/PromoCard/Indicator/PromoCardIndicator.js +1 -1
  22. package/build/PromoCard/Indicator/PromoCardIndicator.js.map +1 -1
  23. package/build/PromoCard/Indicator/PromoCardIndicator.mjs +2 -2
  24. package/build/PromoCard/Indicator/PromoCardIndicator.mjs.map +1 -1
  25. package/build/Snackbar/Snackbar.js +212 -108
  26. package/build/Snackbar/Snackbar.js.map +1 -1
  27. package/build/Snackbar/Snackbar.messages.js +14 -0
  28. package/build/Snackbar/Snackbar.messages.js.map +1 -0
  29. package/build/Snackbar/Snackbar.messages.mjs +10 -0
  30. package/build/Snackbar/Snackbar.messages.mjs.map +1 -0
  31. package/build/Snackbar/Snackbar.mjs +213 -107
  32. package/build/Snackbar/Snackbar.mjs.map +1 -1
  33. package/build/Snackbar/SnackbarContext.js.map +1 -1
  34. package/build/Snackbar/SnackbarContext.mjs.map +1 -1
  35. package/build/Snackbar/SnackbarPortal.js +92 -0
  36. package/build/Snackbar/SnackbarPortal.js.map +1 -0
  37. package/build/Snackbar/SnackbarPortal.mjs +89 -0
  38. package/build/Snackbar/SnackbarPortal.mjs.map +1 -0
  39. package/build/Snackbar/SnackbarProvider.js +21 -31
  40. package/build/Snackbar/SnackbarProvider.js.map +1 -1
  41. package/build/Snackbar/SnackbarProvider.mjs +22 -32
  42. package/build/Snackbar/SnackbarProvider.mjs.map +1 -1
  43. package/build/Snackbar/constants.js +14 -0
  44. package/build/Snackbar/constants.js.map +1 -0
  45. package/build/Snackbar/constants.mjs +8 -0
  46. package/build/Snackbar/constants.mjs.map +1 -0
  47. package/build/Snackbar/useSnackbarAutoDismiss.js +135 -0
  48. package/build/Snackbar/useSnackbarAutoDismiss.js.map +1 -0
  49. package/build/Snackbar/useSnackbarAutoDismiss.mjs +131 -0
  50. package/build/Snackbar/useSnackbarAutoDismiss.mjs.map +1 -0
  51. package/build/Snackbar/useSnackbarManager.js +164 -0
  52. package/build/Snackbar/useSnackbarManager.js.map +1 -0
  53. package/build/Snackbar/useSnackbarManager.mjs +160 -0
  54. package/build/Snackbar/useSnackbarManager.mjs.map +1 -0
  55. package/build/Snackbar/useSnackbarSwipeDismiss.js +114 -0
  56. package/build/Snackbar/useSnackbarSwipeDismiss.js.map +1 -0
  57. package/build/Snackbar/useSnackbarSwipeDismiss.mjs +110 -0
  58. package/build/Snackbar/useSnackbarSwipeDismiss.mjs.map +1 -0
  59. package/build/common/PropsValues/typography.js +0 -6
  60. package/build/common/PropsValues/typography.js.map +1 -1
  61. package/build/common/PropsValues/typography.mjs +0 -6
  62. package/build/common/PropsValues/typography.mjs.map +1 -1
  63. package/build/i18n/en.json +1 -0
  64. package/build/i18n/en.json.js +1 -0
  65. package/build/i18n/en.json.js.map +1 -1
  66. package/build/i18n/en.json.mjs +1 -0
  67. package/build/i18n/en.json.mjs.map +1 -1
  68. package/build/index.js +3 -1
  69. package/build/index.js.map +1 -1
  70. package/build/index.mjs +2 -1
  71. package/build/index.mjs.map +1 -1
  72. package/build/main.css +864 -1509
  73. package/build/styles/Button/Button.css +3 -0
  74. package/build/styles/DateInput/DateInput.css +0 -13
  75. package/build/styles/Inputs/Input/Input.css +24 -0
  76. package/build/styles/Inputs/TextArea/TextArea.css +24 -0
  77. package/build/styles/ListItem/ListItem.css +1 -1
  78. package/build/styles/PhoneNumberInput/PhoneNumberInput.css +0 -3
  79. package/build/styles/Popover/Popover.css +6 -0
  80. package/build/styles/PromoCard/PromoCard.css +3 -0
  81. package/build/styles/Snackbar/Snackbar.css +182 -61
  82. package/build/styles/_deprecated/Select/Select.css +6 -0
  83. package/build/styles/css/accordion.css +12 -0
  84. package/build/styles/css/button-groups.css +6 -0
  85. package/build/styles/css/buttons.css +2 -0
  86. package/build/styles/css/decision.css +12 -0
  87. package/build/styles/css/dropdowns.css +18 -2
  88. package/build/styles/css/droppable.css +6 -0
  89. package/build/styles/css/footer.css +12 -0
  90. package/build/styles/css/input-groups.css +42 -2
  91. package/build/styles/css/list-group.css +6 -0
  92. package/build/styles/css/navbar.css +18 -2
  93. package/build/styles/css/neptune-core.css +512 -4
  94. package/build/styles/css/neptune.css +640 -1426
  95. package/build/styles/css/popovers.css +18 -0
  96. package/build/styles/css/tooltip.css +6 -0
  97. package/build/styles/less/neptune-tokens.less +0 -8
  98. package/build/styles/main.css +864 -1509
  99. package/build/styles/props/neptune-tokens.css +0 -8
  100. package/build/styles/styles/less/accordion.css +12 -0
  101. package/build/styles/styles/less/button-groups.css +6 -0
  102. package/build/styles/styles/less/buttons.css +2 -0
  103. package/build/styles/styles/less/decision.css +12 -0
  104. package/build/styles/styles/less/dropdowns.css +18 -2
  105. package/build/styles/styles/less/droppable.css +6 -0
  106. package/build/styles/styles/less/footer.css +12 -0
  107. package/build/styles/styles/less/forms/bootstrap-forms.css +24 -2
  108. package/build/styles/styles/less/input-groups.css +42 -2
  109. package/build/styles/styles/less/list-group.css +6 -0
  110. package/build/styles/styles/less/navbar.css +18 -2
  111. package/build/styles/styles/less/neptune-core.css +512 -4
  112. package/build/styles/styles/less/neptune.css +640 -1426
  113. package/build/styles/styles/less/popovers.css +18 -0
  114. package/build/styles/styles/less/tooltip.css +6 -0
  115. package/build/types/Inputs/SelectInput/OptionContent/SelectInputOptionContent.d.ts +1 -2
  116. package/build/types/Inputs/SelectInput/OptionContent/SelectInputOptionContent.d.ts.map +1 -1
  117. package/build/types/PhoneNumberInput/PhoneNumberInput.d.ts.map +1 -1
  118. package/build/types/Snackbar/Snackbar.d.ts +41 -24
  119. package/build/types/Snackbar/Snackbar.d.ts.map +1 -1
  120. package/build/types/Snackbar/Snackbar.messages.d.ts +9 -0
  121. package/build/types/Snackbar/Snackbar.messages.d.ts.map +1 -0
  122. package/build/types/Snackbar/Snackbar.types.d.ts +21 -0
  123. package/build/types/Snackbar/Snackbar.types.d.ts.map +1 -0
  124. package/build/types/Snackbar/SnackbarContext.d.ts +2 -2
  125. package/build/types/Snackbar/SnackbarContext.d.ts.map +1 -1
  126. package/build/types/Snackbar/SnackbarPortal.d.ts +5 -0
  127. package/build/types/Snackbar/SnackbarPortal.d.ts.map +1 -0
  128. package/build/types/Snackbar/SnackbarProvider.d.ts +6 -0
  129. package/build/types/Snackbar/SnackbarProvider.d.ts.map +1 -1
  130. package/build/types/Snackbar/constants.d.ts +6 -0
  131. package/build/types/Snackbar/constants.d.ts.map +1 -0
  132. package/build/types/Snackbar/index.d.ts +3 -1
  133. package/build/types/Snackbar/index.d.ts.map +1 -1
  134. package/build/types/Snackbar/useSnackbar.d.ts +1 -1
  135. package/build/types/Snackbar/useSnackbar.d.ts.map +1 -1
  136. package/build/types/Snackbar/useSnackbarAutoDismiss.d.ts +18 -0
  137. package/build/types/Snackbar/useSnackbarAutoDismiss.d.ts.map +1 -0
  138. package/build/types/Snackbar/useSnackbarManager.d.ts +17 -0
  139. package/build/types/Snackbar/useSnackbarManager.d.ts.map +1 -0
  140. package/build/types/Snackbar/useSnackbarSwipeDismiss.d.ts +11 -0
  141. package/build/types/Snackbar/useSnackbarSwipeDismiss.d.ts.map +1 -0
  142. package/build/types/common/PropsValues/typography.d.ts +1 -13
  143. package/build/types/common/PropsValues/typography.d.ts.map +1 -1
  144. package/build/types/index.d.ts +2 -2
  145. package/build/types/index.d.ts.map +1 -1
  146. package/build/types/test-utils/index.d.ts +2 -0
  147. package/build/types/test-utils/index.d.ts.map +1 -1
  148. package/package.json +2 -2
  149. package/src/Button/Button.css +3 -0
  150. package/src/Button/Button.less +16 -0
  151. package/src/Button/_stories/Button.test.story.tsx +12 -12
  152. package/src/Calendar/DateHeader/DateHeader.tsx +3 -3
  153. package/src/Carousel/Carousel.tsx +3 -3
  154. package/src/DateInput/DateInput.css +0 -13
  155. package/src/DateInput/DateInput.less +2 -10
  156. package/src/DateInput/_stories/DateInput.test.story.tsx +13 -0
  157. package/src/Display/_stories/Display.story.tsx +6 -20
  158. package/src/ExpressiveMoneyInput/_stories/ExpressiveMoneyInput.rtl.test.story.tsx +1 -1
  159. package/src/InputWithDisplayFormat/_stories/InputWithDisplayFormat.test.story.tsx +0 -52
  160. package/src/Inputs/Input/Input.css +24 -0
  161. package/src/Inputs/SelectInput/OptionContent/SelectInputOptionContent.tsx +1 -4
  162. package/src/Inputs/SelectInput/SelectInput.test.tsx +0 -74
  163. package/src/Inputs/TextArea/TextArea.css +24 -0
  164. package/src/ListItem/ListItem.css +1 -1
  165. package/src/ListItem/ListItem.grid.less +4 -4
  166. package/src/ListItem/ListItem.less +1 -1
  167. package/src/ListItem/Navigation/ListItemNavigation.tsx +2 -2
  168. package/src/PhoneNumberInput/PhoneNumberInput.css +0 -3
  169. package/src/PhoneNumberInput/PhoneNumberInput.less +2 -10
  170. package/src/PhoneNumberInput/PhoneNumberInput.tsx +0 -1
  171. package/src/PhoneNumberInput/_stories/PhoneNumberInput.rtl.test.story.tsx +1 -1
  172. package/src/Popover/Popover.css +6 -0
  173. package/src/PromoCard/Indicator/PromoCardIndicator.tsx +2 -2
  174. package/src/PromoCard/PromoCard.css +3 -0
  175. package/src/PromoCard/PromoCard.less +5 -0
  176. package/src/Prompt/CriticalBanner/_stories/CriticalBanner.test.story.tsx +1 -1
  177. package/src/Snackbar/Snackbar.css +182 -61
  178. package/src/Snackbar/Snackbar.less +185 -56
  179. package/src/Snackbar/Snackbar.messages.ts +9 -0
  180. package/src/Snackbar/Snackbar.test.tsx +697 -0
  181. package/src/Snackbar/Snackbar.tsx +227 -96
  182. package/src/Snackbar/Snackbar.types.ts +26 -0
  183. package/src/Snackbar/SnackbarContext.ts +2 -2
  184. package/src/Snackbar/SnackbarPortal.tsx +110 -0
  185. package/src/Snackbar/SnackbarProvider.test.tsx +202 -0
  186. package/src/Snackbar/SnackbarProvider.tsx +25 -25
  187. package/src/Snackbar/_stories/Snackbar.accessibility.docs.mdx +73 -0
  188. package/src/Snackbar/_stories/Snackbar.rtl.test.story.tsx +1 -12
  189. package/src/Snackbar/_stories/Snackbar.story.tsx +447 -62
  190. package/src/Snackbar/_stories/Snackbar.test.story.tsx +91 -16
  191. package/src/Snackbar/constants.ts +5 -0
  192. package/src/Snackbar/index.ts +3 -1
  193. package/src/Snackbar/useSnackbarAutoDismiss.ts +155 -0
  194. package/src/Snackbar/useSnackbarManager.ts +181 -0
  195. package/src/Snackbar/useSnackbarSwipeDismiss.ts +129 -0
  196. package/src/_deprecated/Select/Select.css +6 -0
  197. package/src/common/PropsValues/typography.ts +1 -20
  198. package/src/i18n/en.json +1 -1
  199. package/src/index.ts +7 -2
  200. package/src/main.css +864 -1509
  201. package/src/styles/less/accordion.css +12 -0
  202. package/src/styles/less/button-groups.css +6 -0
  203. package/src/styles/less/buttons.css +2 -0
  204. package/src/styles/less/core/_typography.less +194 -26
  205. package/src/styles/less/decision.css +12 -0
  206. package/src/styles/less/dropdowns.css +18 -2
  207. package/src/styles/less/droppable.css +6 -0
  208. package/src/styles/less/footer.css +12 -0
  209. package/src/styles/less/forms/bootstrap-forms.css +24 -2
  210. package/src/styles/less/input-groups.css +42 -2
  211. package/src/styles/less/list-group.css +6 -0
  212. package/src/styles/less/navbar.css +18 -2
  213. package/src/styles/less/neptune-core.css +512 -4
  214. package/src/styles/less/neptune.bundle.less +0 -2
  215. package/src/styles/less/neptune.css +640 -1426
  216. package/src/styles/less/popovers.css +18 -0
  217. package/src/styles/less/tooltip.css +6 -0
  218. package/src/DateInput/_stories/DateInput.rtl.test.story.tsx +0 -36
@@ -31,6 +31,12 @@
31
31
  letter-spacing: 0;
32
32
  word-wrap: break-word;
33
33
  margin-block-end: initial;
34
+ font-weight: 600;
35
+ font-weight: var(--font-weight-semi-bold);
36
+ font-size: 1.625rem;
37
+ font-size: var(--font-size-26);
38
+ letter-spacing: -0.02em;
39
+ line-height: 122%;
34
40
  }
35
41
  @supports (hyphenate-limit-chars: 1) {
36
42
  .np-popover__container.np-bottom-sheet .np-popover__title {
@@ -1,4 +1,4 @@
1
- import { ArrowEnd, Check, Download } from '@transferwise/icons';
1
+ import { ArrowRight, Check, Download } from '@transferwise/icons';
2
2
  import { clsx } from 'clsx';
3
3
  import { ReactElement, ReactNode } from 'react';
4
4
 
@@ -57,7 +57,7 @@ const PromoCardIndicator: React.FC<PromoCardIndicatorProps> = ({
57
57
  isIconString &&
58
58
  {
59
59
  check: Check,
60
- arrow: ArrowEnd,
60
+ arrow: ArrowRight,
61
61
  download: Download,
62
62
  }[icon];
63
63
 
@@ -53,6 +53,9 @@
53
53
  .np-Card-indicatorIcon .tw-icon {
54
54
  color: var(--Card-indicator-icon-color);
55
55
  }
56
+ [dir="rtl"] .np-Card-indicatorIcon .tw-icon {
57
+ transform: scaleX(-1);
58
+ }
56
59
  .np-Card--checked,
57
60
  .np-Card--link {
58
61
  color: currentColor;
@@ -50,6 +50,11 @@
50
50
 
51
51
  &Icon .tw-icon {
52
52
  color: var(--Card-indicator-icon-color);
53
+
54
+ // Flips icon for right to left content
55
+ [dir="rtl"] & {
56
+ transform: scaleX(-1);
57
+ }
53
58
  }
54
59
  }
55
60
 
@@ -511,5 +511,5 @@ export const RTLDiff: Story = {
511
511
  />
512
512
  </>
513
513
  ),
514
- ...withRTLDiff({ renderAs: 'iframe' }),
514
+ ...withRTLDiff(),
515
515
  };
@@ -1,79 +1,200 @@
1
- .snackbar {
2
- text-align: center;
1
+ .wds-Snackbar {
2
+ display: flex;
3
+ justify-content: center;
4
+ box-sizing: border-box;
5
+ padding-inline: 16px;
6
+ padding-inline: var(--size-16);
7
+ padding-block-end: calc(16px + env(safe-area-inset-bottom));
8
+ padding-block-end: calc(var(--size-16) + env(safe-area-inset-bottom));
3
9
  position: fixed;
4
10
  inset-block-end: 0;
5
11
  inset-inline-start: 0;
6
12
  inset-inline-end: 0;
7
13
  z-index: 1060;
8
14
  }
9
- .snackbar__text {
10
- background: #37517e;
11
- color: #ffffff;
12
- display: inline-flex;
13
- border-radius: 2px;
14
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
15
- align-items: center;
16
- justify-content: space-between;
17
- text-align: start;
18
- font-size: 0.875rem;
19
- font-size: var(--font-size-14);
20
- margin-block: 0;
21
- margin-inline: 16px;
22
- margin-inline: var(--size-16);
23
- padding-block: 8px;
24
- padding-block: var(--size-8);
25
- padding-inline: 16px;
26
- padding-inline: var(--size-16);
27
- inline-size: calc(100% - 32px);
28
- inline-size: calc(100% - var(--size-32));
29
- transition: 400ms cubic-bezier(0.215, 0.61, 0.355, 1);
30
- }
31
- .np-theme-personal .snackbar__text {
32
- box-shadow: 0 2px 4px 0 rgba(69, 71, 69, 0.35);
33
- position: relative;
34
- background: var(--color-contrast-theme);
35
- border-radius: 10px;
36
- border-radius: var(--radius-small);
37
- color: var(--color-contrast-overlay);
38
- }
39
- .np-theme-personal .snackbar__text::after {
40
- display: block;
41
- border-radius: inherit;
42
- block-size: 100%;
15
+ @media (min-width: 600px) {
16
+ .wds-Snackbar {
17
+ padding-block-end: 24px;
18
+ padding-block-end: var(--size-24);
19
+ }
20
+ }
21
+ .wds-Snackbar--swipe-dismiss {
22
+ transition: transform 150ms cubic-bezier(1, 0, 1, 1);
23
+ }
24
+ .wds-Snackbar-container.wds-prompt {
25
+ box-sizing: border-box;
43
26
  inline-size: 100%;
44
- content: "";
45
- position: absolute;
46
- inset-inline-start: 0;
47
- inset-block-start: 0;
48
- z-index: -1;
49
- background-color: rgba(134,167,189,0.10196);
50
- background-color: var(--color-background-neutral);
27
+ max-inline-size: 480px;
28
+ padding: 12px;
29
+ padding: var(--size-12);
30
+ gap: 8px;
31
+ gap: var(--size-8);
32
+ border-radius: 16px;
33
+ border-radius: var(--radius-medium);
34
+ text-align: start;
35
+ touch-action: pan-x pinch-zoom;
51
36
  }
52
- .np-theme-personal--dark .snackbar__text,
53
- .np-theme-personal--forest-green .snackbar__text {
54
- box-shadow: none;
37
+ .wds-Snackbar-container.wds-prompt .wds-prompt__content-wrapper--with-dismiss {
38
+ gap: 8px;
39
+ gap: var(--size-8);
40
+ grid-template-columns: auto minmax(0, 1fr);
55
41
  }
56
42
  @media (min-width: 600px) {
57
- .snackbar__text {
58
- inline-size: auto;
59
- max-inline-size: 600px;
43
+ .wds-Snackbar-container.wds-prompt .wds-prompt__content-wrapper--with-dismiss {
44
+ grid-template-columns: auto minmax(0, 1fr) auto;
60
45
  }
61
46
  }
62
- .snackbar__text__action {
63
- flex-shrink: 0;
64
- margin-inline-start: 16px;
65
- margin-inline-start: var(--size-16);
47
+ .wds-Snackbar-container.wds-prompt .wds-prompt__media-wrapper {
48
+ color: var(--color-sentiment-content-primary);
49
+ }
50
+ @media (max-width: 320px) {
51
+ .wds-Snackbar-container.wds-prompt .wds-prompt__media-wrapper {
52
+ padding-block-start: 4px;
53
+ padding-block-start: var(--size-4);
54
+ }
55
+ }
56
+ @media (max-width: 320px) {
57
+ .wds-Snackbar-container.wds-prompt .wds-prompt__media-wrapper:has(.wds-Snackbar__media-asset > .tw-icon) {
58
+ padding-block-start: 8px;
59
+ padding-block-start: var(--size-8);
60
+ }
61
+ }
62
+ @media (max-width: 320px) {
63
+ .wds-Snackbar-container.wds-prompt .wds-prompt__media-wrapper:has(+ .wds-Snackbar__content .wds-Snackbar__action) {
64
+ padding-block-start: 8px;
65
+ padding-block-start: var(--size-8);
66
+ }
67
+ }
68
+ @media (max-width: 320px) {
69
+ .wds-Snackbar-container.wds-prompt .wds-prompt__media-wrapper:has(+ .wds-Snackbar__content .wds-Snackbar__action):has(.wds-Snackbar__media-asset > .tw-icon) {
70
+ padding-block-start: 12px;
71
+ padding-block-start: var(--size-12);
72
+ }
73
+ }
74
+ .wds-Snackbar-container.wds-prompt .wds-Snackbar__media-asset svg {
75
+ inline-size: 24px;
76
+ inline-size: var(--size-24);
77
+ block-size: 24px;
78
+ block-size: var(--size-24);
66
79
  }
67
- .snackbar__text-container-enter,
68
- .snackbar__text-container-exit {
69
- transform: translateY(calc(100% + 10px));
80
+ .wds-Snackbar-container.wds-prompt .wds-Snackbar__process-indicator .process-circle {
81
+ stroke: currentColor;
70
82
  }
71
- .snackbar__text-container-enter-active {
72
- transform: translateY(-16px);
73
- transform: translateY(calc(-16px - env(safe-area-inset-bottom)));
83
+ .wds-Snackbar-container.wds-prompt .wds-prompt__dismiss.np-icon-button {
84
+ display: none;
85
+ align-self: flex-start;
86
+ margin-block-start: calc(4px - 1px);
87
+ margin-block-start: calc(var(--size-4) - 1px);
88
+ color: var(--color-sentiment-content-primary);
89
+ fill: var(--color-sentiment-content-primary);
90
+ background-color: transparent;
74
91
  }
75
92
  @media (min-width: 600px) {
76
- .snackbar__text-container-enter-active {
77
- transform: translateY(-24px);
93
+ .wds-Snackbar-container.wds-prompt .wds-prompt__dismiss.np-icon-button {
94
+ display: flex;
95
+ }
96
+ }
97
+ .wds-Snackbar-container.wds-prompt .wds-prompt__dismiss.np-icon-button:not(.disabled):not(:disabled):hover,
98
+ .wds-Snackbar-container.wds-prompt .wds-prompt__dismiss.np-icon-button:not(.disabled):not(:disabled):active {
99
+ background-color: var(--color-sentiment-interactive-secondary-neutral);
100
+ }
101
+ .wds-Snackbar-container.wds-prompt .wds-prompt__dismiss.np-icon-button:before {
102
+ inset: calc(-1 * 12px);
103
+ inset: calc(-1 * var(--size-12));
104
+ inline-size: calc(24px + 12px * 2);
105
+ inline-size: calc(var(--size-24) + var(--size-12) * 2);
106
+ block-size: calc(24px + 12px * 2);
107
+ block-size: calc(var(--size-24) + var(--size-12) * 2);
108
+ border-radius: 16px;
109
+ border-radius: var(--radius-medium);
110
+ }
111
+ .wds-Snackbar-container.wds-prompt .wds-Snackbar__action {
112
+ flex-shrink: 0;
113
+ }
114
+ .wds-Snackbar-container.wds-prompt .wds-Snackbar__action .wds-Button-labelText {
115
+ color: var(--color-sentiment-content-primary);
116
+ font-weight: 500;
117
+ font-weight: var(--font-weight-medium);
118
+ }
119
+ .wds-Snackbar__content {
120
+ display: flex;
121
+ align-items: flex-start;
122
+ gap: 8px;
123
+ gap: var(--size-8);
124
+ flex: 1 0 0;
125
+ min-block-size: 32px;
126
+ min-block-size: var(--size-32);
127
+ min-inline-size: 0;
128
+ }
129
+ .wds-Snackbar__message {
130
+ display: flex;
131
+ inline-size: auto;
132
+ flex: 1 0 0;
133
+ min-inline-size: 0;
134
+ align-self: stretch;
135
+ }
136
+ .wds-Snackbar__message > div {
137
+ display: flex;
138
+ flex: 1 0 0;
139
+ min-inline-size: 0;
140
+ }
141
+ .wds-Snackbar__body {
142
+ display: flex;
143
+ flex-direction: column;
144
+ justify-content: center;
145
+ flex: 1 0 0;
146
+ min-inline-size: 0;
147
+ align-self: stretch;
148
+ word-wrap: break-word;
149
+ word-break: break-word;
150
+ color: var(--color-sentiment-content-primary);
151
+ font-feature-settings: "liga" off, "clig" off;
152
+ font-family: 'Inter', Helvetica, Arial, sans-serif;
153
+ font-family: var(--font-family-regular);
154
+ font-size: 0.875rem;
155
+ font-size: var(--font-size-14);
156
+ font-style: normal;
157
+ font-weight: 500;
158
+ font-weight: var(--font-weight-medium);
159
+ line-height: 155%;
160
+ letter-spacing: -0.006em;
161
+ }
162
+ .wds-Snackbar-container-appear,
163
+ .wds-Snackbar-container-enter {
164
+ opacity: 0;
165
+ transform: translateY(80px) scale(0.5);
166
+ }
167
+ .wds-Snackbar-container-appear-active,
168
+ .wds-Snackbar-container-enter-active {
169
+ opacity: 1;
170
+ transform: translateY(0) scale(1);
171
+ transition: opacity 150ms linear, transform 300ms cubic-bezier(0, 0, 0, 1);
172
+ }
173
+ .wds-Snackbar-container-exit {
174
+ opacity: 1;
175
+ transform: translateY(0) scale(1);
176
+ }
177
+ .wds-Snackbar-container-exit-active {
178
+ opacity: 0;
179
+ transform: translateY(80px) scale(0.5);
180
+ transition: opacity 50ms linear 50ms, transform 150ms cubic-bezier(1, 0, 1, 1);
181
+ }
182
+ @media (prefers-reduced-motion: reduce) {
183
+ .wds-Snackbar--swipe-dismiss {
184
+ transition: none;
185
+ }
186
+ .wds-Snackbar-container-appear,
187
+ .wds-Snackbar-container-appear-active,
188
+ .wds-Snackbar-container-enter,
189
+ .wds-Snackbar-container-enter-active,
190
+ .wds-Snackbar-container-exit {
191
+ opacity: 1;
192
+ transform: none;
193
+ transition: none;
194
+ }
195
+ .wds-Snackbar-container-exit-active {
196
+ opacity: 0;
197
+ transform: none;
198
+ transition: none;
78
199
  }
79
200
  }
@@ -1,80 +1,209 @@
1
1
  @import (reference) "./../styles/variables/zindex.less";
2
- @import (reference) "./../styles/variables/neptune-tokens.less";
3
2
 
4
- .snackbar {
5
- text-align: center;
3
+ .wds-Snackbar {
4
+ display: flex;
5
+ justify-content: center;
6
+ box-sizing: border-box;
7
+ padding-inline: var(--size-16);
8
+ padding-bottom: calc(var(--size-16) + env(safe-area-inset-bottom));
6
9
  position: fixed;
7
10
  bottom: 0;
8
11
  left: 0;
9
-
10
12
  right: 0;
11
-
12
13
  z-index: @zindex-mobile-nav;
13
14
 
14
- &__text {
15
- background: @color-navy-background-elevated;
16
- color: @color-navy-content-primary;
17
- display: inline-flex;
18
- border-radius: 2px;
19
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
20
- align-items: center;
21
- justify-content: space-between;
22
- text-align: left;
23
-
24
- font-size: var(--font-size-14);
25
- margin: 0 var(--size-16);
26
- padding: var(--size-8) var(--size-16);
27
- width: calc(100% - var(--size-32));
28
- transition: 400ms cubic-bezier(0.215, 0.61, 0.355, 1);
29
-
30
- .np-theme-personal & {
31
- box-shadow: 0 2px 4px 0 rgba(69, 71, 69, 0.35);
32
- position: relative;
33
- background: var(--color-contrast-theme);
34
- border-radius: var(--radius-small);
35
- color: var(--color-contrast-overlay);
36
-
37
- &::after {
38
- display: block;
39
- border-radius: inherit;
40
- height: 100%;
41
- width: 100%;
42
- content: "";
43
- position: absolute;
44
- left: 0;
45
- top: 0;
46
- z-index: -1;
47
- background-color: var(--color-background-neutral);
15
+ @media (--screen-sm) {
16
+ padding-bottom: var(--size-24);
17
+ }
18
+
19
+ &--swipe-dismiss {
20
+ transition: transform 150ms cubic-bezier(1, 0, 1, 1);
21
+ }
22
+ }
23
+
24
+ .wds-Snackbar-container.wds-prompt {
25
+ box-sizing: border-box;
26
+ width: 100%;
27
+ max-width: 480px;
28
+ padding: var(--size-12);
29
+ gap: var(--size-8);
30
+ border-radius: var(--radius-medium);
31
+ text-align: start;
32
+ touch-action: pan-x pinch-zoom;
33
+
34
+ .wds-prompt__content-wrapper--with-dismiss {
35
+ gap: var(--size-8);
36
+ grid-template-columns: auto minmax(0, 1fr);
37
+
38
+ @media (--screen-sm) {
39
+ grid-template-columns: auto minmax(0, 1fr) auto;
40
+ }
41
+ }
42
+
43
+ .wds-prompt__media-wrapper {
44
+ color: var(--color-sentiment-content-primary);
45
+
46
+ @media (--screen-400-zoom) {
47
+ padding-top: var(--size-4);
48
+ }
49
+
50
+ &:has(.wds-Snackbar__media-asset > .tw-icon) {
51
+ @media (--screen-400-zoom) {
52
+ padding-top: var(--size-8);
48
53
  }
49
54
  }
50
55
 
51
- .np-theme-personal--dark &,
52
- .np-theme-personal--forest-green & {
53
- box-shadow: none;
56
+ &:has(+ .wds-Snackbar__content .wds-Snackbar__action) {
57
+ @media (--screen-400-zoom) {
58
+ padding-top: var(--size-8);
59
+ }
60
+
61
+ &:has(.wds-Snackbar__media-asset > .tw-icon) {
62
+ @media (--screen-400-zoom) {
63
+ padding-top: var(--size-12);
64
+ }
65
+ }
54
66
  }
67
+ }
68
+
69
+ .wds-Snackbar__media-asset {
70
+ svg {
71
+ width: var(--size-24);
72
+ height: var(--size-24);
73
+ }
74
+ }
75
+
76
+ .wds-Snackbar__process-indicator {
77
+ .process-circle {
78
+ stroke: currentColor;
79
+ }
80
+ }
81
+
82
+ .wds-prompt__dismiss.np-icon-button {
83
+ display: none;
84
+ align-self: flex-start;
85
+ margin-top: calc(var(--size-4) - 1px);
86
+ color: var(--color-sentiment-content-primary);
87
+ fill: var(--color-sentiment-content-primary);
88
+ background-color: transparent;
55
89
 
56
90
  @media (--screen-sm) {
57
- width: auto;
58
- max-width: 600px;
91
+ display: flex;
59
92
  }
60
93
 
61
- &__action {
62
- flex-shrink: 0;
63
- margin-left: var(--size-16);
94
+ &:not(.disabled, :disabled):hover,
95
+ &:not(.disabled, :disabled):active {
96
+ background-color: var(--color-sentiment-interactive-secondary-neutral);
64
97
  }
65
98
 
66
- &-container-enter,
67
- &-container-exit {
68
- transform: translateY(calc(100% + 10px));
99
+ &:before {
100
+ inset: calc(-1 * var(--size-12));
101
+ width: calc(var(--size-24) + var(--size-12) * 2);
102
+ height: calc(var(--size-24) + var(--size-12) * 2);
103
+ border-radius: var(--radius-medium);
69
104
  }
105
+ }
70
106
 
71
- &-container-enter-active {
72
- transform: translateY(-16px);
73
- transform: translateY(calc(-16px - env(safe-area-inset-bottom)));
107
+ .wds-Snackbar__action {
108
+ flex-shrink: 0;
74
109
 
75
- @media (--screen-sm) {
76
- transform: translateY(-24px);
77
- }
110
+ .wds-Button-labelText {
111
+ color: var(--color-sentiment-content-primary);
112
+ font-weight: var(--font-weight-medium);
78
113
  }
79
114
  }
80
115
  }
116
+
117
+ .wds-Snackbar__content {
118
+ display: flex;
119
+ align-items: flex-start;
120
+ gap: var(--size-8);
121
+ flex: 1 0 0;
122
+ min-height: var(--size-32);
123
+ min-width: 0;
124
+ }
125
+
126
+ .wds-Snackbar__message {
127
+ display: flex;
128
+ width: auto;
129
+ flex: 1 0 0;
130
+ min-width: 0;
131
+ align-self: stretch;
132
+
133
+ > div {
134
+ display: flex;
135
+ flex: 1 0 0;
136
+ min-width: 0;
137
+ }
138
+ }
139
+
140
+ .wds-Snackbar__body {
141
+ display: flex;
142
+ flex-direction: column;
143
+ justify-content: center;
144
+ flex: 1 0 0;
145
+ min-width: 0;
146
+ align-self: stretch;
147
+ overflow-wrap: break-word;
148
+ word-break: break-word;
149
+ color: var(--color-sentiment-content-primary);
150
+ font-feature-settings:
151
+ "liga" off,
152
+ "clig" off;
153
+ font-family: var(--font-family-regular);
154
+ font-size: var(--font-size-14);
155
+ font-style: normal;
156
+ font-weight: var(--font-weight-medium);
157
+ line-height: 155%;
158
+ letter-spacing: -0.006em;
159
+ }
160
+
161
+ .wds-Snackbar-container-appear,
162
+ .wds-Snackbar-container-enter {
163
+ opacity: 0;
164
+ transform: translateY(80px) scale(0.5);
165
+ }
166
+
167
+ .wds-Snackbar-container-appear-active,
168
+ .wds-Snackbar-container-enter-active {
169
+ opacity: 1;
170
+ transform: translateY(0) scale(1);
171
+ transition:
172
+ opacity 150ms linear,
173
+ transform 300ms cubic-bezier(0, 0, 0, 1);
174
+ }
175
+
176
+ .wds-Snackbar-container-exit {
177
+ opacity: 1;
178
+ transform: translateY(0) scale(1);
179
+ }
180
+
181
+ .wds-Snackbar-container-exit-active {
182
+ opacity: 0;
183
+ transform: translateY(80px) scale(0.5);
184
+ transition:
185
+ opacity 50ms linear 50ms,
186
+ transform 150ms cubic-bezier(1, 0, 1, 1);
187
+ }
188
+
189
+ @media (prefers-reduced-motion: reduce) {
190
+ .wds-Snackbar--swipe-dismiss {
191
+ transition: none;
192
+ }
193
+
194
+ .wds-Snackbar-container-appear,
195
+ .wds-Snackbar-container-appear-active,
196
+ .wds-Snackbar-container-enter,
197
+ .wds-Snackbar-container-enter-active,
198
+ .wds-Snackbar-container-exit {
199
+ opacity: 1;
200
+ transform: none;
201
+ transition: none;
202
+ }
203
+
204
+ .wds-Snackbar-container-exit-active {
205
+ opacity: 0;
206
+ transform: none;
207
+ transition: none;
208
+ }
209
+ }
@@ -0,0 +1,9 @@
1
+ import { defineMessages } from 'react-intl';
2
+
3
+ export default defineMessages({
4
+ escapeDismissHint: {
5
+ id: 'neptune.Snackbar.escapeDismissHint',
6
+ defaultMessage: 'Press Escape to dismiss.',
7
+ description: 'Screen-reader instruction for dismissing a Snackbar without moving focus',
8
+ },
9
+ });