@transferwise/components 46.166.0 → 46.168.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 (246) hide show
  1. package/README.md +1 -1
  2. package/build/CardContainer/CardContainer.js +34 -0
  3. package/build/CardContainer/CardContainer.js.map +1 -0
  4. package/build/CardContainer/CardContainer.mjs +30 -0
  5. package/build/CardContainer/CardContainer.mjs.map +1 -0
  6. package/build/CardWidget/CardWidget.js +98 -0
  7. package/build/CardWidget/CardWidget.js.map +1 -0
  8. package/build/CardWidget/CardWidget.mjs +94 -0
  9. package/build/CardWidget/CardWidget.mjs.map +1 -0
  10. package/build/CardWidget/CardWidgetAction.js +73 -0
  11. package/build/CardWidget/CardWidgetAction.js.map +1 -0
  12. package/build/CardWidget/CardWidgetAction.mjs +68 -0
  13. package/build/CardWidget/CardWidgetAction.mjs.map +1 -0
  14. package/build/Link/Link.js.map +1 -1
  15. package/build/Link/Link.mjs.map +1 -1
  16. package/build/ListItem/ListItem.js +2 -0
  17. package/build/ListItem/ListItem.js.map +1 -1
  18. package/build/ListItem/ListItem.mjs +2 -0
  19. package/build/ListItem/ListItem.mjs.map +1 -1
  20. package/build/Loader/Loader.js.map +1 -1
  21. package/build/Loader/Loader.mjs.map +1 -1
  22. package/build/Prompt/PrimitivePrompt/PrimitivePrompt.js +2 -1
  23. package/build/Prompt/PrimitivePrompt/PrimitivePrompt.js.map +1 -1
  24. package/build/Prompt/PrimitivePrompt/PrimitivePrompt.mjs +2 -1
  25. package/build/Prompt/PrimitivePrompt/PrimitivePrompt.mjs.map +1 -1
  26. package/build/Prompt/Snackbar/Snackbar.js +205 -0
  27. package/build/Prompt/Snackbar/Snackbar.js.map +1 -0
  28. package/build/Prompt/Snackbar/Snackbar.messages.js +14 -0
  29. package/build/Prompt/Snackbar/Snackbar.messages.js.map +1 -0
  30. package/build/Prompt/Snackbar/Snackbar.messages.mjs +10 -0
  31. package/build/Prompt/Snackbar/Snackbar.messages.mjs.map +1 -0
  32. package/build/Prompt/Snackbar/Snackbar.mjs +203 -0
  33. package/build/Prompt/Snackbar/Snackbar.mjs.map +1 -0
  34. package/build/Prompt/Snackbar/SnackbarContext.js.map +1 -0
  35. package/build/Prompt/Snackbar/SnackbarContext.mjs.map +1 -0
  36. package/build/Prompt/Snackbar/SnackbarPortal.js +12 -0
  37. package/build/Prompt/Snackbar/SnackbarPortal.js.map +1 -0
  38. package/build/Prompt/Snackbar/SnackbarPortal.mjs +8 -0
  39. package/build/Prompt/Snackbar/SnackbarPortal.mjs.map +1 -0
  40. package/build/Prompt/Snackbar/SnackbarProvider.js +42 -0
  41. package/build/Prompt/Snackbar/SnackbarProvider.js.map +1 -0
  42. package/build/Prompt/Snackbar/SnackbarProvider.mjs +38 -0
  43. package/build/Prompt/Snackbar/SnackbarProvider.mjs.map +1 -0
  44. package/build/Prompt/Snackbar/constants.js +17 -0
  45. package/build/Prompt/Snackbar/constants.js.map +1 -0
  46. package/build/Prompt/Snackbar/constants.mjs +11 -0
  47. package/build/Prompt/Snackbar/constants.mjs.map +1 -0
  48. package/build/Prompt/Snackbar/useSnackbar.js.map +1 -0
  49. package/build/Prompt/Snackbar/useSnackbar.mjs.map +1 -0
  50. package/build/Prompt/Snackbar/useSnackbarAutoDismiss.js +66 -0
  51. package/build/Prompt/Snackbar/useSnackbarAutoDismiss.js.map +1 -0
  52. package/build/Prompt/Snackbar/useSnackbarAutoDismiss.mjs +62 -0
  53. package/build/Prompt/Snackbar/useSnackbarAutoDismiss.mjs.map +1 -0
  54. package/build/Prompt/Snackbar/useSnackbarManager.js +153 -0
  55. package/build/Prompt/Snackbar/useSnackbarManager.js.map +1 -0
  56. package/build/Prompt/Snackbar/useSnackbarManager.mjs +149 -0
  57. package/build/Prompt/Snackbar/useSnackbarManager.mjs.map +1 -0
  58. package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.js +135 -0
  59. package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.js.map +1 -0
  60. package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.mjs +131 -0
  61. package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.mjs.map +1 -0
  62. package/build/Section/Section.js.map +1 -1
  63. package/build/Section/Section.mjs.map +1 -1
  64. package/build/_deprecated/Select/Select.js +1 -1
  65. package/build/_deprecated/Select/Select.js.map +1 -1
  66. package/build/_deprecated/Select/Select.mjs +1 -1
  67. package/build/_deprecated/Select/Select.mjs.map +1 -1
  68. package/build/common/BottomSheet/BottomSheet.js +1 -3
  69. package/build/common/BottomSheet/BottomSheet.js.map +1 -1
  70. package/build/common/BottomSheet/BottomSheet.mjs +1 -3
  71. package/build/common/BottomSheet/BottomSheet.mjs.map +1 -1
  72. package/build/i18n/en.json +1 -0
  73. package/build/i18n/en.json.js +1 -0
  74. package/build/i18n/en.json.js.map +1 -1
  75. package/build/i18n/en.json.mjs +1 -0
  76. package/build/i18n/en.json.mjs.map +1 -1
  77. package/build/index.js +7 -3
  78. package/build/index.js.map +1 -1
  79. package/build/index.mjs +5 -3
  80. package/build/index.mjs.map +1 -1
  81. package/build/main.css +331 -75
  82. package/build/styles/CardContainer/CardContainer.css +108 -0
  83. package/build/styles/CardWidget/CardWidget.css +78 -0
  84. package/build/styles/IconButton/IconButton.css +3 -4
  85. package/build/styles/ListItem/ListItem.css +8 -0
  86. package/build/styles/Prompt/Snackbar/Snackbar.css +134 -0
  87. package/build/styles/main.css +331 -75
  88. package/build/types/Body/Body.d.ts +2 -2
  89. package/build/types/CardContainer/CardContainer.d.ts +8 -0
  90. package/build/types/CardContainer/CardContainer.d.ts.map +1 -0
  91. package/build/types/CardContainer/CardContainer.types.d.ts +55 -0
  92. package/build/types/CardContainer/CardContainer.types.d.ts.map +1 -0
  93. package/build/types/CardContainer/_stories/helpers.d.ts +3 -0
  94. package/build/types/CardContainer/_stories/helpers.d.ts.map +1 -0
  95. package/build/types/CardContainer/index.d.ts +3 -0
  96. package/build/types/CardContainer/index.d.ts.map +1 -0
  97. package/build/types/CardWidget/CardWidget.d.ts +10 -0
  98. package/build/types/CardWidget/CardWidget.d.ts.map +1 -0
  99. package/build/types/CardWidget/CardWidget.types.d.ts +55 -0
  100. package/build/types/CardWidget/CardWidget.types.d.ts.map +1 -0
  101. package/build/types/CardWidget/CardWidgetAction.d.ts +54 -0
  102. package/build/types/CardWidget/CardWidgetAction.d.ts.map +1 -0
  103. package/build/types/CardWidget/index.d.ts +4 -0
  104. package/build/types/CardWidget/index.d.ts.map +1 -0
  105. package/build/types/IconButton/IconButton.d.ts +1 -1
  106. package/build/types/Link/Link.d.ts +1 -1
  107. package/build/types/ListItem/ListItem.d.ts +1 -1
  108. package/build/types/ListItem/ListItem.d.ts.map +1 -1
  109. package/build/types/Loader/Loader.d.ts +1 -1
  110. package/build/types/MoneyInput/MoneyInput.d.ts +1 -1
  111. package/build/types/MoneyInput/MoneyInput.d.ts.map +1 -1
  112. package/build/types/Prompt/PrimitivePrompt/PrimitivePrompt.d.ts +11 -0
  113. package/build/types/Prompt/PrimitivePrompt/PrimitivePrompt.d.ts.map +1 -1
  114. package/build/types/Prompt/Snackbar/Snackbar.d.ts +62 -0
  115. package/build/types/Prompt/Snackbar/Snackbar.d.ts.map +1 -0
  116. package/build/types/Prompt/Snackbar/Snackbar.messages.d.ts +9 -0
  117. package/build/types/Prompt/Snackbar/Snackbar.messages.d.ts.map +1 -0
  118. package/build/types/Prompt/Snackbar/Snackbar.types.d.ts +12 -0
  119. package/build/types/Prompt/Snackbar/Snackbar.types.d.ts.map +1 -0
  120. package/build/types/{Snackbar → Prompt/Snackbar}/SnackbarContext.d.ts +2 -2
  121. package/build/types/Prompt/Snackbar/SnackbarContext.d.ts.map +1 -0
  122. package/build/types/Prompt/Snackbar/SnackbarPortal.d.ts +4 -0
  123. package/build/types/Prompt/Snackbar/SnackbarPortal.d.ts.map +1 -0
  124. package/build/types/Prompt/Snackbar/SnackbarProvider.d.ts +13 -0
  125. package/build/types/Prompt/Snackbar/SnackbarProvider.d.ts.map +1 -0
  126. package/build/types/Prompt/Snackbar/constants.d.ts +9 -0
  127. package/build/types/Prompt/Snackbar/constants.d.ts.map +1 -0
  128. package/build/types/{Snackbar → Prompt/Snackbar}/index.d.ts +1 -1
  129. package/build/types/Prompt/Snackbar/index.d.ts.map +1 -0
  130. package/build/types/Prompt/Snackbar/useSnackbar.d.ts +3 -0
  131. package/build/types/Prompt/Snackbar/useSnackbar.d.ts.map +1 -0
  132. package/build/types/Prompt/Snackbar/useSnackbarAutoDismiss.d.ts +13 -0
  133. package/build/types/Prompt/Snackbar/useSnackbarAutoDismiss.d.ts.map +1 -0
  134. package/build/types/Prompt/Snackbar/useSnackbarManager.d.ts +20 -0
  135. package/build/types/Prompt/Snackbar/useSnackbarManager.d.ts.map +1 -0
  136. package/build/types/Prompt/Snackbar/useSnackbarSwipeDismiss.d.ts +22 -0
  137. package/build/types/Prompt/Snackbar/useSnackbarSwipeDismiss.d.ts.map +1 -0
  138. package/build/types/Section/Section.d.ts +1 -1
  139. package/build/types/Title/Title.d.ts +2 -2
  140. package/build/types/Upload/Steps/UploadImageStep/UploadImageStep.d.ts +1 -1
  141. package/build/types/UploadInput/UploadItem/UploadItemLink.d.ts +1 -1
  142. package/build/types/_deprecated/Select/Select.d.ts +1 -1
  143. package/build/types/common/BottomSheet/BottomSheet.d.ts +1 -3
  144. package/build/types/common/BottomSheet/BottomSheet.d.ts.map +1 -1
  145. package/build/types/index.d.ts +9 -5
  146. package/build/types/index.d.ts.map +1 -1
  147. package/build/types/test-utils/index.d.ts +2 -0
  148. package/build/types/test-utils/index.d.ts.map +1 -1
  149. package/package.json +4 -4
  150. package/src/CardContainer/CardContainer.css +108 -0
  151. package/src/CardContainer/CardContainer.less +171 -0
  152. package/src/CardContainer/CardContainer.test.tsx +150 -0
  153. package/src/CardContainer/CardContainer.tsx +51 -0
  154. package/src/CardContainer/CardContainer.types.ts +62 -0
  155. package/src/CardContainer/_stories/CardContainer.story.tsx +167 -0
  156. package/src/CardContainer/_stories/CardContainer.test.story.tsx +103 -0
  157. package/src/CardContainer/_stories/helpers.tsx +50 -0
  158. package/src/CardContainer/index.ts +6 -0
  159. package/src/CardWidget/CardWidget.css +78 -0
  160. package/src/CardWidget/CardWidget.less +107 -0
  161. package/src/CardWidget/CardWidget.test.tsx +221 -0
  162. package/src/CardWidget/CardWidget.tsx +78 -0
  163. package/src/CardWidget/CardWidget.types.ts +63 -0
  164. package/src/CardWidget/CardWidgetAction.tsx +128 -0
  165. package/src/CardWidget/_stories/CardWidget.story.tsx +238 -0
  166. package/src/CardWidget/_stories/CardWidget.test.story.tsx +350 -0
  167. package/src/CardWidget/index.ts +3 -0
  168. package/src/IconButton/IconButton.css +3 -4
  169. package/src/IconButton/IconButton.less +14 -1
  170. package/src/Link/Link.tsx +1 -1
  171. package/src/ListItem/AdditionalInfo/_stories/ListItemAdditionalInfo.story.tsx +1 -1
  172. package/src/ListItem/AvatarView/_stories/ListItemAvatarView.story.tsx +3 -3
  173. package/src/ListItem/ListItem.css +8 -0
  174. package/src/ListItem/ListItem.less +8 -0
  175. package/src/ListItem/ListItem.test.tsx +20 -0
  176. package/src/ListItem/ListItem.tsx +3 -1
  177. package/src/ListItem/_stories/ListItem.disabled.story.tsx +1 -1
  178. package/src/ListItem/_stories/ListItem.layout.test.story.tsx +1 -1
  179. package/src/ListItem/_stories/ListItem.scenarios.story.tsx +2 -2
  180. package/src/ListItem/_stories/ListItem.story.tsx +1 -1
  181. package/src/Loader/Loader.tsx +1 -1
  182. package/src/Prompt/CriticalBanner/_stories/CriticalBanner.docs.mdx +122 -0
  183. package/src/Prompt/CriticalBanner/_stories/CriticalBanner.story.tsx +0 -2
  184. package/src/Prompt/PrimitivePrompt/PrimitivePrompt.test.tsx +24 -1
  185. package/src/Prompt/PrimitivePrompt/PrimitivePrompt.tsx +8 -2
  186. package/src/Prompt/Snackbar/Snackbar.css +134 -0
  187. package/src/Prompt/Snackbar/Snackbar.less +159 -0
  188. package/src/Prompt/Snackbar/Snackbar.messages.ts +9 -0
  189. package/src/Prompt/Snackbar/Snackbar.test.tsx +1079 -0
  190. package/src/Prompt/Snackbar/Snackbar.tsx +245 -0
  191. package/src/Prompt/Snackbar/Snackbar.types.ts +17 -0
  192. package/src/{Snackbar → Prompt/Snackbar}/SnackbarContext.ts +2 -2
  193. package/src/Prompt/Snackbar/SnackbarPortal.tsx +8 -0
  194. package/src/Prompt/Snackbar/SnackbarProvider.test.tsx +783 -0
  195. package/src/Prompt/Snackbar/SnackbarProvider.tsx +41 -0
  196. package/src/Prompt/Snackbar/_stories/Snackbar.accessibility.docs.mdx +58 -0
  197. package/src/{Snackbar → Prompt/Snackbar}/_stories/Snackbar.rtl.test.story.tsx +17 -9
  198. package/src/Prompt/Snackbar/_stories/Snackbar.story.tsx +416 -0
  199. package/src/Prompt/Snackbar/_stories/Snackbar.test.story.tsx +263 -0
  200. package/src/Prompt/Snackbar/constants.ts +10 -0
  201. package/src/{Snackbar → Prompt/Snackbar}/index.ts +1 -1
  202. package/src/Prompt/Snackbar/useSnackbarAutoDismiss.ts +74 -0
  203. package/src/Prompt/Snackbar/useSnackbarManager.ts +169 -0
  204. package/src/Prompt/Snackbar/useSnackbarSwipeDismiss.ts +169 -0
  205. package/src/Section/Section.tsx +1 -1
  206. package/src/_deprecated/Select/Select.tsx +1 -1
  207. package/src/_deprecated/Select/_stories/Select.story.tsx +1 -1
  208. package/src/common/BottomSheet/BottomSheet.tsx +1 -3
  209. package/src/i18n/en.json +1 -0
  210. package/src/index.ts +18 -5
  211. package/src/main.css +331 -75
  212. package/src/main.less +3 -1
  213. package/build/Snackbar/Snackbar.js +0 -128
  214. package/build/Snackbar/Snackbar.js.map +0 -1
  215. package/build/Snackbar/Snackbar.mjs +0 -123
  216. package/build/Snackbar/Snackbar.mjs.map +0 -1
  217. package/build/Snackbar/SnackbarContext.js.map +0 -1
  218. package/build/Snackbar/SnackbarContext.mjs.map +0 -1
  219. package/build/Snackbar/SnackbarProvider.js +0 -46
  220. package/build/Snackbar/SnackbarProvider.js.map +0 -1
  221. package/build/Snackbar/SnackbarProvider.mjs +0 -42
  222. package/build/Snackbar/SnackbarProvider.mjs.map +0 -1
  223. package/build/Snackbar/useSnackbar.js.map +0 -1
  224. package/build/Snackbar/useSnackbar.mjs.map +0 -1
  225. package/build/styles/Snackbar/Snackbar.css +0 -71
  226. package/build/types/Snackbar/Snackbar.d.ts +0 -16
  227. package/build/types/Snackbar/Snackbar.d.ts.map +0 -1
  228. package/build/types/Snackbar/SnackbarContext.d.ts.map +0 -1
  229. package/build/types/Snackbar/SnackbarProvider.d.ts +0 -6
  230. package/build/types/Snackbar/SnackbarProvider.d.ts.map +0 -1
  231. package/build/types/Snackbar/index.d.ts.map +0 -1
  232. package/build/types/Snackbar/useSnackbar.d.ts +0 -3
  233. package/build/types/Snackbar/useSnackbar.d.ts.map +0 -1
  234. package/src/FlowNavigation/_stories/FlowNavigation.CriticalBanner.docs.mdx +0 -66
  235. package/src/Snackbar/Snackbar.css +0 -71
  236. package/src/Snackbar/Snackbar.less +0 -80
  237. package/src/Snackbar/Snackbar.test.tsx +0 -206
  238. package/src/Snackbar/Snackbar.tsx +0 -129
  239. package/src/Snackbar/SnackbarProvider.tsx +0 -33
  240. package/src/Snackbar/_stories/Snackbar.story.tsx +0 -89
  241. package/src/Snackbar/_stories/Snackbar.test.story.tsx +0 -139
  242. /package/build/{Snackbar → Prompt/Snackbar}/SnackbarContext.js +0 -0
  243. /package/build/{Snackbar → Prompt/Snackbar}/SnackbarContext.mjs +0 -0
  244. /package/build/{Snackbar → Prompt/Snackbar}/useSnackbar.js +0 -0
  245. /package/build/{Snackbar → Prompt/Snackbar}/useSnackbar.mjs +0 -0
  246. /package/src/{Snackbar → Prompt/Snackbar}/useSnackbar.ts +0 -0
