@transferwise/components 0.0.0-experimental-6d53d3c → 0.0.0-experimental-7a8cfdb

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 (61) hide show
  1. package/build/main.css +35 -13
  2. package/build/prompt/CriticalBanner/CriticalBanner.js +1 -1
  3. package/build/prompt/CriticalBanner/CriticalBanner.js.map +1 -1
  4. package/build/prompt/CriticalBanner/CriticalBanner.mjs +1 -1
  5. package/build/prompt/CriticalBanner/CriticalBanner.mjs.map +1 -1
  6. package/build/styles/css/neptune.css +11 -11
  7. package/build/styles/less/legacy-variables.less +1 -1
  8. package/build/styles/less/neptune-tokens.less +2 -2
  9. package/build/styles/main.css +35 -13
  10. package/build/styles/prompt/CriticalBanner/CriticalBanner.css +21 -1
  11. package/build/styles/props/custom-media.css +1 -1
  12. package/build/styles/props/neptune-tokens.css +1 -1
  13. package/build/styles/sentimentSurface/SentimentSurface.css +1 -1
  14. package/build/styles/styles/less/neptune.css +11 -11
  15. package/package.json +6 -6
  16. package/src/body/Body.story.tsx +5 -1
  17. package/src/calendar/Calendar.story.tsx +4 -1
  18. package/src/checkbox/Checkbox.story.tsx +4 -1
  19. package/src/chevron/Chevron.story.tsx +1 -1
  20. package/src/container/Container.story.tsx +4 -1
  21. package/src/dateInput/DateInput.story.tsx +4 -1
  22. package/src/dateLookup/DateLookup.story.tsx +4 -1
  23. package/src/decision/Decision.story.tsx +4 -1
  24. package/src/definitionList/DefinitionList.story.tsx +4 -1
  25. package/src/dimmer/Dimmer.story.tsx +5 -1
  26. package/src/display/Display.story.tsx +4 -1
  27. package/src/emphasis/Emphasis.story.tsx +5 -1
  28. package/src/expressiveMoneyInput/ExpressiveMoneyInput.story.tsx +4 -1
  29. package/src/field/Field.story.tsx +4 -1
  30. package/src/header/Header.story.tsx +4 -1
  31. package/src/inputWithDisplayFormat/InputWithDisplayFormat.story.tsx +4 -1
  32. package/src/inputs/InputGroup.story.tsx +4 -1
  33. package/src/inputs/SearchInput.story.tsx +4 -1
  34. package/src/inputs/TextArea.story.tsx +4 -1
  35. package/src/instructionsList/InstructionsList.story.tsx +4 -1
  36. package/src/label/Label.story.tsx +4 -1
  37. package/src/link/Link.story.tsx +4 -1
  38. package/src/loader/Loader.story.tsx +1 -1
  39. package/src/main.css +35 -13
  40. package/src/markdown/Markdown.story.tsx +5 -1
  41. package/src/money/Money.story.tsx +1 -0
  42. package/src/moneyInput/MoneyInput.story.tsx +4 -1
  43. package/src/phoneNumberInput/PhoneNumberInput.story.tsx +4 -1
  44. package/src/promoCard/PromoCard.story.tsx +4 -1
  45. package/src/promoCard/PromoCardGroup.story.tsx +4 -1
  46. package/src/prompt/CriticalBanner/CriticalBanner.css +21 -1
  47. package/src/prompt/CriticalBanner/CriticalBanner.less +34 -15
  48. package/src/prompt/CriticalBanner/CriticalBanner.story.tsx +1 -1
  49. package/src/prompt/CriticalBanner/CriticalBanner.test.story.tsx +58 -0
  50. package/src/prompt/CriticalBanner/CriticalBanner.tsx +1 -1
  51. package/src/radio/Radio.story.tsx +4 -1
  52. package/src/radioGroup/RadioGroup.story.tsx +4 -1
  53. package/src/segmentedControl/SegmentedControl.story.tsx +4 -1
  54. package/src/sentimentSurface/SentimentSurface.css +1 -1
  55. package/src/statusIcon/StatusIcon.story.tsx +1 -1
  56. package/src/styles/less/neptune.css +11 -11
  57. package/src/textareaWithDisplayFormat/TextareaWithDisplayFormat.story.tsx +4 -1
  58. package/src/title/Title.story.tsx +5 -1
  59. package/src/typeahead/Typeahead.story.tsx +4 -1
  60. package/src/upload/Upload.story.tsx +4 -1
  61. package/src/uploadInput/UploadInput.story.tsx +4 -1
