@transferwise/components 46.167.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 (173) hide show
  1. package/README.md +1 -1
  2. package/build/Link/Link.js.map +1 -1
  3. package/build/Link/Link.mjs.map +1 -1
  4. package/build/Loader/Loader.js.map +1 -1
  5. package/build/Loader/Loader.mjs.map +1 -1
  6. package/build/Prompt/PrimitivePrompt/PrimitivePrompt.js +2 -1
  7. package/build/Prompt/PrimitivePrompt/PrimitivePrompt.js.map +1 -1
  8. package/build/Prompt/PrimitivePrompt/PrimitivePrompt.mjs +2 -1
  9. package/build/Prompt/PrimitivePrompt/PrimitivePrompt.mjs.map +1 -1
  10. package/build/Prompt/Snackbar/Snackbar.js +205 -0
  11. package/build/Prompt/Snackbar/Snackbar.js.map +1 -0
  12. package/build/Prompt/Snackbar/Snackbar.messages.js +14 -0
  13. package/build/Prompt/Snackbar/Snackbar.messages.js.map +1 -0
  14. package/build/Prompt/Snackbar/Snackbar.messages.mjs +10 -0
  15. package/build/Prompt/Snackbar/Snackbar.messages.mjs.map +1 -0
  16. package/build/Prompt/Snackbar/Snackbar.mjs +203 -0
  17. package/build/Prompt/Snackbar/Snackbar.mjs.map +1 -0
  18. package/build/Prompt/Snackbar/SnackbarContext.js.map +1 -0
  19. package/build/Prompt/Snackbar/SnackbarContext.mjs.map +1 -0
  20. package/build/Prompt/Snackbar/SnackbarPortal.js +12 -0
  21. package/build/Prompt/Snackbar/SnackbarPortal.js.map +1 -0
  22. package/build/Prompt/Snackbar/SnackbarPortal.mjs +8 -0
  23. package/build/Prompt/Snackbar/SnackbarPortal.mjs.map +1 -0
  24. package/build/Prompt/Snackbar/SnackbarProvider.js +42 -0
  25. package/build/Prompt/Snackbar/SnackbarProvider.js.map +1 -0
  26. package/build/Prompt/Snackbar/SnackbarProvider.mjs +38 -0
  27. package/build/Prompt/Snackbar/SnackbarProvider.mjs.map +1 -0
  28. package/build/Prompt/Snackbar/constants.js +17 -0
  29. package/build/Prompt/Snackbar/constants.js.map +1 -0
  30. package/build/Prompt/Snackbar/constants.mjs +11 -0
  31. package/build/Prompt/Snackbar/constants.mjs.map +1 -0
  32. package/build/Prompt/Snackbar/useSnackbar.js.map +1 -0
  33. package/build/Prompt/Snackbar/useSnackbar.mjs.map +1 -0
  34. package/build/Prompt/Snackbar/useSnackbarAutoDismiss.js +66 -0
  35. package/build/Prompt/Snackbar/useSnackbarAutoDismiss.js.map +1 -0
  36. package/build/Prompt/Snackbar/useSnackbarAutoDismiss.mjs +62 -0
  37. package/build/Prompt/Snackbar/useSnackbarAutoDismiss.mjs.map +1 -0
  38. package/build/Prompt/Snackbar/useSnackbarManager.js +153 -0
  39. package/build/Prompt/Snackbar/useSnackbarManager.js.map +1 -0
  40. package/build/Prompt/Snackbar/useSnackbarManager.mjs +149 -0
  41. package/build/Prompt/Snackbar/useSnackbarManager.mjs.map +1 -0
  42. package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.js +135 -0
  43. package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.js.map +1 -0
  44. package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.mjs +131 -0
  45. package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.mjs.map +1 -0
  46. package/build/Section/Section.js.map +1 -1
  47. package/build/Section/Section.mjs.map +1 -1
  48. package/build/_deprecated/Select/Select.js +1 -1
  49. package/build/_deprecated/Select/Select.js.map +1 -1
  50. package/build/_deprecated/Select/Select.mjs +1 -1
  51. package/build/_deprecated/Select/Select.mjs.map +1 -1
  52. package/build/common/BottomSheet/BottomSheet.js +1 -3
  53. package/build/common/BottomSheet/BottomSheet.js.map +1 -1
  54. package/build/common/BottomSheet/BottomSheet.mjs +1 -3
  55. package/build/common/BottomSheet/BottomSheet.mjs.map +1 -1
  56. package/build/i18n/en.json +1 -0
  57. package/build/i18n/en.json.js +1 -0
  58. package/build/i18n/en.json.js.map +1 -1
  59. package/build/i18n/en.json.mjs +1 -0
  60. package/build/i18n/en.json.mjs.map +1 -1
  61. package/build/index.js +3 -3
  62. package/build/index.mjs +3 -3
  63. package/build/main.css +137 -75
  64. package/build/styles/IconButton/IconButton.css +3 -4
  65. package/build/styles/Prompt/Snackbar/Snackbar.css +134 -0
  66. package/build/styles/main.css +137 -75
  67. package/build/types/Link/Link.d.ts +1 -1
  68. package/build/types/Loader/Loader.d.ts +1 -1
  69. package/build/types/Prompt/PrimitivePrompt/PrimitivePrompt.d.ts +11 -0
  70. package/build/types/Prompt/PrimitivePrompt/PrimitivePrompt.d.ts.map +1 -1
  71. package/build/types/Prompt/Snackbar/Snackbar.d.ts +62 -0
  72. package/build/types/Prompt/Snackbar/Snackbar.d.ts.map +1 -0
  73. package/build/types/Prompt/Snackbar/Snackbar.messages.d.ts +9 -0
  74. package/build/types/Prompt/Snackbar/Snackbar.messages.d.ts.map +1 -0
  75. package/build/types/Prompt/Snackbar/Snackbar.types.d.ts +12 -0
  76. package/build/types/Prompt/Snackbar/Snackbar.types.d.ts.map +1 -0
  77. package/build/types/{Snackbar → Prompt/Snackbar}/SnackbarContext.d.ts +2 -2
  78. package/build/types/Prompt/Snackbar/SnackbarContext.d.ts.map +1 -0
  79. package/build/types/Prompt/Snackbar/SnackbarPortal.d.ts +4 -0
  80. package/build/types/Prompt/Snackbar/SnackbarPortal.d.ts.map +1 -0
  81. package/build/types/Prompt/Snackbar/SnackbarProvider.d.ts +13 -0
  82. package/build/types/Prompt/Snackbar/SnackbarProvider.d.ts.map +1 -0
  83. package/build/types/Prompt/Snackbar/constants.d.ts +9 -0
  84. package/build/types/Prompt/Snackbar/constants.d.ts.map +1 -0
  85. package/build/types/{Snackbar → Prompt/Snackbar}/index.d.ts +1 -1
  86. package/build/types/Prompt/Snackbar/index.d.ts.map +1 -0
  87. package/build/types/Prompt/Snackbar/useSnackbar.d.ts +3 -0
  88. package/build/types/Prompt/Snackbar/useSnackbar.d.ts.map +1 -0
  89. package/build/types/Prompt/Snackbar/useSnackbarAutoDismiss.d.ts +13 -0
  90. package/build/types/Prompt/Snackbar/useSnackbarAutoDismiss.d.ts.map +1 -0
  91. package/build/types/Prompt/Snackbar/useSnackbarManager.d.ts +20 -0
  92. package/build/types/Prompt/Snackbar/useSnackbarManager.d.ts.map +1 -0
  93. package/build/types/Prompt/Snackbar/useSnackbarSwipeDismiss.d.ts +22 -0
  94. package/build/types/Prompt/Snackbar/useSnackbarSwipeDismiss.d.ts.map +1 -0
  95. package/build/types/Section/Section.d.ts +1 -1
  96. package/build/types/_deprecated/Select/Select.d.ts +1 -1
  97. package/build/types/common/BottomSheet/BottomSheet.d.ts +1 -3
  98. package/build/types/common/BottomSheet/BottomSheet.d.ts.map +1 -1
  99. package/build/types/index.d.ts +5 -5
  100. package/build/types/index.d.ts.map +1 -1
  101. package/build/types/test-utils/index.d.ts +2 -0
  102. package/build/types/test-utils/index.d.ts.map +1 -1
  103. package/package.json +2 -2
  104. package/src/IconButton/IconButton.css +3 -4
  105. package/src/IconButton/IconButton.less +14 -1
  106. package/src/Link/Link.tsx +1 -1
  107. package/src/ListItem/AdditionalInfo/_stories/ListItemAdditionalInfo.story.tsx +1 -1
  108. package/src/ListItem/AvatarView/_stories/ListItemAvatarView.story.tsx +3 -3
  109. package/src/ListItem/_stories/ListItem.disabled.story.tsx +1 -1
  110. package/src/ListItem/_stories/ListItem.scenarios.story.tsx +2 -2
  111. package/src/Loader/Loader.tsx +1 -1
  112. package/src/Prompt/PrimitivePrompt/PrimitivePrompt.test.tsx +24 -1
  113. package/src/Prompt/PrimitivePrompt/PrimitivePrompt.tsx +8 -2
  114. package/src/Prompt/Snackbar/Snackbar.css +134 -0
  115. package/src/Prompt/Snackbar/Snackbar.less +159 -0
  116. package/src/Prompt/Snackbar/Snackbar.messages.ts +9 -0
  117. package/src/Prompt/Snackbar/Snackbar.test.tsx +1079 -0
  118. package/src/Prompt/Snackbar/Snackbar.tsx +245 -0
  119. package/src/Prompt/Snackbar/Snackbar.types.ts +17 -0
  120. package/src/{Snackbar → Prompt/Snackbar}/SnackbarContext.ts +2 -2
  121. package/src/Prompt/Snackbar/SnackbarPortal.tsx +8 -0
  122. package/src/Prompt/Snackbar/SnackbarProvider.test.tsx +783 -0
  123. package/src/Prompt/Snackbar/SnackbarProvider.tsx +41 -0
  124. package/src/Prompt/Snackbar/_stories/Snackbar.accessibility.docs.mdx +58 -0
  125. package/src/{Snackbar → Prompt/Snackbar}/_stories/Snackbar.rtl.test.story.tsx +17 -9
  126. package/src/Prompt/Snackbar/_stories/Snackbar.story.tsx +416 -0
  127. package/src/Prompt/Snackbar/_stories/Snackbar.test.story.tsx +263 -0
  128. package/src/Prompt/Snackbar/constants.ts +10 -0
  129. package/src/{Snackbar → Prompt/Snackbar}/index.ts +1 -1
  130. package/src/Prompt/Snackbar/useSnackbarAutoDismiss.ts +74 -0
  131. package/src/Prompt/Snackbar/useSnackbarManager.ts +169 -0
  132. package/src/Prompt/Snackbar/useSnackbarSwipeDismiss.ts +169 -0
  133. package/src/Section/Section.tsx +1 -1
  134. package/src/_deprecated/Select/Select.tsx +1 -1
  135. package/src/_deprecated/Select/_stories/Select.story.tsx +1 -1
  136. package/src/common/BottomSheet/BottomSheet.tsx +1 -3
  137. package/src/i18n/en.json +1 -0
  138. package/src/index.ts +5 -5
  139. package/src/main.css +137 -75
  140. package/src/main.less +1 -1
  141. package/build/Snackbar/Snackbar.js +0 -128
  142. package/build/Snackbar/Snackbar.js.map +0 -1
  143. package/build/Snackbar/Snackbar.mjs +0 -123
  144. package/build/Snackbar/Snackbar.mjs.map +0 -1
  145. package/build/Snackbar/SnackbarContext.js.map +0 -1
  146. package/build/Snackbar/SnackbarContext.mjs.map +0 -1
  147. package/build/Snackbar/SnackbarProvider.js +0 -46
  148. package/build/Snackbar/SnackbarProvider.js.map +0 -1
  149. package/build/Snackbar/SnackbarProvider.mjs +0 -42
  150. package/build/Snackbar/SnackbarProvider.mjs.map +0 -1
  151. package/build/Snackbar/useSnackbar.js.map +0 -1
  152. package/build/Snackbar/useSnackbar.mjs.map +0 -1
  153. package/build/styles/Snackbar/Snackbar.css +0 -71
  154. package/build/types/Snackbar/Snackbar.d.ts +0 -16
  155. package/build/types/Snackbar/Snackbar.d.ts.map +0 -1
  156. package/build/types/Snackbar/SnackbarContext.d.ts.map +0 -1
  157. package/build/types/Snackbar/SnackbarProvider.d.ts +0 -6
  158. package/build/types/Snackbar/SnackbarProvider.d.ts.map +0 -1
  159. package/build/types/Snackbar/index.d.ts.map +0 -1
  160. package/build/types/Snackbar/useSnackbar.d.ts +0 -3
  161. package/build/types/Snackbar/useSnackbar.d.ts.map +0 -1
  162. package/src/Snackbar/Snackbar.css +0 -71
  163. package/src/Snackbar/Snackbar.less +0 -80
  164. package/src/Snackbar/Snackbar.test.tsx +0 -206
  165. package/src/Snackbar/Snackbar.tsx +0 -129
  166. package/src/Snackbar/SnackbarProvider.tsx +0 -33
  167. package/src/Snackbar/_stories/Snackbar.story.tsx +0 -89
  168. package/src/Snackbar/_stories/Snackbar.test.story.tsx +0 -139
  169. /package/build/{Snackbar → Prompt/Snackbar}/SnackbarContext.js +0 -0
  170. /package/build/{Snackbar → Prompt/Snackbar}/SnackbarContext.mjs +0 -0
  171. /package/build/{Snackbar → Prompt/Snackbar}/useSnackbar.js +0 -0
  172. /package/build/{Snackbar → Prompt/Snackbar}/useSnackbar.mjs +0 -0
  173. /package/src/{Snackbar → Prompt/Snackbar}/useSnackbar.ts +0 -0