@@ -0,0 +1,205 @@
1
+ 'use strict';
2
+
3
+ var icons = require('@transferwise/icons');
4
+ var React = require('react');
5
+ var reactIntl = require('react-intl');
6
+ var reactTransitionGroup = require('react-transition-group');
7
+ var Button_resolver = require('../../Button/Button.resolver.js');
8
+ var Body = require('../../Body/Body.js');
9
+ require('../../common/theme.js');
10
+ require('../../common/direction.js');
11
+ require('@transferwise/neptune-tokens');
12
+ require('../../common/PropsValues/control.js');
13
+ require('../../common/PropsValues/size.js');
14
+ require('../../common/PropsValues/typography.js');
15
+ require('../../common/PropsValues/width.js');
16
+ require('../../common/PropsValues/type.js');
17
+ require('../../common/PropsValues/dateMode.js');
18
+ require('../../common/PropsValues/monthFormat.js');
19
+ require('../../common/PropsValues/position.js');
20
+ require('../../common/PropsValues/layouts.js');
21
+ require('../../common/PropsValues/status.js');
22
+ require('../../common/PropsValues/sentiment.js');
23
+ require('../../common/PropsValues/profileType.js');
24
+ require('../../common/PropsValues/variant.js');
25
+ require('../../common/PropsValues/scroll.js');
26
+ require('../../common/PropsValues/markdownNodeType.js');
27
+ require('../../common/fileType.js');
28
+ require('@transferwise/formatting');
29
+ require('clsx');
30
+ require('../../common/CloseButton/CloseButton.messages.js');
31
+ var jsxRuntime = require('react/jsx-runtime');
32
+ var LiveRegion = require('../../common/LiveRegion/LiveRegion.js');
33
+ var PrimitivePrompt = require('../PrimitivePrompt/PrimitivePrompt.js');
34
+ var ProcessIndicator = require('../../ProcessIndicator/ProcessIndicator.js');
35
+ var StatusIcon = require('../../StatusIcon/StatusIcon.js');
36
+ var constants = require('./constants.js');
37
+ var Snackbar_messages = require('./Snackbar.messages.js');
38
+ var useSnackbarAutoDismiss = require('./useSnackbarAutoDismiss.js');
39
+ var useSnackbarSwipeDismiss = require('./useSnackbarSwipeDismiss.js');
40
+
41
+ const Snackbar = ({
42
+ action,
43
+ announcementKey,
44
+ duration,
45
+ loading = false,
46
+ media,
47
+ onDismissRequest,
48
+ onExited,
49
+ sentiment = 'neutral',
50
+ text,
51
+ timeout,
52
+ visible
53
+ }) => {
54
+ const {
55
+ formatMessage
56
+ } = reactIntl.useIntl();
57
+ const {
58
+ handleBlur,
59
+ handleEntered,
60
+ handleFocus,
61
+ handleMouseEnter,
62
+ handleMouseLeave,
63
+ setSwiping,
64
+ surfaceRef
65
+ } = useSnackbarAutoDismiss.default({
66
+ duration,
67
+ loading,
68
+ onDismissRequest,
69
+ timeout,
70
+ visible
71
+ });
72
+ const {
73
+ clearSwipePosition,
74
+ containerRef,
75
+ handleClickCapture,
76
+ handlePointerCancel,
77
+ handlePointerDown,
78
+ handlePointerMove,
79
+ handlePointerUp
80
+ } = useSnackbarSwipeDismiss.default({
81
+ onDismissRequest,
82
+ onSwipeChange: setSwiping,
83
+ visible
84
+ });
85
+ React.useEffect(() => {
86
+ if (!visible) {
87
+ return undefined;
88
+ }
89
+ const handleKeyDown = event => {
90
+ if (event.key === 'Escape' && !event.defaultPrevented && !event.isComposing) {
91
+ onDismissRequest();
92
+ }
93
+ };
94
+ // Let document-level overlays consume Escape before this fallback handles it.
95
+ window.addEventListener('keydown', handleKeyDown);
96
+ return () => window.removeEventListener('keydown', handleKeyDown);
97
+ }, [visible, onDismissRequest]);
98
+ const handleActionClick = event => {
99
+ try {
100
+ action?.onClick?.(event);
101
+ } finally {
102
+ onDismissRequest();
103
+ }
104
+ };
105
+ const renderMedia = () => {
106
+ if (loading) {
107
+ return /*#__PURE__*/jsxRuntime.jsx(ProcessIndicator.default, {
108
+ className: "wds-Snackbar__process-indicator",
109
+ "data-testid": "Snackbar_ProcessIndicator",
110
+ size: "xs"
111
+ });
112
+ }
113
+ if (media) {
114
+ return /*#__PURE__*/jsxRuntime.jsx("span", {
115
+ className: "wds-Snackbar__media-asset",
116
+ children: media
117
+ });
118
+ }
119
+ if (sentiment === 'proposition') {
120
+ return /*#__PURE__*/jsxRuntime.jsx("span", {
121
+ className: "wds-Snackbar__media-asset",
122
+ children: /*#__PURE__*/jsxRuntime.jsx(icons.Tags, {
123
+ "aria-hidden": true,
124
+ size: 24
125
+ })
126
+ });
127
+ }
128
+ return /*#__PURE__*/jsxRuntime.jsx(StatusIcon.default, {
129
+ sentiment: sentiment,
130
+ size: 24
131
+ });
132
+ };
133
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
134
+ ref: containerRef,
135
+ className: "wds-Snackbar",
136
+ style: {
137
+ '--Snackbar-enter-duration': `${constants.SNACKBAR_ENTER_DURATION}ms`,
138
+ '--Snackbar-exit-duration': `${constants.SNACKBAR_EXIT_DURATION}ms`
139
+ },
140
+ children: /*#__PURE__*/jsxRuntime.jsx(reactTransitionGroup.CSSTransition, {
141
+ appear: true,
142
+ nodeRef: surfaceRef,
143
+ in: visible,
144
+ classNames: "wds-Snackbar-container",
145
+ timeout: {
146
+ appear: constants.SNACKBAR_ENTER_DURATION,
147
+ enter: constants.SNACKBAR_ENTER_DURATION,
148
+ exit: constants.SNACKBAR_EXIT_DURATION
149
+ },
150
+ unmountOnExit: true,
151
+ onEntered: handleEntered,
152
+ onExited: () => {
153
+ clearSwipePosition();
154
+ onExited();
155
+ },
156
+ children: /*#__PURE__*/jsxRuntime.jsx(PrimitivePrompt.PrimitivePrompt, {
157
+ ref: surfaceRef,
158
+ className: "wds-Snackbar-container",
159
+ sentiment: loading ? 'neutral' : sentiment,
160
+ emphasis: "elevated",
161
+ media: renderMedia(),
162
+ dismissButtonPriority: "minimal",
163
+ onDismiss: onDismissRequest,
164
+ onMouseEnter: handleMouseEnter,
165
+ onMouseLeave: handleMouseLeave,
166
+ onFocus: handleFocus,
167
+ onBlur: handleBlur,
168
+ onClickCapture: handleClickCapture,
169
+ onDragStart: event => event.preventDefault(),
170
+ onPointerDown: visible ? handlePointerDown : undefined,
171
+ onPointerMove: handlePointerMove,
172
+ onPointerUp: handlePointerUp,
173
+ onPointerCancel: handlePointerCancel,
174
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
175
+ className: "wds-Snackbar__content",
176
+ children: [/*#__PURE__*/jsxRuntime.jsx(LiveRegion.LiveRegion, {
177
+ "aria-live": "polite",
178
+ announceOnChange: announcementKey,
179
+ className: "wds-Snackbar__message",
180
+ children: /*#__PURE__*/jsxRuntime.jsxs(Body.default, {
181
+ as: "span",
182
+ className: "wds-Snackbar__body",
183
+ children: [text, /*#__PURE__*/jsxRuntime.jsxs("span", {
184
+ className: "sr-only",
185
+ children: [" ", formatMessage(Snackbar_messages.default.escapeDismissHint)]
186
+ })]
187
+ })
188
+ }), action ? /*#__PURE__*/jsxRuntime.jsx(Button_resolver.default, {
189
+ className: "wds-Snackbar__action",
190
+ v2: true,
191
+ size: "sm",
192
+ priority: "secondary",
193
+ href: action.href,
194
+ target: action.target,
195
+ onClick: handleActionClick,
196
+ children: action.label
197
+ }) : null]
198
+ })
199
+ })
200
+ })
201
+ });
202
+ };
203
+
204
+ exports.Snackbar = Snackbar;
205
+ //# sourceMappingURL=Snackbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Snackbar.js","sources":["../../../src/Prompt/Snackbar/Snackbar.tsx"],"sourcesContent":["import { Tags } from '@transferwise/icons';\nimport { useEffect } from 'react';\nimport { useIntl } from 'react-intl';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Button, { type ButtonReferenceType } from '../../Button';\nimport Body from '../../Body';\nimport { LiveRegion } from '../../common';\nimport type { ThemeDark, ThemeLight } from '../../common';\nimport { PrimitivePrompt } from '../PrimitivePrompt';\nimport ProcessIndicator from '../../ProcessIndicator';\nimport type { Sentiment } from '../../SentimentSurface';\nimport StatusIcon from '../../StatusIcon';\n\nimport { SNACKBAR_ENTER_DURATION, SNACKBAR_EXIT_DURATION } from './constants';\nimport messages from './Snackbar.messages';\nimport type { SnackbarAction, SnackbarDuration } from './Snackbar.types';\nimport useSnackbarAutoDismiss from './useSnackbarAutoDismiss';\nimport useSnackbarSwipeDismiss from './useSnackbarSwipeDismiss';\n\n/**\n * Props for the controlled Snackbar surface, including provider-managed lifecycle controls.\n * Use SnackbarCreationProps when creating notifications through SnackbarProvider/useSnackbar.\n */\nexport interface SnackbarProps {\n /** One optional callback or navigation action. Activating it dismisses after its callback runs. */\n action?: SnackbarAction;\n /** Changes for each new Snackbar so LiveRegion re-announces it. */\n announcementKey: number;\n /**\n * Controls auto-dismiss with a four-second, six-second or indefinite duration after entry finishes.\n * Takes precedence over the deprecated `timeout`.\n * When neither option is supplied, the default is 4000ms (previously 4500ms).\n * @default 'default'\n */\n duration?: SnackbarDuration;\n /**\n * Replaces the media with a progress indicator, uses neutral styling and prevents auto-dismiss.\n * Takes precedence over `media`, `sentiment`, `duration` and the deprecated `timeout`.\n * @default false\n */\n loading?: boolean;\n /** Overrides sentiment-derived media with content for the 24×24px media slot. */\n media?: React.ReactNode;\n /**\n * Called once after this Snackbar finishes exiting, including after an action (e.g. Undo)\n * or replacement by a newer Snackbar. The action callback runs first.\n * Not called for Snackbars discarded before being shown, such as earlier creates batched\n * before the first render.\n */\n onDismiss?: () => void;\n /** Requests an exit; the provider retains the surface until onExited confirms it has finished. */\n onDismissRequest: () => void;\n /** Called after the exit animation so the provider can unmount active or show its replacement. */\n onExited: () => void;\n /**\n * Controls the sentiment surface and default media.\n * @default 'neutral'\n */\n sentiment?: Sentiment;\n /** Message content. Empty strings or absent text dismiss without creating a blank replacement. */\n text: React.ReactNode;\n /** @deprecated Has no effect. Snackbar theming is based on ThemeProvider. */\n theme?: ThemeLight | ThemeDark;\n /**\n * @deprecated Use `duration` instead. Explicit millisecond values remain supported and are not\n * automatically remapped when no `duration` is supplied.\n * To migrate, use `default` for 0–5000ms, `extended` for values above 5000ms, and `indefinite`\n * for intentionally persistent notifications.\n */\n timeout?: number;\n /** @deprecated Has no effect when using SnackbarProvider, which manages Snackbar identity. */\n timestamp?: number;\n /** Controls entry/exit; the surface does not manage visibility itself. */\n visible: boolean;\n}\n\nexport const Snackbar = ({\n action,\n announcementKey,\n duration,\n loading = false,\n media,\n onDismissRequest,\n onExited,\n sentiment = 'neutral',\n text,\n timeout,\n visible,\n}: SnackbarProps) => {\n const { formatMessage } = useIntl();\n const {\n handleBlur,\n handleEntered,\n handleFocus,\n handleMouseEnter,\n handleMouseLeave,\n setSwiping,\n surfaceRef,\n } = useSnackbarAutoDismiss({\n duration,\n loading,\n onDismissRequest,\n timeout,\n visible,\n });\n const {\n clearSwipePosition,\n containerRef,\n handleClickCapture,\n handlePointerCancel,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n } = useSnackbarSwipeDismiss({ onDismissRequest, onSwipeChange: setSwiping, visible });\n\n useEffect(() => {\n if (!visible) {\n return undefined;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && !event.defaultPrevented && !event.isComposing) {\n onDismissRequest();\n }\n };\n\n // Let document-level overlays consume Escape before this fallback handles it.\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [visible, onDismissRequest]);\n\n const handleActionClick: React.MouseEventHandler<ButtonReferenceType> = (event) => {\n try {\n action?.onClick?.(event);\n } finally {\n onDismissRequest();\n }\n };\n\n const renderMedia = () => {\n if (loading) {\n return (\n <ProcessIndicator\n className=\"wds-Snackbar__process-indicator\"\n data-testid=\"Snackbar_ProcessIndicator\"\n size=\"xs\"\n />\n );\n }\n\n if (media) {\n return <span className=\"wds-Snackbar__media-asset\">{media}</span>;\n }\n\n if (sentiment === 'proposition') {\n return (\n <span className=\"wds-Snackbar__media-asset\">\n <Tags aria-hidden size={24} />\n </span>\n );\n }\n\n return <StatusIcon sentiment={sentiment} size={24} />;\n };\n\n return (\n <div\n ref={containerRef}\n className=\"wds-Snackbar\"\n style={\n {\n '--Snackbar-enter-duration': `${SNACKBAR_ENTER_DURATION}ms`,\n '--Snackbar-exit-duration': `${SNACKBAR_EXIT_DURATION}ms`,\n } as React.CSSProperties\n }\n >\n <CSSTransition\n appear\n nodeRef={surfaceRef}\n in={visible}\n classNames=\"wds-Snackbar-container\"\n timeout={{\n appear: SNACKBAR_ENTER_DURATION,\n enter: SNACKBAR_ENTER_DURATION,\n exit: SNACKBAR_EXIT_DURATION,\n }}\n unmountOnExit\n onEntered={handleEntered}\n onExited={() => {\n clearSwipePosition();\n onExited();\n }}\n >\n <PrimitivePrompt\n ref={surfaceRef}\n className=\"wds-Snackbar-container\"\n sentiment={loading ? 'neutral' : sentiment}\n emphasis=\"elevated\"\n media={renderMedia()}\n dismissButtonPriority=\"minimal\"\n onDismiss={onDismissRequest}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onClickCapture={handleClickCapture}\n onDragStart={(event) => event.preventDefault()}\n onPointerDown={visible ? handlePointerDown : undefined}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerCancel}\n >\n <div className=\"wds-Snackbar__content\">\n <LiveRegion\n aria-live=\"polite\"\n announceOnChange={announcementKey}\n className=\"wds-Snackbar__message\"\n >\n <Body as=\"span\" className=\"wds-Snackbar__body\">\n {text}\n <span className=\"sr-only\"> {formatMessage(messages.escapeDismissHint)}</span>\n </Body>\n </LiveRegion>\n {action ? (\n <Button\n className=\"wds-Snackbar__action\"\n v2\n size=\"sm\"\n priority=\"secondary\"\n href={action.href}\n target={action.target}\n onClick={handleActionClick}\n >\n {action.label}\n </Button>\n ) : null}\n </div>\n </PrimitivePrompt>\n </CSSTransition>\n </div>\n );\n};\n\nexport default Snackbar;\n"],"names":["Snackbar","action","announcementKey","duration","loading","media","onDismissRequest","onExited","sentiment","text","timeout","visible","formatMessage","useIntl","handleBlur","handleEntered","handleFocus","handleMouseEnter","handleMouseLeave","setSwiping","surfaceRef","useSnackbarAutoDismiss","clearSwipePosition","containerRef","handleClickCapture","handlePointerCancel","handlePointerDown","handlePointerMove","handlePointerUp","useSnackbarSwipeDismiss","onSwipeChange","useEffect","undefined","handleKeyDown","event","key","defaultPrevented","isComposing","window","addEventListener","removeEventListener","handleActionClick","onClick","renderMedia","_jsx","ProcessIndicator","className","size","children","Tags","StatusIcon","ref","style","SNACKBAR_ENTER_DURATION","SNACKBAR_EXIT_DURATION","CSSTransition","appear","nodeRef","in","classNames","enter","exit","unmountOnExit","onEntered","PrimitivePrompt","emphasis","dismissButtonPriority","onDismiss","onMouseEnter","onMouseLeave","onFocus","onBlur","onClickCapture","onDragStart","preventDefault","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","_jsxs","LiveRegion","announceOnChange","Body","as","messages","escapeDismissHint","Button","v2","priority","href","target","label"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactIntl = require('react-intl');
6
+
7
+ var messages = reactIntl.defineMessages({
8
+ escapeDismissHint: {
9
+ id: "neptune.Snackbar.escapeDismissHint"
10
+ }
11
+ });
12
+
13
+ exports.default = messages;
14
+ //# sourceMappingURL=Snackbar.messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Snackbar.messages.js","sources":["../../../src/Prompt/Snackbar/Snackbar.messages.ts"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n escapeDismissHint: {\n id: 'neptune.Snackbar.escapeDismissHint',\n defaultMessage: 'Press Escape to dismiss.',\n description: 'Screen-reader instruction for dismissing a Snackbar without moving focus',\n },\n});\n"],"names":["defineMessages","escapeDismissHint","id"],"mappings":";;;;;;AAEA,eAAeA,wBAAc,CAAC;AAC5BC,EAAAA,iBAAiB,EAAE;IACjBC,EAAE,EAAA;AAGH;AACF,CAAA,CAAC;;"}
@@ -0,0 +1,10 @@
1
+ import { defineMessages } from 'react-intl';
2
+
3
+ var messages = defineMessages({
4
+ escapeDismissHint: {
5
+ id: "neptune.Snackbar.escapeDismissHint"
6
+ }
7
+ });
8
+
9
+ export { messages as default };
10
+ //# sourceMappingURL=Snackbar.messages.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Snackbar.messages.mjs","sources":["../../../src/Prompt/Snackbar/Snackbar.messages.ts"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n escapeDismissHint: {\n id: 'neptune.Snackbar.escapeDismissHint',\n defaultMessage: 'Press Escape to dismiss.',\n description: 'Screen-reader instruction for dismissing a Snackbar without moving focus',\n },\n});\n"],"names":["defineMessages","escapeDismissHint","id"],"mappings":";;AAEA,eAAeA,cAAc,CAAC;AAC5BC,EAAAA,iBAAiB,EAAE;IACjBC,EAAE,EAAA;AAGH;AACF,CAAA,CAAC;;"}
@@ -0,0 +1,203 @@
1
+ import { Tags } from '@transferwise/icons';
2
+ import { useEffect } from 'react';
3
+ import { useIntl } from 'react-intl';
4
+ import { CSSTransition } from 'react-transition-group';
5
+ import Button from '../../Button/Button.resolver.mjs';
6
+ import Body from '../../Body/Body.mjs';
7
+ import '../../common/theme.mjs';
8
+ import '../../common/direction.mjs';
9
+ import '@transferwise/neptune-tokens';
10
+ import '../../common/PropsValues/control.mjs';
11
+ import '../../common/PropsValues/size.mjs';
12
+ import '../../common/PropsValues/typography.mjs';
13
+ import '../../common/PropsValues/width.mjs';
14
+ import '../../common/PropsValues/type.mjs';
15
+ import '../../common/PropsValues/dateMode.mjs';
16
+ import '../../common/PropsValues/monthFormat.mjs';
17
+ import '../../common/PropsValues/position.mjs';
18
+ import '../../common/PropsValues/layouts.mjs';
19
+ import '../../common/PropsValues/status.mjs';
20
+ import '../../common/PropsValues/sentiment.mjs';
21
+ import '../../common/PropsValues/profileType.mjs';
22
+ import '../../common/PropsValues/variant.mjs';
23
+ import '../../common/PropsValues/scroll.mjs';
24
+ import '../../common/PropsValues/markdownNodeType.mjs';
25
+ import '../../common/fileType.mjs';
26
+ import '@transferwise/formatting';
27
+ import 'clsx';
28
+ import '../../common/CloseButton/CloseButton.messages.mjs';
29
+ import { jsx, jsxs } from 'react/jsx-runtime';
30
+ import { LiveRegion } from '../../common/LiveRegion/LiveRegion.mjs';
31
+ import { PrimitivePrompt } from '../PrimitivePrompt/PrimitivePrompt.mjs';
32
+ import ProcessIndicator from '../../ProcessIndicator/ProcessIndicator.mjs';
33
+ import StatusIcon from '../../StatusIcon/StatusIcon.mjs';
34
+ import { SNACKBAR_EXIT_DURATION, SNACKBAR_ENTER_DURATION } from './constants.mjs';
35
+ import messages from './Snackbar.messages.mjs';
36
+ import useSnackbarAutoDismiss from './useSnackbarAutoDismiss.mjs';
37
+ import useSnackbarSwipeDismiss from './useSnackbarSwipeDismiss.mjs';
38
+
39
+ const Snackbar = ({
40
+ action,
41
+ announcementKey,
42
+ duration,
43
+ loading = false,
44
+ media,
45
+ onDismissRequest,
46
+ onExited,
47
+ sentiment = 'neutral',
48
+ text,
49
+ timeout,
50
+ visible
51
+ }) => {
52
+ const {
53
+ formatMessage
54
+ } = useIntl();
55
+ const {
56
+ handleBlur,
57
+ handleEntered,
58
+ handleFocus,
59
+ handleMouseEnter,
60
+ handleMouseLeave,
61
+ setSwiping,
62
+ surfaceRef
63
+ } = useSnackbarAutoDismiss({
64
+ duration,
65
+ loading,
66
+ onDismissRequest,
67
+ timeout,
68
+ visible
69
+ });
70
+ const {
71
+ clearSwipePosition,
72
+ containerRef,
73
+ handleClickCapture,
74
+ handlePointerCancel,
75
+ handlePointerDown,
76
+ handlePointerMove,
77
+ handlePointerUp
78
+ } = useSnackbarSwipeDismiss({
79
+ onDismissRequest,
80
+ onSwipeChange: setSwiping,
81
+ visible
82
+ });
83
+ useEffect(() => {
84
+ if (!visible) {
85
+ return undefined;
86
+ }
87
+ const handleKeyDown = event => {
88
+ if (event.key === 'Escape' && !event.defaultPrevented && !event.isComposing) {
89
+ onDismissRequest();
90
+ }
91
+ };
92
+ // Let document-level overlays consume Escape before this fallback handles it.
93
+ window.addEventListener('keydown', handleKeyDown);
94
+ return () => window.removeEventListener('keydown', handleKeyDown);
95
+ }, [visible, onDismissRequest]);
96
+ const handleActionClick = event => {
97
+ try {
98
+ action?.onClick?.(event);
99
+ } finally {
100
+ onDismissRequest();
101
+ }
102
+ };
103
+ const renderMedia = () => {
104
+ if (loading) {
105
+ return /*#__PURE__*/jsx(ProcessIndicator, {
106
+ className: "wds-Snackbar__process-indicator",
107
+ "data-testid": "Snackbar_ProcessIndicator",
108
+ size: "xs"
109
+ });
110
+ }
111
+ if (media) {
112
+ return /*#__PURE__*/jsx("span", {
113
+ className: "wds-Snackbar__media-asset",
114
+ children: media
115
+ });
116
+ }
117
+ if (sentiment === 'proposition') {
118
+ return /*#__PURE__*/jsx("span", {
119
+ className: "wds-Snackbar__media-asset",
120
+ children: /*#__PURE__*/jsx(Tags, {
121
+ "aria-hidden": true,
122
+ size: 24
123
+ })
124
+ });
125
+ }
126
+ return /*#__PURE__*/jsx(StatusIcon, {
127
+ sentiment: sentiment,
128
+ size: 24
129
+ });
130
+ };
131
+ return /*#__PURE__*/jsx("div", {
132
+ ref: containerRef,
133
+ className: "wds-Snackbar",
134
+ style: {
135
+ '--Snackbar-enter-duration': `${SNACKBAR_ENTER_DURATION}ms`,
136
+ '--Snackbar-exit-duration': `${SNACKBAR_EXIT_DURATION}ms`
137
+ },
138
+ children: /*#__PURE__*/jsx(CSSTransition, {
139
+ appear: true,
140
+ nodeRef: surfaceRef,
141
+ in: visible,
142
+ classNames: "wds-Snackbar-container",
143
+ timeout: {
144
+ appear: SNACKBAR_ENTER_DURATION,
145
+ enter: SNACKBAR_ENTER_DURATION,
146
+ exit: SNACKBAR_EXIT_DURATION
147
+ },
148
+ unmountOnExit: true,
149
+ onEntered: handleEntered,
150
+ onExited: () => {
151
+ clearSwipePosition();
152
+ onExited();
153
+ },
154
+ children: /*#__PURE__*/jsx(PrimitivePrompt, {
155
+ ref: surfaceRef,
156
+ className: "wds-Snackbar-container",
157
+ sentiment: loading ? 'neutral' : sentiment,
158
+ emphasis: "elevated",
159
+ media: renderMedia(),
160
+ dismissButtonPriority: "minimal",
161
+ onDismiss: onDismissRequest,
162
+ onMouseEnter: handleMouseEnter,
163
+ onMouseLeave: handleMouseLeave,
164
+ onFocus: handleFocus,
165
+ onBlur: handleBlur,
166
+ onClickCapture: handleClickCapture,
167
+ onDragStart: event => event.preventDefault(),
168
+ onPointerDown: visible ? handlePointerDown : undefined,
169
+ onPointerMove: handlePointerMove,
170
+ onPointerUp: handlePointerUp,
171
+ onPointerCancel: handlePointerCancel,
172
+ children: /*#__PURE__*/jsxs("div", {
173
+ className: "wds-Snackbar__content",
174
+ children: [/*#__PURE__*/jsx(LiveRegion, {
175
+ "aria-live": "polite",
176
+ announceOnChange: announcementKey,
177
+ className: "wds-Snackbar__message",
178
+ children: /*#__PURE__*/jsxs(Body, {
179
+ as: "span",
180
+ className: "wds-Snackbar__body",
181
+ children: [text, /*#__PURE__*/jsxs("span", {
182
+ className: "sr-only",
183
+ children: [" ", formatMessage(messages.escapeDismissHint)]
184
+ })]
185
+ })
186
+ }), action ? /*#__PURE__*/jsx(Button, {
187
+ className: "wds-Snackbar__action",
188
+ v2: true,
189
+ size: "sm",
190
+ priority: "secondary",
191
+ href: action.href,
192
+ target: action.target,
193
+ onClick: handleActionClick,
194
+ children: action.label
195
+ }) : null]
196
+ })
197
+ })
198
+ })
199
+ });
200
+ };
201
+
202
+ export { Snackbar };
203
+ //# sourceMappingURL=Snackbar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Snackbar.mjs","sources":["../../../src/Prompt/Snackbar/Snackbar.tsx"],"sourcesContent":["import { Tags } from '@transferwise/icons';\nimport { useEffect } from 'react';\nimport { useIntl } from 'react-intl';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Button, { type ButtonReferenceType } from '../../Button';\nimport Body from '../../Body';\nimport { LiveRegion } from '../../common';\nimport type { ThemeDark, ThemeLight } from '../../common';\nimport { PrimitivePrompt } from '../PrimitivePrompt';\nimport ProcessIndicator from '../../ProcessIndicator';\nimport type { Sentiment } from '../../SentimentSurface';\nimport StatusIcon from '../../StatusIcon';\n\nimport { SNACKBAR_ENTER_DURATION, SNACKBAR_EXIT_DURATION } from './constants';\nimport messages from './Snackbar.messages';\nimport type { SnackbarAction, SnackbarDuration } from './Snackbar.types';\nimport useSnackbarAutoDismiss from './useSnackbarAutoDismiss';\nimport useSnackbarSwipeDismiss from './useSnackbarSwipeDismiss';\n\n/**\n * Props for the controlled Snackbar surface, including provider-managed lifecycle controls.\n * Use SnackbarCreationProps when creating notifications through SnackbarProvider/useSnackbar.\n */\nexport interface SnackbarProps {\n /** One optional callback or navigation action. Activating it dismisses after its callback runs. */\n action?: SnackbarAction;\n /** Changes for each new Snackbar so LiveRegion re-announces it. */\n announcementKey: number;\n /**\n * Controls auto-dismiss with a four-second, six-second or indefinite duration after entry finishes.\n * Takes precedence over the deprecated `timeout`.\n * When neither option is supplied, the default is 4000ms (previously 4500ms).\n * @default 'default'\n */\n duration?: SnackbarDuration;\n /**\n * Replaces the media with a progress indicator, uses neutral styling and prevents auto-dismiss.\n * Takes precedence over `media`, `sentiment`, `duration` and the deprecated `timeout`.\n * @default false\n */\n loading?: boolean;\n /** Overrides sentiment-derived media with content for the 24×24px media slot. */\n media?: React.ReactNode;\n /**\n * Called once after this Snackbar finishes exiting, including after an action (e.g. Undo)\n * or replacement by a newer Snackbar. The action callback runs first.\n * Not called for Snackbars discarded before being shown, such as earlier creates batched\n * before the first render.\n */\n onDismiss?: () => void;\n /** Requests an exit; the provider retains the surface until onExited confirms it has finished. */\n onDismissRequest: () => void;\n /** Called after the exit animation so the provider can unmount active or show its replacement. */\n onExited: () => void;\n /**\n * Controls the sentiment surface and default media.\n * @default 'neutral'\n */\n sentiment?: Sentiment;\n /** Message content. Empty strings or absent text dismiss without creating a blank replacement. */\n text: React.ReactNode;\n /** @deprecated Has no effect. Snackbar theming is based on ThemeProvider. */\n theme?: ThemeLight | ThemeDark;\n /**\n * @deprecated Use `duration` instead. Explicit millisecond values remain supported and are not\n * automatically remapped when no `duration` is supplied.\n * To migrate, use `default` for 0–5000ms, `extended` for values above 5000ms, and `indefinite`\n * for intentionally persistent notifications.\n */\n timeout?: number;\n /** @deprecated Has no effect when using SnackbarProvider, which manages Snackbar identity. */\n timestamp?: number;\n /** Controls entry/exit; the surface does not manage visibility itself. */\n visible: boolean;\n}\n\nexport const Snackbar = ({\n action,\n announcementKey,\n duration,\n loading = false,\n media,\n onDismissRequest,\n onExited,\n sentiment = 'neutral',\n text,\n timeout,\n visible,\n}: SnackbarProps) => {\n const { formatMessage } = useIntl();\n const {\n handleBlur,\n handleEntered,\n handleFocus,\n handleMouseEnter,\n handleMouseLeave,\n setSwiping,\n surfaceRef,\n } = useSnackbarAutoDismiss({\n duration,\n loading,\n onDismissRequest,\n timeout,\n visible,\n });\n const {\n clearSwipePosition,\n containerRef,\n handleClickCapture,\n handlePointerCancel,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n } = useSnackbarSwipeDismiss({ onDismissRequest, onSwipeChange: setSwiping, visible });\n\n useEffect(() => {\n if (!visible) {\n return undefined;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && !event.defaultPrevented && !event.isComposing) {\n onDismissRequest();\n }\n };\n\n // Let document-level overlays consume Escape before this fallback handles it.\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [visible, onDismissRequest]);\n\n const handleActionClick: React.MouseEventHandler<ButtonReferenceType> = (event) => {\n try {\n action?.onClick?.(event);\n } finally {\n onDismissRequest();\n }\n };\n\n const renderMedia = () => {\n if (loading) {\n return (\n <ProcessIndicator\n className=\"wds-Snackbar__process-indicator\"\n data-testid=\"Snackbar_ProcessIndicator\"\n size=\"xs\"\n />\n );\n }\n\n if (media) {\n return <span className=\"wds-Snackbar__media-asset\">{media}</span>;\n }\n\n if (sentiment === 'proposition') {\n return (\n <span className=\"wds-Snackbar__media-asset\">\n <Tags aria-hidden size={24} />\n </span>\n );\n }\n\n return <StatusIcon sentiment={sentiment} size={24} />;\n };\n\n return (\n <div\n ref={containerRef}\n className=\"wds-Snackbar\"\n style={\n {\n '--Snackbar-enter-duration': `${SNACKBAR_ENTER_DURATION}ms`,\n '--Snackbar-exit-duration': `${SNACKBAR_EXIT_DURATION}ms`,\n } as React.CSSProperties\n }\n >\n <CSSTransition\n appear\n nodeRef={surfaceRef}\n in={visible}\n classNames=\"wds-Snackbar-container\"\n timeout={{\n appear: SNACKBAR_ENTER_DURATION,\n enter: SNACKBAR_ENTER_DURATION,\n exit: SNACKBAR_EXIT_DURATION,\n }}\n unmountOnExit\n onEntered={handleEntered}\n onExited={() => {\n clearSwipePosition();\n onExited();\n }}\n >\n <PrimitivePrompt\n ref={surfaceRef}\n className=\"wds-Snackbar-container\"\n sentiment={loading ? 'neutral' : sentiment}\n emphasis=\"elevated\"\n media={renderMedia()}\n dismissButtonPriority=\"minimal\"\n onDismiss={onDismissRequest}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onClickCapture={handleClickCapture}\n onDragStart={(event) => event.preventDefault()}\n onPointerDown={visible ? handlePointerDown : undefined}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerCancel}\n >\n <div className=\"wds-Snackbar__content\">\n <LiveRegion\n aria-live=\"polite\"\n announceOnChange={announcementKey}\n className=\"wds-Snackbar__message\"\n >\n <Body as=\"span\" className=\"wds-Snackbar__body\">\n {text}\n <span className=\"sr-only\"> {formatMessage(messages.escapeDismissHint)}</span>\n </Body>\n </LiveRegion>\n {action ? (\n <Button\n className=\"wds-Snackbar__action\"\n v2\n size=\"sm\"\n priority=\"secondary\"\n href={action.href}\n target={action.target}\n onClick={handleActionClick}\n >\n {action.label}\n </Button>\n ) : null}\n </div>\n </PrimitivePrompt>\n </CSSTransition>\n </div>\n );\n};\n\nexport default Snackbar;\n"],"names":["Snackbar","action","announcementKey","duration","loading","media","onDismissRequest","onExited","sentiment","text","timeout","visible","formatMessage","useIntl","handleBlur","handleEntered","handleFocus","handleMouseEnter","handleMouseLeave","setSwiping","surfaceRef","useSnackbarAutoDismiss","clearSwipePosition","containerRef","handleClickCapture","handlePointerCancel","handlePointerDown","handlePointerMove","handlePointerUp","useSnackbarSwipeDismiss","onSwipeChange","useEffect","undefined","handleKeyDown","event","key","defaultPrevented","isComposing","window","addEventListener","removeEventListener","handleActionClick","onClick","renderMedia","_jsx","ProcessIndicator","className","size","children","Tags","StatusIcon","ref","style","SNACKBAR_ENTER_DURATION","SNACKBAR_EXIT_DURATION","CSSTransition","appear","nodeRef","in","classNames","enter","exit","unmountOnExit","onEntered","PrimitivePrompt","emphasis","dismissButtonPriority","onDismiss","onMouseEnter","onMouseLeave","onFocus","onBlur","onClickCapture","onDragStart","preventDefault","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","_jsxs","LiveRegion","announceOnChange","Body","as","messages","escapeDismissHint","Button","v2","priority","href","target","label"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnackbarContext.js","sources":["../../../src/Prompt/Snackbar/SnackbarContext.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport type { SnackbarCreationProps } from './Snackbar.types';\n\nexport type SnackbarContextType = {\n createSnackbar: (props: SnackbarCreationProps) => void;\n};\n\nexport const SnackbarContext = createContext<SnackbarContextType>({ createSnackbar: () => {} });\n\nexport const SnackbarConsumer = SnackbarContext.Consumer;\n"],"names":["SnackbarContext","createContext","createSnackbar","SnackbarConsumer","Consumer"],"mappings":";;;;AAQO,MAAMA,eAAe,gBAAGC,mBAAa,CAAsB;EAAEC,cAAc,EAAEA,MAAK,CAAE;AAAC,CAAE;AAEvF,MAAMC,gBAAgB,GAAGH,eAAe,CAACI;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnackbarContext.mjs","sources":["../../../src/Prompt/Snackbar/SnackbarContext.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport type { SnackbarCreationProps } from './Snackbar.types';\n\nexport type SnackbarContextType = {\n createSnackbar: (props: SnackbarCreationProps) => void;\n};\n\nexport const SnackbarContext = createContext<SnackbarContextType>({ createSnackbar: () => {} });\n\nexport const SnackbarConsumer = SnackbarContext.Consumer;\n"],"names":["SnackbarContext","createContext","createSnackbar","SnackbarConsumer","Consumer"],"mappings":";;AAQO,MAAMA,eAAe,gBAAGC,aAAa,CAAsB;EAAEC,cAAc,EAAEA,MAAK,CAAE;AAAC,CAAE;AAEvF,MAAMC,gBAAgB,GAAGH,eAAe,CAACI;;"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var WithNextPortal = require('../../WithNextPortal/WithNextPortal.js');
6
+ var Snackbar = require('./Snackbar.js');
7
+
8
+ /** Renders the Snackbar into `document.body` after mount, so it's safe for SSR. */
9
+ const SnackbarPortal = WithNextPortal.default(Snackbar.Snackbar);
10
+
11
+ exports.default = SnackbarPortal;
12
+ //# sourceMappingURL=SnackbarPortal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnackbarPortal.js","sources":["../../../src/Prompt/Snackbar/SnackbarPortal.tsx"],"sourcesContent":["import withNextPortal from '../../WithNextPortal/WithNextPortal';\n\nimport { Snackbar } from './Snackbar';\n\n/** Renders the Snackbar into `document.body` after mount, so it's safe for SSR. */\nconst SnackbarPortal = withNextPortal(Snackbar);\n\nexport default SnackbarPortal;\n"],"names":["SnackbarPortal","withNextPortal","Snackbar"],"mappings":";;;;;;;AAIA;AACA,MAAMA,cAAc,GAAGC,sBAAc,CAACC,iBAAQ;;"}
@@ -0,0 +1,8 @@
1
+ import withNextPortalWrapper from '../../WithNextPortal/WithNextPortal.mjs';
2
+ import { Snackbar } from './Snackbar.mjs';
3
+
4
+ /** Renders the Snackbar into `document.body` after mount, so it's safe for SSR. */
5
+ const SnackbarPortal = withNextPortalWrapper(Snackbar);
6
+
7
+ export { SnackbarPortal as default };
8
+ //# sourceMappingURL=SnackbarPortal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnackbarPortal.mjs","sources":["../../../src/Prompt/Snackbar/SnackbarPortal.tsx"],"sourcesContent":["import withNextPortal from '../../WithNextPortal/WithNextPortal';\n\nimport { Snackbar } from './Snackbar';\n\n/** Renders the Snackbar into `document.body` after mount, so it's safe for SSR. */\nconst SnackbarPortal = withNextPortal(Snackbar);\n\nexport default SnackbarPortal;\n"],"names":["SnackbarPortal","withNextPortal","Snackbar"],"mappings":";;;AAIA;AACA,MAAMA,cAAc,GAAGC,qBAAc,CAACC,QAAQ;;"}
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var SnackbarPortal = require('./SnackbarPortal.js');
7
+ var SnackbarContext = require('./SnackbarContext.js');
8
+ var useSnackbarManager = require('./useSnackbarManager.js');
9
+ var jsxRuntime = require('react/jsx-runtime');
10
+
11
+ function SnackbarProvider({
12
+ timeout,
13
+ children
14
+ }) {
15
+ const {
16
+ active,
17
+ announcementKey,
18
+ createSnackbar,
19
+ dismissSnackbar,
20
+ handleExited,
21
+ visible
22
+ } = useSnackbarManager.default();
23
+ const contextValue = React.useMemo(() => ({
24
+ createSnackbar
25
+ }), [createSnackbar]);
26
+ return /*#__PURE__*/jsxRuntime.jsxs(SnackbarContext.SnackbarContext.Provider, {
27
+ value: contextValue,
28
+ children: [active ? /*#__PURE__*/jsxRuntime.jsx(SnackbarPortal.default
29
+ // Each instance gets a fresh appear transition and live-region announcement.
30
+ , {
31
+ ...active.props,
32
+ announcementKey: announcementKey,
33
+ timeout: timeout,
34
+ visible: visible,
35
+ onDismissRequest: dismissSnackbar,
36
+ onExited: handleExited
37
+ }, active.id) : null, children]
38
+ });
39
+ }
40
+
41
+ exports.default = SnackbarProvider;
42
+ //# sourceMappingURL=SnackbarProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnackbarProvider.js","sources":["../../../src/Prompt/Snackbar/SnackbarProvider.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport SnackbarPortal from './SnackbarPortal';\nimport { SnackbarContext } from './SnackbarContext';\nimport useSnackbarManager from './useSnackbarManager';\n\nexport interface SnackbarProviderProps {\n /**\n * @deprecated Use per-Snackbar `duration` instead. Explicit millisecond values remain supported\n * and are not automatically remapped when no `duration` is supplied.\n * When neither option is supplied, the default is 4000ms (previously 4500ms), after entry finishes.\n * To migrate, use `default` for 0–5000ms, `extended` for values above 5000ms, and `indefinite`\n * for intentionally persistent notifications.\n */\n timeout?: number;\n children?: React.ReactNode;\n}\n\nexport default function SnackbarProvider({ timeout, children }: SnackbarProviderProps) {\n const { active, announcementKey, createSnackbar, dismissSnackbar, handleExited, visible } =\n useSnackbarManager();\n const contextValue = useMemo(() => ({ createSnackbar }), [createSnackbar]);\n\n return (\n <SnackbarContext.Provider value={contextValue}>\n {active ? (\n <SnackbarPortal\n // Each instance gets a fresh appear transition and live-region announcement.\n key={active.id}\n {...active.props}\n announcementKey={announcementKey}\n timeout={timeout}\n visible={visible}\n onDismissRequest={dismissSnackbar}\n onExited={handleExited}\n />\n ) : null}\n {children}\n </SnackbarContext.Provider>\n );\n}\n"],"names":["SnackbarProvider","timeout","children","active","announcementKey","createSnackbar","dismissSnackbar","handleExited","visible","useSnackbarManager","contextValue","useMemo","_jsxs","SnackbarContext","Provider","value","_jsx","SnackbarPortal","props","onDismissRequest","onExited","id"],"mappings":";;;;;;;;;;AAkBc,SAAUA,gBAAgBA,CAAC;EAAEC,OAAO;AAAEC,EAAAA;AAAQ,CAAyB,EAAA;EACnF,MAAM;IAAEC,MAAM;IAAEC,eAAe;IAAEC,cAAc;IAAEC,eAAe;IAAEC,YAAY;AAAEC,IAAAA;GAAS,GACvFC,0BAAkB,EAAE;AACtB,EAAA,MAAMC,YAAY,GAAGC,aAAO,CAAC,OAAO;AAAEN,IAAAA;GAAgB,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;AAE1E,EAAA,oBACEO,eAAA,CAACC,+BAAe,CAACC,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAEL,YAAa;AAAAR,IAAAA,QAAA,EAAA,CAC3CC,MAAM,gBACLa,cAAA,CAACC;AACC;AAAA,MAAA;MAAA,GAEId,MAAM,CAACe,KAAK;AAChBd,MAAAA,eAAe,EAAEA,eAAgB;AACjCH,MAAAA,OAAO,EAAEA,OAAQ;AACjBO,MAAAA,OAAO,EAAEA,OAAQ;AACjBW,MAAAA,gBAAgB,EAAEb,eAAgB;AAClCc,MAAAA,QAAQ,EAAEb;AAAa,KAAA,EANlBJ,MAAM,CAACkB,EAMW,CACvB,GACA,IAAI,EACPnB,QAAQ;AAAA,GACe,CAAC;AAE/B;;"}
@@ -0,0 +1,38 @@
1
+ import { useMemo } from 'react';
2
+ import SnackbarPortal from './SnackbarPortal.mjs';
3
+ import { SnackbarContext } from './SnackbarContext.mjs';
4
+ import useSnackbarManager from './useSnackbarManager.mjs';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ function SnackbarProvider({
8
+ timeout,
9
+ children
10
+ }) {
11
+ const {
12
+ active,
13
+ announcementKey,
14
+ createSnackbar,
15
+ dismissSnackbar,
16
+ handleExited,
17
+ visible
18
+ } = useSnackbarManager();
19
+ const contextValue = useMemo(() => ({
20
+ createSnackbar
21
+ }), [createSnackbar]);
22
+ return /*#__PURE__*/jsxs(SnackbarContext.Provider, {
23
+ value: contextValue,
24
+ children: [active ? /*#__PURE__*/jsx(SnackbarPortal
25
+ // Each instance gets a fresh appear transition and live-region announcement.
26
+ , {
27
+ ...active.props,
28
+ announcementKey: announcementKey,
29
+ timeout: timeout,
30
+ visible: visible,
31
+ onDismissRequest: dismissSnackbar,
32
+ onExited: handleExited
33
+ }, active.id) : null, children]
34
+ });
35
+ }
36
+
37
+ export { SnackbarProvider as default };
38
+ //# sourceMappingURL=SnackbarProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnackbarProvider.mjs","sources":["../../../src/Prompt/Snackbar/SnackbarProvider.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport SnackbarPortal from './SnackbarPortal';\nimport { SnackbarContext } from './SnackbarContext';\nimport useSnackbarManager from './useSnackbarManager';\n\nexport interface SnackbarProviderProps {\n /**\n * @deprecated Use per-Snackbar `duration` instead. Explicit millisecond values remain supported\n * and are not automatically remapped when no `duration` is supplied.\n * When neither option is supplied, the default is 4000ms (previously 4500ms), after entry finishes.\n * To migrate, use `default` for 0–5000ms, `extended` for values above 5000ms, and `indefinite`\n * for intentionally persistent notifications.\n */\n timeout?: number;\n children?: React.ReactNode;\n}\n\nexport default function SnackbarProvider({ timeout, children }: SnackbarProviderProps) {\n const { active, announcementKey, createSnackbar, dismissSnackbar, handleExited, visible } =\n useSnackbarManager();\n const contextValue = useMemo(() => ({ createSnackbar }), [createSnackbar]);\n\n return (\n <SnackbarContext.Provider value={contextValue}>\n {active ? (\n <SnackbarPortal\n // Each instance gets a fresh appear transition and live-region announcement.\n key={active.id}\n {...active.props}\n announcementKey={announcementKey}\n timeout={timeout}\n visible={visible}\n onDismissRequest={dismissSnackbar}\n onExited={handleExited}\n />\n ) : null}\n {children}\n </SnackbarContext.Provider>\n );\n}\n"],"names":["SnackbarProvider","timeout","children","active","announcementKey","createSnackbar","dismissSnackbar","handleExited","visible","useSnackbarManager","contextValue","useMemo","_jsxs","SnackbarContext","Provider","value","_jsx","SnackbarPortal","props","onDismissRequest","onExited","id"],"mappings":";;;;;;AAkBc,SAAUA,gBAAgBA,CAAC;EAAEC,OAAO;AAAEC,EAAAA;AAAQ,CAAyB,EAAA;EACnF,MAAM;IAAEC,MAAM;IAAEC,eAAe;IAAEC,cAAc;IAAEC,eAAe;IAAEC,YAAY;AAAEC,IAAAA;GAAS,GACvFC,kBAAkB,EAAE;AACtB,EAAA,MAAMC,YAAY,GAAGC,OAAO,CAAC,OAAO;AAAEN,IAAAA;GAAgB,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;AAE1E,EAAA,oBACEO,IAAA,CAACC,eAAe,CAACC,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAEL,YAAa;AAAAR,IAAAA,QAAA,EAAA,CAC3CC,MAAM,gBACLa,GAAA,CAACC;AACC;AAAA,MAAA;MAAA,GAEId,MAAM,CAACe,KAAK;AAChBd,MAAAA,eAAe,EAAEA,eAAgB;AACjCH,MAAAA,OAAO,EAAEA,OAAQ;AACjBO,MAAAA,OAAO,EAAEA,OAAQ;AACjBW,MAAAA,gBAAgB,EAAEb,eAAgB;AAClCc,MAAAA,QAAQ,EAAEb;AAAa,KAAA,EANlBJ,MAAM,CAACkB,EAMW,CACvB,GACA,IAAI,EACPnB,QAAQ;AAAA,GACe,CAAC;AAE/B;;"}