@@ -2,7 +2,10 @@ import type { Meta, StoryObj } from '@storybook/react-webpack5';
2
2
  import { StarFill } from '@transferwise/icons';
3
3
 
4
4
  import PromoCard, { type PromoCardCheckedProps, type PromoCardLinkProps } from './PromoCard';
5
- import { createSandboxStory, globalScope } from '../../.storybook/components/sandbox/SandboxEditor';
5
+ import {
6
+ createSandboxStory,
7
+ globalScope,
8
+ } from '../../.storybook/components/sandbox/SandboxEditor';
6
9
 
7
10
  const meta: Meta<typeof PromoCard> = {
8
11
  component: PromoCard,
@@ -2,7 +2,10 @@ import { Meta, StoryObj } from '@storybook/react-webpack5';
2
2
 
3
3
  import PromoCard from './PromoCard';
4
4
  import PromoCardGroup from './PromoCardGroup';
5
- import { createSandboxStory, globalScope } from '../../.storybook/components/sandbox/SandboxEditor';
5
+ import {
6
+ createSandboxStory,
7
+ globalScope,
8
+ } from '../../.storybook/components/sandbox/SandboxEditor';
6
9
 
7
10
  const PromoCards = () => {
8
11
  return (
@@ -4,6 +4,9 @@
4
4
  --Prompt-actions-gap: var(--size-8);
5
5
  --Prompt-gap: var(--size-10) var(--size-16);
6
6
  --Prompt-border-radius: 0;
7
+ --wds-critical-banner-background-base: transparent;
8
+ --wds-critical-banner-background-surface: var(--color-sentiment-background-surface);
9
+ --wds-critical-banner-background: linear-gradient(var(--wds-critical-banner-background-surface), var(--wds-critical-banner-background-surface)), var(--wds-critical-banner-background-base);
7
10
  container-type: inline-size;
8
11
  position: relative;
9
12
  --critical-banner-easing: cubic-bezier(0.9, 0, 0.7, 1);
@@ -11,6 +14,12 @@
11
14
  /* Override PrimitivePrompt's --screen-sm-max actions behaviour:
12
15
  actions only go full-width below mobile-max token (container query) */
13
16
  }
17
+ .wds-critical-banner.wds-prompt--neutral {
18
+ --wds-critical-banner-background-base: var(--color-background-elevated);
19
+ }
20
+ .wds-critical-banner.wds-prompt--neutral.wds-sentiment-surface--hasBaseStyles {
21
+ background: var(--wds-critical-banner-background);
22
+ }
14
23
  .wds-critical-banner--media-image {
15
24
  width: 48px;
16
25
  width: var(--size-48);
@@ -140,6 +149,15 @@
140
149
  @container critical-banner-overhang (max-width: 600px) {
141
150
  .wds-critical-banner__entry-mask {
142
151
  --critical-banner-mobile-overhang-size: 32px;
152
+ --wds-critical-banner-overhang-mask: radial-gradient(circle at 100% 100%, transparent var(--critical-banner-mobile-overhang-size), #000 var(--critical-banner-mobile-overhang-size)) 0 0 / var(--critical-banner-mobile-overhang-size)
153
+ var(--critical-banner-mobile-overhang-size) no-repeat,
154
+ radial-gradient(
155
+ circle at 0% 100%,
156
+ transparent var(--critical-banner-mobile-overhang-size),
157
+ #000 var(--critical-banner-mobile-overhang-size)
158
+ )
159
+ 100% 0 / var(--critical-banner-mobile-overhang-size)
160
+ var(--critical-banner-mobile-overhang-size) no-repeat;
143
161
  }
144
162
  .wds-critical-banner__entry-mask .wds-critical-banner-overhang {
145
163
  margin-bottom: var(--critical-banner-mobile-overhang-size);
@@ -152,7 +170,9 @@
152
170
  left: 0;
153
171
  height: var(--critical-banner-mobile-overhang-size);
154
172
  pointer-events: none;
155
- background: radial-gradient(circle at 100% 100%, transparent var(--critical-banner-mobile-overhang-size), var(--color-sentiment-background-surface) var(--critical-banner-mobile-overhang-size)) 0 0 / var(--critical-banner-mobile-overhang-size) var(--critical-banner-mobile-overhang-size) no-repeat, radial-gradient(circle at 0% 100%, transparent var(--critical-banner-mobile-overhang-size), var(--color-sentiment-background-surface) var(--critical-banner-mobile-overhang-size)) 100% 0 / var(--critical-banner-mobile-overhang-size) var(--critical-banner-mobile-overhang-size) no-repeat;
173
+ background: var(--wds-critical-banner-background);
174
+ -webkit-mask: var(--wds-critical-banner-overhang-mask);
175
+ mask: var(--wds-critical-banner-overhang-mask);
156
176
  }
157
177
  }
158
178
  .wds-critical-banner__entry-track {
@@ -7,6 +7,14 @@
7
7
  --Prompt-actions-gap: var(--size-8);
8
8
  --Prompt-gap: var(--size-10) var(--size-16);
9
9
  --Prompt-border-radius: 0;
10
+ --wds-critical-banner-background-base: transparent;
11
+ --wds-critical-banner-background-surface: var(--color-sentiment-background-surface);
12
+ --wds-critical-banner-background:
13
+ linear-gradient(
14
+ var(--wds-critical-banner-background-surface),
15
+ var(--wds-critical-banner-background-surface)
16
+ ),
17
+ var(--wds-critical-banner-background-base);
10
18
  container-type: inline-size;
11
19
  position: relative;
12
20
 
@@ -14,6 +22,14 @@
14
22
  --critical-banner-easing: cubic-bezier(0.9, 0, 0.7, 1);
15
23
  --critical-banner-duration: 150ms;
16
24
 
25
+ &.wds-prompt--neutral {
26
+ --wds-critical-banner-background-base: var(--color-background-elevated);
27
+
28
+ &.wds-sentiment-surface--hasBaseStyles {
29
+ background: var(--wds-critical-banner-background);
30
+ }
31
+ }
32
+
17
33
  &--media-image {
18
34
  width: var(--size-48);
19
35
  height: var(--size-48);
@@ -163,6 +179,21 @@
163
179
 
164
180
  @container critical-banner-overhang (max-width: @wds-critical-banner-mobile-overhang-max) {
165
181
  --critical-banner-mobile-overhang-size: 32px;
182
+ --wds-critical-banner-overhang-mask:
183
+ radial-gradient(
184
+ circle at 100% 100%,
185
+ transparent var(--critical-banner-mobile-overhang-size),
186
+ #000 var(--critical-banner-mobile-overhang-size)
187
+ )
188
+ 0 0 / var(--critical-banner-mobile-overhang-size)
189
+ var(--critical-banner-mobile-overhang-size) no-repeat,
190
+ radial-gradient(
191
+ circle at 0% 100%,
192
+ transparent var(--critical-banner-mobile-overhang-size),
193
+ #000 var(--critical-banner-mobile-overhang-size)
194
+ )
195
+ 100% 0 / var(--critical-banner-mobile-overhang-size)
196
+ var(--critical-banner-mobile-overhang-size) no-repeat;
166
197
 
167
198
  .wds-critical-banner-overhang {
168
199
  margin-bottom: var(--critical-banner-mobile-overhang-size);
@@ -175,21 +206,9 @@
175
206
  left: 0;
176
207
  height: var(--critical-banner-mobile-overhang-size);
177
208
  pointer-events: none;
178
- background:
179
- radial-gradient(
180
- circle at 100% 100%,
181
- transparent var(--critical-banner-mobile-overhang-size),
182
- var(--color-sentiment-background-surface) var(--critical-banner-mobile-overhang-size)
183
- )
184
- 0 0 / var(--critical-banner-mobile-overhang-size)
185
- var(--critical-banner-mobile-overhang-size) no-repeat,
186
- radial-gradient(
187
- circle at 0% 100%,
188
- transparent var(--critical-banner-mobile-overhang-size),
189
- var(--color-sentiment-background-surface) var(--critical-banner-mobile-overhang-size)
190
- )
191
- 100% 0 / var(--critical-banner-mobile-overhang-size)
192
- var(--critical-banner-mobile-overhang-size) no-repeat;
209
+ background: var(--wds-critical-banner-background);
210
+ -webkit-mask: var(--wds-critical-banner-overhang-mask);
211
+ mask: var(--wds-critical-banner-overhang-mask);
193
212
  }
194
213
  }
195
214
  }
@@ -19,7 +19,7 @@ const meta = {
19
19
  component: CriticalBanner,
20
20
  title: 'Prompts/CriticalBanner',
21
21
  tags: ['new'],
22
- parameters: { docs: { toc: true }, padding: '0' },
22
+ parameters: { docs: { toc: true }, padding: '0', },
23
23
  args: {
24
24
  title: 'Your account requires verification',
25
25
  description: 'Please verify your identity to continue using all features.',
@@ -21,10 +21,24 @@ const wait = async (ms: number) =>
21
21
  });
22
22
 
23
23
  const ANIMATION_DURATION = 200; // 150ms animation + 50ms buffer
24
+ const ENTRY_ANIMATION_DURATION = 950; // 500ms delay + 400ms animation + 50ms buffer
24
25
 
25
26
  const longDescription =
26
27
  'We have detected unusual activity on your account that does not match your typical usage patterns. To protect your funds and personal information, we have temporarily restricted access. Please verify your identity to restore full access to your account.';
27
28
 
29
+ const BACKGROUND_SCROLL_CONTENT = [
30
+ 'Manage your card settings, limits, and delivery details from this page.',
31
+ 'Your recent payments, subscriptions, and cash withdrawals will appear here.',
32
+ 'Freeze your card any time if it is lost, stolen, or somewhere unexpected.',
33
+ 'Set spending limits for online, in-store, and contactless payments.',
34
+ 'Add your card to a digital wallet for quicker checkout in supported stores.',
35
+ 'Choose the currency balance you want to spend from before you travel.',
36
+ 'Review fees before using an ATM or paying in a currency you do not hold.',
37
+ 'Order a replacement card if yours is damaged or about to expire.',
38
+ 'Keep your delivery address up to date so new cards arrive in the right place.',
39
+ 'Contact support if a card payment looks unfamiliar or incorrect.',
40
+ ];
41
+
28
42
  function AllVariants({ gap = '1rem' }: { gap?: string }) {
29
43
  const [states, setStates] = useState({
30
44
  negativeExpanded: true,
@@ -137,6 +151,50 @@ export const MobileVariants: Story = {
137
151
  ...withVariantConfig(['mobile']),
138
152
  };
139
153
 
154
+ /** Neutral background regression test with page content scrolled under the mobile overhang. */
155
+ export const BackgroundIsNotTransparent: Story = {
156
+ render: function Render() {
157
+ return (
158
+ <div
159
+ data-testid="background-scroll-container"
160
+ style={{
161
+ width: 350,
162
+ height: 640,
163
+ overflowY: 'auto',
164
+ border: '1px solid var(--color-border-neutral)',
165
+ }}
166
+ >
167
+ <div style={{ position: 'sticky', top: 0, zIndex: 1 }}>
168
+ <CriticalBanner
169
+ sentiment="neutral"
170
+ title="Your account requires verification"
171
+ description="Please verify your identity to continue using all features."
172
+ action={{ label: 'Verify now', onClick: fn() }}
173
+ />
174
+ </div>
175
+ <main style={{ padding: 'var(--size-24) var(--size-16) var(--size-48)' }}>
176
+ <h1 style={{ margin: '0 0 var(--size-8)', fontSize: 32, lineHeight: 1.1 }}>Debit card</h1>
177
+ <p style={{ margin: '0 0 var(--size-24)' }}>Spend in 150+ currencies</p>
178
+ {BACKGROUND_SCROLL_CONTENT.map((paragraph) => (
179
+ <p key={paragraph}>{paragraph}</p>
180
+ ))}
181
+ </main>
182
+ </div>
183
+ );
184
+ },
185
+ play: async ({ canvasElement }) => {
186
+ const scrollContainer = canvasElement.querySelector(
187
+ '[data-testid="background-scroll-container"]',
188
+ );
189
+
190
+ if (scrollContainer) {
191
+ scrollContainer.scrollTop = 250;
192
+ await wait(ENTRY_ANIMATION_DURATION);
193
+ }
194
+ },
195
+ ...withVariantConfig(['mobile']),
196
+ };
197
+
140
198
  /** Mobile entry animation visual regression test. */
141
199
  export const AnimatedEntryMobile: Story = {
142
200
  render: function Render() {
@@ -80,9 +80,9 @@ export const CriticalBanner = ({
80
80
 
81
81
  const bannerSurface = (
82
82
  <Container
83
- ref={containerRef}
84
83
  size="fluid"
85
84
  as={PrimitivePrompt as ElementType}
85
+ ref={containerRef}
86
86
  id={id}
87
87
  sentiment={sentiment}
88
88
  emphasis={sentiment === 'neutral' ? 'base' : 'elevated'}
@@ -1,6 +1,9 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-webpack5';
2
2
  import { useState } from 'react';
3
- import { createSandboxStory, globalScope } from '../../.storybook/components/sandbox/SandboxEditor';
3
+ import {
4
+ createSandboxStory,
5
+ globalScope,
6
+ } from '../../.storybook/components/sandbox/SandboxEditor';
4
7
  import Radio, { type RadioProps } from './Radio';
5
8
  import AvatarView from '../avatarView';
6
9
  import { Flag } from '@wise/art';
@@ -1,5 +1,8 @@
1
1
  import { Flag } from '@wise/art';
2
- import { createSandboxStory, globalScope } from '../../.storybook/components/sandbox/SandboxEditor';
2
+ import {
3
+ createSandboxStory,
4
+ globalScope,
5
+ } from '../../.storybook/components/sandbox/SandboxEditor';
3
6
  import RadioGroup, { RadioGroupProps, RadioGroupRadio } from './RadioGroup';
4
7
  import { Field } from '../field/Field';
5
8
  import { Meta, StoryObj } from '@storybook/react-webpack5';
@@ -1,7 +1,10 @@
1
1
  import { StoryFn, StoryObj } from '@storybook/react-webpack5';
2
2
  import React from 'react';
3
3
 
4
- import { createSandboxStory, globalScope } from '../../.storybook/components/sandbox/SandboxEditor';
4
+ import {
5
+ createSandboxStory,
6
+ globalScope,
7
+ } from '../../.storybook/components/sandbox/SandboxEditor';
5
8
  import Button from '../button';
6
9
 
7
10
  import SegmentedControl from './SegmentedControl';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Do not edit directly, this file was auto-generated.
3
- * Generated on Tue, 09 Jun 2026 08:11:04 GMT
3
+ * Generated on Wed, 27 May 2026 15:50:11 GMT
4
4
  */
5
5
 
6
6
 
@@ -39,7 +39,7 @@ export const Playground: Story = {
39
39
 
40
40
  export const Sandbox = createSandboxStory({
41
41
  code: `<StatusIcon sentiment="positive" size={48} />`,
42
- scope: { StatusIcon },
42
+ scope: { StatusIcon },
43
43
  });
44
44
 
45
45
  /**
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Do not edit directly, this file was auto-generated.
3
- * Generated on Tue, 09 Jun 2026 08:11:03 GMT
3
+ * Generated on Wed, 27 May 2026 15:50:09 GMT
4
4
  */
5
5
 
6
6
  :root {
@@ -144,7 +144,7 @@
144
144
 
145
145
  /**
146
146
  * Do not edit directly, this file was auto-generated.
147
- * Generated on Tue, 09 Jun 2026 08:11:04 GMT
147
+ * Generated on Wed, 27 May 2026 15:50:10 GMT
148
148
  */
149
149
 
150
150
  .np-theme-personal {
@@ -328,7 +328,7 @@
328
328
 
329
329
  /**
330
330
  * Do not edit directly, this file was auto-generated.
331
- * Generated on Tue, 09 Jun 2026 08:11:04 GMT
331
+ * Generated on Wed, 27 May 2026 15:50:10 GMT
332
332
  */
333
333
 
334
334
  .np-theme-personal--forest-green {
@@ -512,7 +512,7 @@
512
512
 
513
513
  /**
514
514
  * Do not edit directly, this file was auto-generated.
515
- * Generated on Tue, 09 Jun 2026 08:11:04 GMT
515
+ * Generated on Wed, 27 May 2026 15:50:10 GMT
516
516
  */
517
517
 
518
518
  .np-theme-personal--bright-green {
@@ -696,7 +696,7 @@
696
696
 
697
697
  /**
698
698
  * Do not edit directly, this file was auto-generated.
699
- * Generated on Tue, 09 Jun 2026 08:11:04 GMT
699
+ * Generated on Wed, 27 May 2026 15:50:10 GMT
700
700
  */
701
701
 
702
702
  .np-theme-personal--dark {
@@ -880,7 +880,7 @@
880
880
 
881
881
  /**
882
882
  * Do not edit directly, this file was auto-generated.
883
- * Generated on Tue, 09 Jun 2026 08:11:04 GMT
883
+ * Generated on Wed, 27 May 2026 15:50:10 GMT
884
884
  */
885
885
 
886
886
  .np-theme-platform {
@@ -1064,7 +1064,7 @@
1064
1064
 
1065
1065
  /**
1066
1066
  * Do not edit directly, this file was auto-generated.
1067
- * Generated on Tue, 09 Jun 2026 08:11:04 GMT
1067
+ * Generated on Wed, 27 May 2026 15:50:10 GMT
1068
1068
  */
1069
1069
 
1070
1070
  .np-theme-platform--forest-green {
@@ -1248,7 +1248,7 @@
1248
1248
 
1249
1249
  /**
1250
1250
  * Do not edit directly, this file was auto-generated.
1251
- * Generated on Tue, 09 Jun 2026 08:11:04 GMT
1251
+ * Generated on Wed, 27 May 2026 15:50:10 GMT
1252
1252
  */
1253
1253
 
1254
1254
  .np-theme-business {
@@ -1433,7 +1433,7 @@
1433
1433
 
1434
1434
  /**
1435
1435
  * Do not edit directly, this file was auto-generated.
1436
- * Generated on Tue, 09 Jun 2026 08:11:04 GMT
1436
+ * Generated on Wed, 27 May 2026 15:50:10 GMT
1437
1437
  */
1438
1438
 
1439
1439
  .np-theme-business--dark {
@@ -1618,7 +1618,7 @@
1618
1618
 
1619
1619
  /**
1620
1620
  * Do not edit directly, this file was auto-generated.
1621
- * Generated on Tue, 09 Jun 2026 08:11:04 GMT
1621
+ * Generated on Wed, 27 May 2026 15:50:10 GMT
1622
1622
  */
1623
1623
 
1624
1624
  .np-theme-business--forest-green {
@@ -1803,7 +1803,7 @@
1803
1803
 
1804
1804
  /**
1805
1805
  * Do not edit directly, this file was auto-generated.
1806
- * Generated on Tue, 09 Jun 2026 08:11:04 GMT
1806
+ * Generated on Wed, 27 May 2026 15:50:11 GMT
1807
1807
  */
1808
1808
 
1809
1809
  .np-theme-business--bright-green {
@@ -1,7 +1,10 @@
1
1
  import { StoryObj } from '@storybook/react-webpack5';
2
2
  import { userEvent, within } from 'storybook/test';
3
3
 
4
- import { createSandboxStory, globalScope } from '../../.storybook/components/sandbox/SandboxEditor';
4
+ import {
5
+ createSandboxStory,
6
+ globalScope,
7
+ } from '../../.storybook/components/sandbox/SandboxEditor';
5
8
  import TextareaWithDisplayFormat from './TextareaWithDisplayFormat';
6
9
  import { Field } from '../field/Field';
7
10
 
@@ -1,7 +1,10 @@
1
1
  import { Typography } from '../common/propsValues/typography';
2
2
 
3
3
  import Title from './Title';
4
- import { createSandboxStory, globalScope } from '../../.storybook/components/sandbox/SandboxEditor';
4
+ import {
5
+ createSandboxStory,
6
+ globalScope,
7
+ } from '../../.storybook/components/sandbox/SandboxEditor';
5
8
 
6
9
  export default {
7
10
  component: Title,
@@ -34,3 +37,4 @@ export const Basic = () => {
34
37
  </>
35
38
  );
36
39
  };
40
+
@@ -3,7 +3,10 @@ import { Search as SearchIcon } from '@transferwise/icons';
3
3
  import { userEvent, within, fn } from 'storybook/test';
4
4
  import { useState } from 'react';
5
5
 
6
- import { createSandboxStory, globalScope } from '../../.storybook/components/sandbox/SandboxEditor';
6
+ import {
7
+ createSandboxStory,
8
+ globalScope,
9
+ } from '../../.storybook/components/sandbox/SandboxEditor';
7
10
  import { Sentiment, Size } from '../common';
8
11
  import { Input } from '../inputs/Input';
9
12
  import { Field } from '../field/Field';
@@ -1,7 +1,10 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-webpack5';
2
2
  import { fn } from 'storybook/test';
3
3
 
4
- import { createSandboxStory, globalScope } from '../../.storybook/components/sandbox/SandboxEditor';
4
+ import {
5
+ createSandboxStory,
6
+ globalScope,
7
+ } from '../../.storybook/components/sandbox/SandboxEditor';
5
8
  import Upload from '.';
6
9
  import { MAX_SIZE_DEFAULT } from './Upload';
7
10
 
@@ -1,6 +1,9 @@
1
1
  import { StoryFn, Meta } from '@storybook/react-webpack5';
2
2
 
3
- import { createSandboxStory, globalScope } from '../../.storybook/components/sandbox/SandboxEditor';
3
+ import {
4
+ createSandboxStory,
5
+ globalScope,
6
+ } from '../../.storybook/components/sandbox/SandboxEditor';
4
7
  import { Field } from '../field/Field';
5
8
 
6
9
  import UploadInput, { UploadInputProps } from './UploadInput';