@@ -1,33 +0,0 @@
1
- import { useMemo, useState } from 'react';
2
-
3
- import SnackbarPortal, { SnackbarProps } from './Snackbar';
4
- import { SnackbarContext } from './SnackbarContext';
5
-
6
- export interface SnackbarProviderProps {
7
- timeout?: number;
8
- children?: React.ReactNode;
9
- }
10
-
11
- export default function SnackbarProvider({ timeout = 4500, children }: SnackbarProviderProps) {
12
- const [state, setState] = useState<Omit<SnackbarProps, 'timeout'>>({
13
- text: '',
14
- timestamp: 0,
15
- });
16
- const { action, text, timestamp } = state;
17
-
18
- return (
19
- <SnackbarContext.Provider
20
- value={useMemo(
21
- () => ({
22
- createSnackbar: ({ action, text }) => {
23
- setState({ action, text, timestamp: Date.now() });
24
- },
25
- }),
26
- [],
27
- )}
28
- >
29
- <SnackbarPortal action={action} text={text} timestamp={timestamp} timeout={timeout} />
30
- {children}
31
- </SnackbarContext.Provider>
32
- );
33
- }
@@ -1,89 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-webpack5';
2
- import { fn, userEvent, within } from 'storybook/test';
3
-
4
- import { wait } from '../../test-utils/wait';
5
- import {
6
- createSandboxStory,
7
- globalScope,
8
- } from '../../../.storybook/components/sandbox/SandboxEditor';
9
- import Button from '../../Button';
10
- import { Snackbar } from '../Snackbar';
11
- import { SnackbarConsumer } from '../SnackbarContext';
12
- import SnackbarProvider from '../SnackbarProvider';
13
-
14
- const meta: Meta = {
15
- component: Snackbar,
16
- title: 'Prompts/Snackbar',
17
- };
18
- export default meta;
19
-
20
- export const Sandbox = createSandboxStory({
21
- code: `<SnackbarProvider>
22
- <SnackbarConsumer>
23
- {({ createSnackbar }) => (
24
- <Button v2 size="md"
25
- onClick={() =>
26
- createSnackbar({
27
- text: <span>Transfer completed successfully</span>,
28
- action: {
29
- label: 'View',
30
- onClick: () => console.log('View clicked'),
31
- },
32
- })
33
- }
34
- >
35
- Show Snackbar
36
- </Button>
37
- )}
38
- </SnackbarConsumer>
39
- </SnackbarProvider>`,
40
- scope: globalScope,
41
- });
42
-
43
- export const Basic: StoryObj = {
44
- parameters: {
45
- docs: {
46
- source: {
47
- type: 'code',
48
- transform: async (src = '') => {
49
- const match = /(function Render\(\).*?)(,\s+play:\s+async)/s.exec(src);
50
- return match?.[1] || src;
51
- },
52
- },
53
- },
54
- source: {
55
- type: 'code',
56
- },
57
- },
58
- render: function Render() {
59
- return (
60
- <SnackbarProvider>
61
- <SnackbarConsumer>
62
- {({ createSnackbar }) => {
63
- return (
64
- <Button
65
- block
66
- onClick={() => {
67
- createSnackbar({
68
- action: {
69
- label: 'View',
70
- onClick: fn(),
71
- },
72
- text: <span>Some text</span>,
73
- });
74
- }}
75
- >
76
- Show Snackbar
77
- </Button>
78
- );
79
- }}
80
- </SnackbarConsumer>
81
- </SnackbarProvider>
82
- );
83
- },
84
- play: async ({ canvasElement }) => {
85
- await wait(0);
86
- const canvas = within(canvasElement);
87
- await userEvent.click(canvas.getByRole('button'));
88
- },
89
- };
@@ -1,139 +0,0 @@
1
- import { userEvent, within, expect } from 'storybook/test';
2
- import { action } from 'storybook/actions';
3
- import { withVariantConfig } from '../../../.storybook/helpers';
4
- import { lorem20 } from '../../test-utils';
5
- import { wait } from '../../test-utils/wait';
6
- import Button from '../../Button';
7
- import { Snackbar, type SnackbarProps } from '../Snackbar';
8
- import { SnackbarConsumer } from '../SnackbarContext';
9
- import SnackbarProvider from '../SnackbarProvider';
10
-
11
- export default {
12
- title: 'Prompts/Snackbar/Tests',
13
- component: Snackbar,
14
- argTypes: {},
15
- tags: ['!autodocs', '!manifest'],
16
- };
17
-
18
- const launchSnackbar = async (canvasElement: HTMLElement) => {
19
- await wait(0);
20
- const canvas = within(canvasElement);
21
- await userEvent.click(canvas.getByRole('button'));
22
- };
23
-
24
- type Args = Partial<SnackbarProps> & {
25
- extraContext: React.ReactNode;
26
- timeout: number;
27
- };
28
-
29
- const TIMEOUT = 10000000;
30
-
31
- const Default = {
32
- args: {
33
- timeout: TIMEOUT,
34
- } as Args,
35
- play: async ({ canvasElement }: { canvasElement: HTMLElement }) => {
36
- await launchSnackbar(canvasElement);
37
- },
38
- render: (args: Args) => {
39
- return (
40
- <SnackbarProvider timeout={args.timeout}>
41
- <SnackbarConsumer>
42
- {({ createSnackbar }) => (
43
- <>
44
- <Button
45
- v2
46
- block
47
- onClick={() => {
48
- createSnackbar({
49
- action: {
50
- label: 'View',
51
- onClick: () => action('View button clicked.'),
52
- },
53
- text: <span>Some text</span>,
54
- });
55
- }}
56
- >
57
- Show Snackbar
58
- </Button>
59
- {args.extraContext}
60
- </>
61
- )}
62
- </SnackbarConsumer>
63
- </SnackbarProvider>
64
- );
65
- },
66
- };
67
-
68
- export const Basic = {
69
- ...Default,
70
- args: {
71
- ...Default.args,
72
- },
73
- };
74
-
75
- export const Mobile = {
76
- ...Default,
77
- args: {
78
- ...Default.args,
79
- },
80
- ...withVariantConfig(['mobile'], Default),
81
- };
82
-
83
- const switchToDarkMode = async (context: { canvasElement: HTMLElement }) => {
84
- await Default.play(context);
85
-
86
- // the snackbar is outside the storybook dom so dark mode doesn't apply
87
- const body = document.querySelector('div.np-theme-personal');
88
- if (body) {
89
- body.setAttribute('class', 'np-theme-personal--dark');
90
- }
91
- const snackbar = document.querySelector('div.snackbar');
92
- if (snackbar) {
93
- snackbar.setAttribute('class', 'snackbar np-theme-personal--dark');
94
- }
95
- };
96
-
97
- export const DarkMode = {
98
- ...Default,
99
- args: {
100
- ...Default.args,
101
- },
102
- play: switchToDarkMode,
103
- ...withVariantConfig(['dark'], Default),
104
- };
105
-
106
- export const Zoom400 = {
107
- ...Default,
108
- args: {
109
- ...Default.args,
110
- extraContext: (
111
- <div className="p-t-3">
112
- Snackbar isn&#39;t transparent (I&#39;m going to make this text very long so that it will
113
- fill up the entire page and go behind the snackbar. This way, when you look at it you will
114
- easily be able to tell if the snackbar is transparent and recognize the bug because we
115
- don&#39;t want it to be transparent. Transparent is bad. When we first did rebrand we had a
116
- lot of problems with transparencies. {lorem20}
117
- </div>
118
- ),
119
- },
120
- ...withVariantConfig(['400%'], Default),
121
- };
122
-
123
- /**
124
- * Snackbar is only shown once even if trigger is clicked many times
125
- */
126
- export const MultipleClicks = {
127
- ...Default,
128
- args: {
129
- ...Default.args,
130
- },
131
- play: async ({ canvasElement }: { canvasElement: HTMLElement }) => {
132
- const canvas = within(canvasElement);
133
- for (let i = 0; i < 8; i += 1) {
134
- await userEvent.click(canvas.getByRole('button'));
135
- }
136
-
137
- await expect(within(document.body).getAllByRole('alert')).toHaveLength(1);
138
- },
139
- };