@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
@@ -141,7 +141,7 @@ export interface SelectProps {
141
141
  const defaultClassNames = {};
142
142
 
143
143
  /**
144
- * @deprecated Use `SelectInput` instead (https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)
144
+ * @deprecated Use `SelectInput` instead (https://storybook.wise.design/?path=/docs/forms-selectinput--docs)
145
145
  */
146
146
  export default function Select({
147
147
  placeholder,
@@ -4,7 +4,7 @@ import { useState } from 'react';
4
4
  import Select, { SelectItem, SelectOptionItem } from '..';
5
5
 
6
6
  /**
7
- * @deprecated Use **`SelectInput`** instead <br/> [https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput](https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)
7
+ * @deprecated Use **`SelectInput`** instead <br/> [https://storybook.wise.design/?path=/docs/forms-selectinput--docs](https://storybook.wise.design/?path=/docs/forms-selectinput--docs)
8
8
  */
9
9
  const meta: Meta<typeof Select> = {
10
10
  component: Select,
@@ -36,9 +36,7 @@ export type BottomSheetProps = PropsWithChildren<
36
36
  >;
37
37
 
38
38
  /**
39
- * Neptune: https://transferwise.github.io/neptune/components/bottom-sheet/
40
- *
41
- * Neptune Web: https://transferwise.github.io/neptune-web/components/overlays/BottomSheet
39
+ * Design guidance: https://docs.wise.design/components/bottom-sheet/
42
40
  *
43
41
  */
44
42
  const BottomSheet = ({ role = 'dialog', ...props }: BottomSheetProps) => {
package/src/i18n/en.json CHANGED
@@ -38,6 +38,7 @@
38
38
  "neptune.PhoneNumberInput.phoneNumberPrefix": "Prefix",
39
39
  "neptune.Select.searchPlaceholder": "Search...",
40
40
  "neptune.SelectInput.noResultsFound": "No results found",
41
+ "neptune.Snackbar.escapeDismissHint": "Press Escape to dismiss.",
41
42
  "neptune.StatusIcon.iconLabel.error": "Error:",
42
43
  "neptune.StatusIcon.iconLabel.information": "Information:",
43
44
  "neptune.StatusIcon.iconLabel.pending": "Pending:",
package/src/index.ts CHANGED
@@ -4,6 +4,17 @@
4
4
  * Types
5
5
  */
6
6
  export type { ContainerProps } from './Container';
7
+ export type {
8
+ CardContainerProps,
9
+ CardContainerSpotlight,
10
+ CardContainerPadding,
11
+ } from './CardContainer';
12
+ export type {
13
+ CardWidgetProps,
14
+ CardWidgetHeader,
15
+ CardWidgetTitleAction,
16
+ CardWidgetActionButton,
17
+ } from './CardWidget';
7
18
  export type { LogoProps, LogoSize, LogoAssetName } from './Logo';
8
19
  export type { FlowNavigationProps, CriticalBannerLegacyData } from './FlowNavigation';
9
20
  export type { AccordionItem, AccordionProps } from './Accordion';
@@ -135,8 +146,8 @@ export type {
135
146
  SelectProps,
136
147
  } from './_deprecated/Select';
137
148
  export type { SlidingPanelProps } from './SlidingPanel';
138
- export type { SnackbarProps, SnackbarProviderProps } from './Snackbar';
139
- export type { SnackbarContextType } from './Snackbar/SnackbarContext';
149
+ export type { SnackbarCreationProps, SnackbarProviderProps } from './Prompt/Snackbar';
150
+ export type { SnackbarContextType } from './Prompt/Snackbar/SnackbarContext';
140
151
  export type { StatusIconProps, StatusIconSentiment } from './StatusIcon';
141
152
  export type { StickyProps } from './Sticky';
142
153
  export type { SummaryProps } from './_deprecated/Summary';
@@ -218,6 +229,8 @@ export { default as Chevron } from './Chevron';
218
229
  export { Chip, default as Chips } from './Chips';
219
230
  export { default as CircularButton } from './CircularButton';
220
231
  export { default as Container } from './Container';
232
+ export { default as CardContainer } from './CardContainer';
233
+ export { default as CardWidget } from './CardWidget';
221
234
  export { default as Option } from './common/Option';
222
235
  export { default as BottomSheet } from './common/BottomSheet';
223
236
  export { default as BaseCard } from './common/BaseCard';
@@ -282,8 +295,8 @@ export { default as SegmentedControl } from './SegmentedControl';
282
295
  export { default as Select } from './_deprecated/Select';
283
296
  export { default as SentimentSurface } from './SentimentSurface';
284
297
  export { default as SlidingPanel } from './SlidingPanel';
285
- export { SnackbarConsumer, SnackbarContext } from './Snackbar/SnackbarContext';
286
- export { default as SnackbarProvider } from './Snackbar/SnackbarProvider';
298
+ export { SnackbarConsumer, SnackbarContext } from './Prompt/Snackbar/SnackbarContext';
299
+ export { default as SnackbarProvider } from './Prompt/Snackbar/SnackbarProvider';
287
300
  export { default as StatusIcon } from './StatusIcon/StatusIcon';
288
301
  export { default as Stepper } from './Stepper/Stepper';
289
302
  export { default as Sticky } from './Sticky';
@@ -308,7 +321,7 @@ export { default as List } from './List';
308
321
  */
309
322
  export { useDirection, useLayout } from './common/hooks';
310
323
  export { useScreenSize } from './common/hooks/useScreenSize';
311
- export { default as useSnackbar } from './Snackbar/useSnackbar';
324
+ export { default as useSnackbar } from './Prompt/Snackbar/useSnackbar';
312
325
 
313
326
  /**
314
327
  * Enums
package/src/main.css CHANGED
@@ -26203,6 +26203,192 @@ a[data-toggle="tooltip"] {
26203
26203
  .wds-container--fluid {
26204
26204
  max-inline-size: var(--wds-container-width-fluid);
26205
26205
  }
26206
+ .wds-card-container {
26207
+ --CardContainer-shadow: var(--CardContainer-theme-shadow, none);
26208
+ --CardContainer-background-color: var(--color-background-screen);
26209
+ --CardContainer-border-color: var(--color-border-neutral);
26210
+ --CardContainer-border-radius: var(--radius-large);
26211
+ --CardContainer-padding-block: var(--size-8);
26212
+ --CardContainer-padding-inline: var(--size-8);
26213
+ background-color: var(--CardContainer-background-color);
26214
+ border: 1px solid var(--CardContainer-border-color);
26215
+ border-radius: var(--CardContainer-border-radius);
26216
+ box-sizing: border-box;
26217
+ display: flex;
26218
+ flex-direction: column;
26219
+ padding-block: var(--CardContainer-padding-block);
26220
+ padding-inline: var(--CardContainer-padding-inline);
26221
+ inline-size: 100%;
26222
+ }
26223
+ @media (min-width: 840px) {
26224
+ .wds-card-container {
26225
+ --CardContainer-padding-block: var(--size-16);
26226
+ --CardContainer-padding-inline: var(--size-16);
26227
+ }
26228
+ }
26229
+ .wds-card-container--padding-none {
26230
+ --CardContainer-padding-block: 0px;
26231
+ --CardContainer-padding-inline: 0px;
26232
+ overflow: clip;
26233
+ }
26234
+ .wds-card-container--active {
26235
+ --CardContainer-background-color: var(--color-background-elevated);
26236
+ --CardContainer-border-color: color-mix(in srgb, var(--color-border-neutral) 25%, transparent);
26237
+ box-shadow: var(--CardContainer-shadow);
26238
+ }
26239
+ .wds-card-container--inactive {
26240
+ --CardContainer-background-color: color-mix(in srgb, var(--color-background-neutral) 25%, transparent);
26241
+ border-width: 0;
26242
+ padding-block: calc(var(--CardContainer-padding-block) + 1px);
26243
+ padding-inline: calc(var(--CardContainer-padding-inline) + 1px);
26244
+ position: relative;
26245
+ }
26246
+ .wds-card-container--interactive:has(
26247
+ > a[href]:hover,
26248
+ > button:enabled:hover,
26249
+ > a[href]:focus-visible,
26250
+ > button:enabled:focus-visible
26251
+ ).wds-card-container--active {
26252
+ --CardContainer-border-color: color-mix(in srgb, var(--color-border-neutral) 75%, transparent);
26253
+ }
26254
+ .wds-card-container--interactive:has(
26255
+ > a[href]:hover,
26256
+ > button:enabled:hover,
26257
+ > a[href]:focus-visible,
26258
+ > button:enabled:focus-visible
26259
+ ).wds-card-container--inactive {
26260
+ --CardContainer-background-color: color-mix(in srgb, var(--color-background-neutral-hover) 25%, transparent);
26261
+ }
26262
+ .wds-card-container--interactive:has(> a[href]:active, > button:enabled:active).wds-card-container--active {
26263
+ --CardContainer-border-color: var(--color-border-neutral);
26264
+ }
26265
+ .wds-card-container--interactive:has(> a[href]:active, > button:enabled:active).wds-card-container--inactive {
26266
+ --CardContainer-background-color: color-mix(in srgb, var(--color-background-neutral-active) 25%, transparent);
26267
+ }
26268
+ .wds-card-container__border {
26269
+ container-type: size;
26270
+ inset: 0;
26271
+ pointer-events: none;
26272
+ position: absolute;
26273
+ }
26274
+ .wds-card-container__border svg {
26275
+ display: block;
26276
+ block-size: 100%;
26277
+ inline-size: 100%;
26278
+ }
26279
+ .wds-card-container__border rect {
26280
+ --CardContainer-border-dash-size: calc(var(--size-12) * 0.5);
26281
+ --CardContainer-border-stroke-radius: calc(min(var(--CardContainer-border-radius), 50cqh, 50cqw) - 0.5px);
26282
+ fill: none;
26283
+ block-size: calc(100% - 1px);
26284
+ rx: var(--CardContainer-border-stroke-radius);
26285
+ ry: var(--CardContainer-border-stroke-radius);
26286
+ stroke: var(--color-border-neutral);
26287
+ stroke-dasharray: var(--CardContainer-border-dash-size) var(--CardContainer-border-dash-size);
26288
+ inline-size: calc(100% - 1px);
26289
+ x: 0.5px;
26290
+ y: 0.5px;
26291
+ }
26292
+ /**
26293
+ * The active spotlight's resting shadow, only designed for the light themes. Set on every theme
26294
+ * root, as a nested ThemeProvider renders its own, so a card follows its nearest theme: a dark or
26295
+ * green provider inside a light one turns the shadow off.
26296
+ *
26297
+ * There is no shadow or elevation token in @transferwise/neptune-tokens, so the value is
26298
+ * component-scoped for now, the way PromoCard scopes `--Card-box-shadow`. It is the "Card Active
26299
+ * shadow" effect style from Figma: `#0e0f0c` at 4%, kept literal so it doesn't drift with a
26300
+ * theme's tokens. Collapses to a token reference once one is minted.
26301
+ */
26302
+ .np-theme-personal {
26303
+ --CardContainer-theme-shadow: 0 2px 12px rgba(14, 15, 12, 0.04), 0 2px 32px rgba(14, 15, 12, 0.04);
26304
+ }
26305
+ .np-theme-personal.np-theme-personal--dark,
26306
+ .np-theme-personal.np-theme-personal--bright-green,
26307
+ .np-theme-personal.np-theme-personal--forest-green,
26308
+ .np-theme-personal.np-theme-business--dark,
26309
+ .np-theme-personal.np-theme-business--bright-green,
26310
+ .np-theme-personal.np-theme-business--forest-green,
26311
+ .np-theme-personal.np-theme-platform--forest-green {
26312
+ --CardContainer-theme-shadow: none;
26313
+ }
26314
+ .wds-card-widget {
26315
+ --CardWidget-inset: var(--size-8);
26316
+ --CardWidget-header-spacing: var(--size-8);
26317
+ --CardWidget-actions-gap: var(--size-8);
26318
+ }
26319
+ .wds-card-widget__header {
26320
+ align-items: center;
26321
+ -moz-column-gap: var(--size-24);
26322
+ column-gap: var(--size-24);
26323
+ container-type: inline-size;
26324
+ display: flex;
26325
+ flex-wrap: wrap;
26326
+ padding-inline-start: var(--CardWidget-inset);
26327
+ row-gap: var(--size-8);
26328
+ }
26329
+ .wds-card-widget__header + .wds-card-widget__content {
26330
+ margin-block-start: var(--CardWidget-header-spacing);
26331
+ }
26332
+ .wds-card-widget__title {
26333
+ align-items: center;
26334
+ color: var(--color-content-secondary);
26335
+ display: grid;
26336
+ flex: 1 1 0;
26337
+ margin: 0;
26338
+ min-block-size: var(--size-32);
26339
+ }
26340
+ @container (width <= 360px) {
26341
+ .wds-card-widget__title {
26342
+ flex-basis: auto;
26343
+ }
26344
+ }
26345
+ .wds-card-widget__title-link.np-link {
26346
+ color: inherit;
26347
+ display: inline;
26348
+ font: inherit;
26349
+ justify-self: start;
26350
+ letter-spacing: inherit;
26351
+ text-align: start;
26352
+ -webkit-text-decoration: none;
26353
+ text-decoration: none;
26354
+ }
26355
+ .wds-card-widget__title-link.np-link:hover,
26356
+ .wds-card-widget__title-link.np-link:focus-visible {
26357
+ -webkit-text-decoration: underline;
26358
+ text-decoration: underline;
26359
+ }
26360
+ .wds-card-widget__title-link.np-link .tw-icon {
26361
+ display: inline-block;
26362
+ vertical-align: text-bottom;
26363
+ }
26364
+ .wds-card-widget__title-link.np-link .wds-card-widget__title-chevron {
26365
+ white-space: nowrap;
26366
+ }
26367
+ .wds-card-widget__title-link.np-link .wds-card-widget__title-chevron .tw-icon {
26368
+ margin: 0;
26369
+ }
26370
+ .wds-card-widget__actions {
26371
+ align-self: start;
26372
+ align-items: center;
26373
+ display: flex;
26374
+ flex: none;
26375
+ gap: var(--CardWidget-actions-gap);
26376
+ }
26377
+ .wds-card-widget--with-header .wds-card-widget__content {
26378
+ padding-inline: var(--CardWidget-inset);
26379
+ }
26380
+ .wds-card-widget:has(.wds-card-widget__title-link:hover, .wds-card-widget__title-link:focus-visible).wds-card-container--active {
26381
+ --CardContainer-border-color: color-mix(in srgb, var(--color-border-neutral) 75%, transparent);
26382
+ }
26383
+ .wds-card-widget:has(.wds-card-widget__title-link:hover, .wds-card-widget__title-link:focus-visible).wds-card-container--inactive {
26384
+ --CardContainer-background-color: color-mix(in srgb, var(--color-background-neutral-hover) 25%, transparent);
26385
+ }
26386
+ .wds-card-widget:has(.wds-card-widget__title-link:active).wds-card-container--active {
26387
+ --CardContainer-border-color: var(--color-border-neutral);
26388
+ }
26389
+ .wds-card-widget:has(.wds-card-widget__title-link:active).wds-card-container--inactive {
26390
+ --CardContainer-background-color: color-mix(in srgb, var(--color-background-neutral-active) 25%, transparent);
26391
+ }
26206
26392
  .critical-comms {
26207
26393
  border-radius: var(--radius-medium);
26208
26394
  overflow: hidden;
@@ -26762,15 +26948,14 @@ a[data-toggle="tooltip"] {
26762
26948
  color: var(--color-white);
26763
26949
  }
26764
26950
  .np-icon-button-minimal-default {
26765
- color: var(--color-interactive-primary);
26766
- background-color: var(--color-background-screen);
26951
+ color: var(--color-sentiment-content-primary, var(--color-interactive-primary));
26767
26952
  background-color: transparent;
26768
26953
  }
26769
26954
  .np-icon-button-minimal-default:not(.disabled):not(:disabled):hover {
26770
- background-color: var(--color-background-screen-hover);
26955
+ background-color: var(--color-sentiment-interactive-secondary-neutral-hover, var(--color-background-screen-hover));
26771
26956
  }
26772
26957
  .np-icon-button-minimal-default:not(.disabled):not(:disabled):active {
26773
- background-color: var(--color-background-screen-active);
26958
+ background-color: var(--color-sentiment-interactive-secondary-neutral-active, var(--color-background-screen-active));
26774
26959
  }
26775
26960
  .np-icon-button-secondary-default {
26776
26961
  color: var(--color-sentiment-content-primary, var(--color-interactive-primary));
@@ -29190,6 +29375,14 @@ button.np-option {
29190
29375
  padding-inline: 0;
29191
29376
  container-type: inline-size;
29192
29377
  }
29378
+ .wds-list-item-paddingY-8 {
29379
+ padding-block: var(--size-8);
29380
+ padding-inline: 0;
29381
+ }
29382
+ .wds-list-item-paddingY-16 {
29383
+ padding-block: var(--size-16);
29384
+ padding-inline: 0;
29385
+ }
29193
29386
  .wds-list-item-paddingY-24 {
29194
29387
  padding-block: var(--size-24);
29195
29388
  padding-inline: 0;
@@ -31220,6 +31413,140 @@ button.np-link {
31220
31413
  overflow: visible;
31221
31414
  }
31222
31415
  }
31416
+ .wds-Snackbar {
31417
+ display: flex;
31418
+ justify-content: center;
31419
+ box-sizing: border-box;
31420
+ padding-inline: var(--size-16);
31421
+ padding-block-end: calc(var(--size-16) + env(safe-area-inset-bottom));
31422
+ position: fixed;
31423
+ inset-block-end: 0;
31424
+ inset-inline: 0;
31425
+ z-index: 1060;
31426
+ }
31427
+ @media (min-width: 600px) {
31428
+ .wds-Snackbar {
31429
+ padding-block-end: var(--size-24);
31430
+ }
31431
+ }
31432
+ .wds-Snackbar--swipe-dismiss {
31433
+ transition: transform var(--Snackbar-exit-duration) cubic-bezier(1, 0, 1, 1);
31434
+ }
31435
+ .wds-Snackbar--swipe-settle {
31436
+ transition: transform var(--Snackbar-exit-duration) cubic-bezier(0, 0, 0, 1);
31437
+ }
31438
+ .wds-Snackbar-container {
31439
+ --Prompt-border-radius: var(--radius-medium);
31440
+ --Prompt-gap: var(--size-8);
31441
+ --Prompt-padding-x: var(--size-12);
31442
+ --Prompt-padding-y: var(--size-12);
31443
+ box-sizing: border-box;
31444
+ max-inline-size: 480px;
31445
+ text-align: start;
31446
+ cursor: grab;
31447
+ touch-action: pan-x pinch-zoom;
31448
+ }
31449
+ .wds-Snackbar-container .wds-prompt__content-wrapper--with-dismiss {
31450
+ grid-template-columns: auto minmax(0, 1fr);
31451
+ }
31452
+ @media (min-width: 600px) {
31453
+ .wds-Snackbar-container .wds-prompt__content-wrapper--with-dismiss {
31454
+ grid-template-columns: auto minmax(0, 1fr) auto;
31455
+ }
31456
+ }
31457
+ .wds-Snackbar-container .wds-prompt__media-wrapper {
31458
+ display: flex;
31459
+ align-items: center;
31460
+ min-block-size: max(var(--size-32), 1lh);
31461
+ padding-block-start: 0;
31462
+ color: var(--color-sentiment-content-primary);
31463
+ }
31464
+ .wds-Snackbar-container .wds-prompt__media-wrapper:has(+ .wds-Snackbar__content .wds-Snackbar__action) {
31465
+ min-block-size: max(var(--size-32), calc(1lh + var(--size-5) * 2));
31466
+ }
31467
+ .wds-Snackbar__media-asset {
31468
+ display: flex;
31469
+ }
31470
+ .wds-Snackbar__media-asset svg {
31471
+ inline-size: var(--size-24);
31472
+ block-size: var(--size-24);
31473
+ }
31474
+ .wds-Snackbar__process-indicator .process-circle {
31475
+ stroke: currentColor;
31476
+ }
31477
+ .wds-Snackbar-container .wds-prompt__dismiss {
31478
+ display: none;
31479
+ align-self: flex-start;
31480
+ margin-block-start: calc(var(--size-4) - 1px);
31481
+ }
31482
+ @media (min-width: 600px) {
31483
+ .wds-Snackbar-container .wds-prompt__dismiss {
31484
+ display: flex;
31485
+ }
31486
+ }
31487
+ .wds-Snackbar__action {
31488
+ flex-shrink: 0;
31489
+ }
31490
+ .wds-Snackbar__content {
31491
+ display: flex;
31492
+ align-items: flex-start;
31493
+ gap: var(--size-8);
31494
+ flex: 1 0 0;
31495
+ min-block-size: var(--size-32);
31496
+ min-inline-size: 0;
31497
+ }
31498
+ .wds-Snackbar__message {
31499
+ display: flex;
31500
+ flex-direction: column;
31501
+ justify-content: center;
31502
+ inline-size: auto;
31503
+ flex: 1 0 0;
31504
+ min-inline-size: 0;
31505
+ align-self: stretch;
31506
+ }
31507
+ .wds-Snackbar__body {
31508
+ display: block;
31509
+ }
31510
+ .wds-Snackbar-container-appear,
31511
+ .wds-Snackbar-container-enter {
31512
+ opacity: 0;
31513
+ transform: translateY(80px) scale(0.5);
31514
+ }
31515
+ .wds-Snackbar-container-appear-active,
31516
+ .wds-Snackbar-container-enter-active {
31517
+ opacity: 1;
31518
+ transform: translateY(0) scale(1);
31519
+ transition: opacity 150ms linear, transform var(--Snackbar-enter-duration) cubic-bezier(0, 0, 0, 1);
31520
+ }
31521
+ .wds-Snackbar-container-exit {
31522
+ opacity: 1;
31523
+ transform: translateY(0) scale(1);
31524
+ }
31525
+ .wds-Snackbar-container-exit-active {
31526
+ opacity: 0;
31527
+ transform: translateY(80px) scale(0.5);
31528
+ transition: opacity 50ms linear 50ms, transform var(--Snackbar-exit-duration) cubic-bezier(1, 0, 1, 1);
31529
+ }
31530
+ @media (prefers-reduced-motion: reduce) {
31531
+ .wds-Snackbar--swipe-dismiss,
31532
+ .wds-Snackbar--swipe-settle {
31533
+ transition: none;
31534
+ }
31535
+ .wds-Snackbar-container-appear,
31536
+ .wds-Snackbar-container-appear-active,
31537
+ .wds-Snackbar-container-enter,
31538
+ .wds-Snackbar-container-enter-active,
31539
+ .wds-Snackbar-container-exit {
31540
+ opacity: 1;
31541
+ transform: none;
31542
+ transition: none;
31543
+ }
31544
+ .wds-Snackbar-container-exit-active {
31545
+ opacity: 0;
31546
+ transform: none;
31547
+ transition: none;
31548
+ }
31549
+ }
31223
31550
  .wds-expander-toggle {
31224
31551
  align-self: flex-start;
31225
31552
  flex-shrink: 0;
@@ -31322,77 +31649,6 @@ button.np-link {
31322
31649
  [dir="rtl"] .np-theme-personal .sliding-panel.sliding-panel--border-left {
31323
31650
  box-shadow: inset 1px 0 0 0 var(--color-border-neutral);
31324
31651
  }
31325
- .snackbar {
31326
- text-align: center;
31327
- position: fixed;
31328
- inset-block-end: 0;
31329
- inset-inline-start: 0;
31330
- inset-inline-end: 0;
31331
- z-index: 1060;
31332
- }
31333
- .snackbar__text {
31334
- background: #37517e;
31335
- color: #ffffff;
31336
- display: inline-flex;
31337
- border-radius: 2px;
31338
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
31339
- align-items: center;
31340
- justify-content: space-between;
31341
- text-align: start;
31342
- font-size: var(--wds-font-size-body);
31343
- margin-block: 0;
31344
- margin-inline: var(--size-16);
31345
- padding-block: var(--size-8);
31346
- padding-inline: var(--size-16);
31347
- inline-size: calc(100% - var(--size-32));
31348
- transition: 400ms cubic-bezier(0.215, 0.61, 0.355, 1);
31349
- }
31350
- .np-theme-personal .snackbar__text {
31351
- box-shadow: 0 2px 4px 0 rgba(69, 71, 69, 0.35);
31352
- position: relative;
31353
- background: var(--color-contrast-theme);
31354
- border-radius: var(--radius-small);
31355
- color: var(--color-contrast-overlay);
31356
- }
31357
- .np-theme-personal .snackbar__text::after {
31358
- display: block;
31359
- border-radius: inherit;
31360
- block-size: 100%;
31361
- inline-size: 100%;
31362
- content: "";
31363
- position: absolute;
31364
- inset-inline-start: 0;
31365
- inset-block-start: 0;
31366
- z-index: -1;
31367
- background-color: var(--color-background-neutral);
31368
- }
31369
- .np-theme-personal--dark .snackbar__text,
31370
- .np-theme-personal--forest-green .snackbar__text {
31371
- box-shadow: none;
31372
- }
31373
- @media (min-width: 600px) {
31374
- .snackbar__text {
31375
- inline-size: auto;
31376
- max-inline-size: 600px;
31377
- }
31378
- }
31379
- .snackbar__text__action {
31380
- flex-shrink: 0;
31381
- margin-inline-start: var(--size-16);
31382
- }
31383
- .snackbar__text-container-enter,
31384
- .snackbar__text-container-exit {
31385
- transform: translateY(calc(100% + 10px));
31386
- }
31387
- .snackbar__text-container-enter-active {
31388
- transform: translateY(-16px);
31389
- transform: translateY(calc(-16px - env(safe-area-inset-bottom)));
31390
- }
31391
- @media (min-width: 600px) {
31392
- .snackbar__text-container-enter-active {
31393
- transform: translateY(-24px);
31394
- }
31395
- }
31396
31652
  .status-circle.negative,
31397
31653
  .status-circle.error {
31398
31654
  background-color: var(--color-sentiment-interactive-primary, var(--color-sentiment-negative));
package/src/main.less CHANGED
@@ -4,6 +4,8 @@
4
4
  @import "./PocketSurface/PocketSurface.less";
5
5
 
6
6
  @import "./Container/Container.less";
7
+ @import "./CardContainer/CardContainer.less";
8
+ @import "./CardWidget/CardWidget.less";
7
9
  @import "./_deprecated/CriticalBanner/CriticalCommsBanner.less";
8
10
  @import "./Accordion/Accordion.less";
9
11
  @import "./_deprecated/ActionButton/ActionButton.less";
@@ -72,11 +74,11 @@
72
74
  @import "./Prompt/InfoPrompt/InfoPrompt.less";
73
75
  @import "./Prompt/ActionPrompt/ActionPrompt.less";
74
76
  @import "./Prompt/CriticalBanner/CriticalBanner.less";
77
+ @import "./Prompt/Snackbar/Snackbar.less";
75
78
  @import "./Prompt/common/Expander/Expander.less";
76
79
  @import "./RadioGroup/RadioGroup.less";
77
80
  @import "./Section/Section.less";
78
81
  @import "./SlidingPanel/SlidingPanel.less";
79
- @import "./Snackbar/Snackbar.less";
80
82
  @import "./StatusIcon/StatusIcon.less";
81
83
  @import "./Stepper/Stepper.less";
82
84
  @import "./Sticky/Sticky.less";
@@ -1,128 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var reactTransitionGroup = require('react-transition-group');
7
- var Button_resolver = require('../Button/Button.resolver.js');
8
- var Body = require('../Body/Body.js');
9
- var WithNextPortal = require('../WithNextPortal/WithNextPortal.js');
10
- var jsxRuntime = require('react/jsx-runtime');
11
-
12
- const CSS_TRANSITION_DURATION = 400;
13
- const Snackbar = props => {
14
- const bodyRef = React.useRef(null);
15
- const leaveTimeout = React.useRef(0);
16
- const transitionTimeout = React.useRef(0);
17
- /** The props of the last committed render, as `this.props` was in the class component. */
18
- const committedProps = React.useRef(props);
19
- const [state, setState] = React.useState({
20
- visible: false,
21
- text: ''
22
- });
23
- React.useEffect(() => () => {
24
- window.clearTimeout(leaveTimeout.current);
25
- window.clearTimeout(transitionTimeout.current);
26
- }, []);
27
- // Runs after every render to mirror the componentDidUpdate lifecycle this component previously
28
- // relied on, including the shouldComponentUpdate guard that ignored every update without text.
29
- // Layout, not passive, so a notification is shown or replaced before the browser paints, as
30
- // componentDidUpdate did. Both rules below are disabled on purpose: the dependency-less effect
31
- // and its synchronous state updates are what keep this conversion behaviour-identical.
32
- /* eslint-disable react-hooks/exhaustive-deps, react-hooks/set-state-in-effect */
33
- React.useLayoutEffect(() => {
34
- const previousProps = committedProps.current;
35
- committedProps.current = props;
36
- const {
37
- action,
38
- text,
39
- timestamp
40
- } = props;
41
- // shouldComponentUpdate bailed out whenever the incoming text was empty. That also blocked the
42
- // updates scheduled below, so a Snackbar whose text is cleared stays on screen until it is
43
- // given text again. Preserved here deliberately to keep this refactor behaviour-identical.
44
- const updateWhileTextIsPresent = update => {
45
- if (committedProps.current.text) {
46
- update();
47
- }
48
- };
49
- const setLeaveTimeout = () => {
50
- leaveTimeout.current = window.setTimeout(() => {
51
- updateWhileTextIsPresent(() => setState(current => ({
52
- ...current,
53
- visible: false
54
- })));
55
- }, committedProps.current.timeout);
56
- };
57
- const show = () => {
58
- setState(current => ({
59
- ...current,
60
- visible: true,
61
- action,
62
- text
63
- }));
64
- setLeaveTimeout();
65
- };
66
- if (!text) {
67
- return;
68
- }
69
- if (!previousProps.text) {
70
- show();
71
- } else if (previousProps.timestamp !== timestamp) {
72
- window.clearTimeout(leaveTimeout.current);
73
- if (state.visible) {
74
- setState(current => ({
75
- ...current,
76
- visible: false
77
- }));
78
- transitionTimeout.current = window.setTimeout(() => {
79
- updateWhileTextIsPresent(show);
80
- }, CSS_TRANSITION_DURATION);
81
- } else {
82
- show();
83
- }
84
- }
85
- });
86
- /* eslint-enable react-hooks/exhaustive-deps, react-hooks/set-state-in-effect */
87
- const {
88
- action,
89
- text,
90
- visible
91
- } = state;
92
- const {
93
- timeout
94
- } = props;
95
- return /*#__PURE__*/jsxRuntime.jsx("div", {
96
- className: "snackbar",
97
- "aria-live": "assertive",
98
- role: "alert",
99
- children: /*#__PURE__*/jsxRuntime.jsx(reactTransitionGroup.CSSTransition, {
100
- nodeRef: bodyRef,
101
- in: visible,
102
- classNames: "snackbar__text-container",
103
- timeout: {
104
- appear: 0,
105
- enter: timeout,
106
- exit: CSS_TRANSITION_DURATION
107
- },
108
- unmountOnExit: true,
109
- children: /*#__PURE__*/jsxRuntime.jsxs(Body.default, {
110
- ref: bodyRef,
111
- as: "span",
112
- className: "snackbar__text",
113
- children: [text, action ? /*#__PURE__*/jsxRuntime.jsx(Button_resolver.default, {
114
- className: "snackbar__text__action",
115
- v2: true,
116
- size: "sm",
117
- onClick: action.onClick,
118
- children: action.label
119
- }) : null]
120
- })
121
- })
122
- });
123
- };
124
- var SnackbarPortal = WithNextPortal.default(Snackbar);
125
-
126
- exports.Snackbar = Snackbar;
127
- exports.default = SnackbarPortal;
128
- //# sourceMappingURL=Snackbar.js.map