@transferwise/components 0.0.0-experimental-5ac3a46 → 0.0.0-experimental-215a547

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 (34) hide show
  1. package/build/index.js +56 -39
  2. package/build/index.js.map +1 -1
  3. package/build/index.mjs +57 -40
  4. package/build/index.mjs.map +1 -1
  5. package/build/main.css +108 -121
  6. package/build/styles/main.css +108 -121
  7. package/build/styles/uploadInput/UploadInput.css +27 -19
  8. package/build/styles/uploadInput/uploadButton/UploadButton.css +38 -24
  9. package/build/styles/uploadInput/uploadItem/UploadItem.css +46 -81
  10. package/build/types/uploadInput/UploadInput.d.ts.map +1 -1
  11. package/build/types/uploadInput/types.d.ts +1 -9
  12. package/build/types/uploadInput/types.d.ts.map +1 -1
  13. package/build/types/uploadInput/uploadButton/UploadButton.d.ts +5 -1
  14. package/build/types/uploadInput/uploadButton/UploadButton.d.ts.map +1 -1
  15. package/build/types/uploadInput/uploadItem/UploadItem.d.ts.map +1 -1
  16. package/package.json +18 -19
  17. package/src/chips/Chips.story.tsx +5 -3
  18. package/src/dateLookup/DateLookup.tests.story.tsx +4 -2
  19. package/src/main.css +108 -121
  20. package/src/moneyInput/MoneyInput.story.tsx +1 -3
  21. package/src/phoneNumberInput/PhoneNumberInput.story.tsx +1 -0
  22. package/src/uploadInput/UploadInput.css +27 -19
  23. package/src/uploadInput/UploadInput.less +23 -20
  24. package/src/uploadInput/UploadInput.story.tsx +27 -75
  25. package/src/uploadInput/UploadInput.tsx +4 -1
  26. package/src/uploadInput/types.ts +1 -11
  27. package/src/uploadInput/uploadButton/UploadButton.css +38 -24
  28. package/src/uploadInput/uploadButton/UploadButton.less +40 -27
  29. package/src/uploadInput/uploadButton/UploadButton.spec.tsx +1 -0
  30. package/src/uploadInput/uploadButton/UploadButton.tsx +37 -12
  31. package/src/uploadInput/uploadItem/UploadItem.css +46 -81
  32. package/src/uploadInput/uploadItem/UploadItem.less +40 -75
  33. package/src/uploadInput/uploadItem/UploadItem.tsx +25 -30
  34. package/src/uploadInput/uploadItem/UploadItemBody.tsx +1 -1
@@ -1,3 +1,4 @@
1
+ import { useTheme } from '@wise/components-theming';
1
2
  import classNames from 'classnames';
2
3
  import { useEffect, useRef, useState } from 'react';
3
4
  import { useIntl } from 'react-intl';
@@ -127,6 +128,7 @@ const UploadInput = ({
127
128
  sizeLimitErrorMessage,
128
129
  uploadButtonTitle,
129
130
  }: UploadInputProps) => {
131
+ const { isModern } = useTheme();
130
132
  const [markedFileForDelete, setMarkedFileForDelete] = useState<UploadedFile | null>(null);
131
133
  const [mounted, setMounted] = useState(false);
132
134
  const { formatMessage } = useIntl();
@@ -299,7 +301,7 @@ const UploadInput = ({
299
301
 
300
302
  return (
301
303
  <>
302
- <div className={classNames('np-upload-input', className, { disabled })}>
304
+ <div className={classNames('np-upload-input', className, { disabled: isModern && disabled })}>
303
305
  {uploadedFiles.map((file) => (
304
306
  <UploadItem
305
307
  key={file.id}
@@ -327,6 +329,7 @@ const UploadInput = ({
327
329
  sizeLimit={sizeLimit}
328
330
  description={description}
329
331
  maxFiles={maxFiles}
332
+ multipleFileInputWithFilesAdded={multiple && uploadedFiles.length > 0}
330
333
  onChange={addFiles}
331
334
  />
332
335
  )}
@@ -19,14 +19,9 @@ export type UploadResponse = {
19
19
  url?: string;
20
20
 
21
21
  /**
22
- * Optionally sets a translated error message when file was rejected
22
+ * Optionally set a translated error message when file was rejected
23
23
  */
24
24
  error?: UploadError;
25
-
26
- /**
27
- * Optionally sets translated error messages when a file gets rejected
28
- */
29
- errors?: UploadError[];
30
25
  [key: string]: any;
31
26
  };
32
27
 
@@ -51,11 +46,6 @@ export type UploadedFile = {
51
46
  */
52
47
  error?: UploadError;
53
48
 
54
- /**
55
- * Any API errors array. The messages should be localized.
56
- */
57
- errors?: UploadError[];
58
-
59
49
  /**
60
50
  * Optional. An external URL where the file can be opened from.
61
51
  */
@@ -1,35 +1,49 @@
1
- .np-upload-button-container {
2
- border-style: solid;
1
+ .np-upload-button {
2
+ width: 100%;
3
+ border: 0 !important;
4
+ padding: 12px 16px;
5
+ padding: var(--size-12) var(--size-16);
6
+ }
7
+ .np-upload-button.np-upload-accent {
8
+ color: #00a2dd;
9
+ color: var(--color-interactive-accent);
10
+ }
11
+ label.np-upload-button:not(.disabled):hover,
12
+ label.np-upload-button:not(.disabled):focus-visible,
13
+ label.np-upload-button:not(.disabled):active {
14
+ background-color: rgba(134,167,189,0.10196);
15
+ background-color: var(--color-background-neutral);
16
+ }
17
+ .np-theme-personal label.np-upload-button:not(.disabled):hover,
18
+ .np-theme-personal label.np-upload-button:not(.disabled):focus-visible,
19
+ .np-theme-personal label.np-upload-button:not(.disabled):active {
20
+ background-color: var(--color-background-screen-hover);
21
+ }
22
+ .np-theme-personal .disabled label.np-upload-button:not(.disabled):hover,
23
+ .np-theme-personal .disabled label.np-upload-button:not(.disabled):focus-visible,
24
+ .np-theme-personal .disabled label.np-upload-button:not(.disabled):active {
25
+ background-color: transparent;
26
+ }
27
+ .np-upload-button .np-upload-icon {
28
+ display: flex;
29
+ align-items: center;
30
+ }
31
+ .np-upload-button-container.droppable {
32
+ border: 0;
3
33
  }
4
34
  .np-upload-button-container .droppable-card-content {
5
35
  display: flex;
6
36
  }
7
- .np-upload-button-container.droppable-dropping {
8
- border-color: #c9cbce !important;
9
- border-color: var(--color-interactive-secondary) !important;
37
+ .np-theme-personal .np-upload-button-container .droppable-card-content {
38
+ border-radius: calc(10px - 1px);
39
+ border-radius: calc(var(--radius-small) - 1px);
10
40
  }
11
41
  .np-upload-button-container input[type="file"] {
12
42
  opacity: 0;
13
43
  z-index: -1;
14
44
  position: absolute;
15
45
  }
16
- .np-upload-button-container .np-upload-button {
17
- border: none;
18
- }
19
- .np-upload-button {
20
- width: 100%;
21
- padding: 16px;
22
- padding: var(--padding-small);
23
- border-radius: 0;
24
- }
25
- label.np-upload-button:not(.disabled):hover,
26
- label.np-upload-button:not(.disabled):active {
27
- background-color: var(--color-background-screen-hover);
28
- }
29
- .disabled label.np-upload-button:not(.disabled):hover,
30
- .disabled label.np-upload-button:not(.disabled):active {
31
- background-color: transparent;
32
- }
33
- .np-upload-button .media {
34
- align-items: flex-start;
46
+ .np-upload-button-container input[type="file"]:focus-visible + label {
47
+ background-color: rgba(134,167,189,0.10196);
48
+ background-color: var(--color-background-neutral);
35
49
  }
@@ -1,44 +1,57 @@
1
- .np-upload-button-container {
2
- border-style: solid;
3
-
4
- .droppable-card-content {
5
- display: flex;
6
- }
7
-
8
- &.droppable-dropping {
9
- border-color: var(--color-interactive-secondary) !important;
10
- }
11
-
12
- input[type="file"] {
13
- opacity: 0;
14
- z-index: -1;
15
- position: absolute;
16
- }
17
-
18
- .np-upload-button {
19
- border: none;
20
- }
21
- }
1
+ @import (reference) '../uploadItem/UploadItem.less';
22
2
 
23
3
  .np-upload-button {
24
4
  width: 100%;
25
- padding: var(--padding-small);
26
- border-radius: 0;
5
+ border: 0 !important; // Remove from btn
6
+ padding: var(--size-12) var(--size-16);
7
+
8
+ &.np-upload-accent {
9
+ color: var(--color-interactive-accent);
10
+ }
27
11
 
28
12
  label& {
29
13
  &:not(.disabled) {
30
14
  &:hover,
15
+ &:focus-visible,
31
16
  &:active {
32
- background-color: var(--color-background-screen-hover);
17
+ background-color: var(--color-background-neutral);
18
+
19
+ .np-theme-personal & {
20
+ background-color: var(--color-background-screen-hover);
21
+ }
33
22
 
34
- .disabled & {
23
+ .np-theme-personal .disabled & {
35
24
  background-color: transparent;
36
25
  }
37
26
  }
38
27
  }
39
28
  }
40
29
 
41
- .media {
42
- align-items: flex-start;
30
+ .np-upload-icon {
31
+ display: flex;
32
+ align-items: center;
33
+ }
34
+ }
35
+
36
+ .np-upload-button-container {
37
+ &.droppable {
38
+ border: 0;
39
+ }
40
+
41
+ .droppable-card-content {
42
+ display: flex;
43
+ .np-theme-personal & {
44
+ border-radius: @small-border-minus-one;
45
+ }
46
+ }
47
+
48
+ input[type="file"] {
49
+ opacity: 0;
50
+ z-index: -1;
51
+ position: absolute;
52
+
53
+ &:focus-visible + label {
54
+ background-color: var(--color-background-neutral); // Tab focus style
55
+ }
43
56
  }
44
57
  }
@@ -9,6 +9,7 @@ describe('UploadButton', () => {
9
9
 
10
10
  const props: UploadButtonProps = {
11
11
  onChange: jest.fn(),
12
+ multipleFileInputWithFilesAdded: true,
12
13
  };
13
14
 
14
15
  const renderComponent = (customProps = props) => render(<UploadButton {...customProps} />);
@@ -1,10 +1,12 @@
1
1
  import { PlusCircle as PlusIcon, Upload as UploadIcon } from '@transferwise/icons';
2
+ import { useTheme } from '@wise/components-theming';
2
3
  import classNames from 'classnames';
3
4
  import { ChangeEvent, DragEvent, useRef, useState } from 'react';
4
5
  import { useIntl } from 'react-intl';
5
6
 
6
7
  import Body from '../../body';
7
8
  import { FileType, Typography } from '../../common';
9
+ import { useDirection } from '../../common/hooks';
8
10
 
9
11
  import MESSAGES from './UploadButton.messages';
10
12
  import { DEFAULT_SIZE_LIMIT, imageFileTypes } from './defaults';
@@ -58,6 +60,11 @@ export type UploadButtonProps = {
58
60
  * Title for the upload button
59
61
  */
60
62
  uploadButtonTitle?: string;
63
+
64
+ /**
65
+ * Are there any uploaded items on a multiple-file upload? Used for calculating border radiuses
66
+ */
67
+ multipleFileInputWithFilesAdded: boolean;
61
68
  };
62
69
 
63
70
  export enum TEST_IDS {
@@ -80,7 +87,10 @@ const UploadButton = ({
80
87
  onChange,
81
88
  id = DEFAULT_FILE_INPUT_ID,
82
89
  uploadButtonTitle,
90
+ multipleFileInputWithFilesAdded,
83
91
  }: UploadButtonProps) => {
92
+ const { isModern } = useTheme();
93
+ const { isRTL } = useDirection();
84
94
  const { formatMessage } = useIntl();
85
95
  const inputReference = useRef<HTMLInputElement>(null);
86
96
 
@@ -157,7 +167,7 @@ const UploadButton = ({
157
167
  const areAllFilesAllowed = getFileTypesDescription() === '*';
158
168
 
159
169
  if (areAllFilesAllowed) {
160
- return {}; // file input by default allows all files
170
+ return {}; //file input by default allows all files
161
171
  }
162
172
 
163
173
  if (Array.isArray(fileTypes)) {
@@ -169,15 +179,23 @@ const UploadButton = ({
169
179
 
170
180
  function renderDescription() {
171
181
  return (
172
- <Body className={classNames({ 'text-primary': !disabled })}>
173
- {getDescription()}
174
- {maxFiles && (
175
- <>
176
- <br />
177
- {`Maximum ${maxFiles} files.`}
178
- </>
179
- )}
180
- </Body>
182
+ <>
183
+ <Body
184
+ className={classNames({
185
+ 'text-primary': !disabled,
186
+ small: !isModern,
187
+ 'font-weight-normal': !isModern,
188
+ })}
189
+ >
190
+ {getDescription()}
191
+ {maxFiles && (
192
+ <>
193
+ <br />
194
+ {`Maximum ${maxFiles} files.`}
195
+ </>
196
+ )}
197
+ </Body>
198
+ </>
181
199
  );
182
200
  }
183
201
 
@@ -208,9 +226,15 @@ const UploadButton = ({
208
226
  onChange={filesSelected}
209
227
  />
210
228
  {/* eslint-disable-next-line jsx-a11y/label-has-associated-control */}
211
- <label htmlFor={id} className={classNames('btn', 'np-upload-button')}>
229
+ <label
230
+ htmlFor={id}
231
+ className={classNames('btn', 'np-upload-accent', 'np-upload-button', {
232
+ disabled,
233
+ 'np-upload-input--square-top': multipleFileInputWithFilesAdded,
234
+ })}
235
+ >
212
236
  <div className="media">
213
- <div className="np-upload-icon media-middle media-left">
237
+ <div className="np-upload-icon media-left">
214
238
  <UploadIcon size={24} className="text-link" />
215
239
  </div>
216
240
  <div className="media-body text-xs-left" data-testid={TEST_IDS.mediaBody}>
@@ -229,6 +253,7 @@ const UploadButton = ({
229
253
  'droppable-card',
230
254
  'droppable-dropping-card',
231
255
  'droppable-card-content',
256
+ { 'np-upload-input--square-top': multipleFileInputWithFilesAdded },
232
257
  )}
233
258
  >
234
259
  <PlusIcon className="m-x-1" size={24} />
@@ -1,109 +1,74 @@
1
- .np-upload-item {
2
- border: 1px solid #c9cbce;
3
- border: 1px solid var(--color-interactive-secondary);
4
- }
5
- .np-upload-item:first-child ~ div:before {
1
+ .np-upload-item:not(:last-child)::after {
6
2
  display: block;
7
3
  position: relative;
8
- height: 1px;
9
- background-color: rgba(0,0,0,0.10196);
10
- background-color: var(--color-border-neutral);
4
+ border-bottom: 1px solid rgba(0,0,0,0.10196);
5
+ border-bottom: 1px solid var(--color-border-neutral);
11
6
  content: " ";
12
7
  margin: 0 16px;
13
8
  margin: 0 var(--size-16);
14
9
  }
15
- .np-upload-item:first-child ~ div {
16
- border-top: 0;
17
- }
18
- .np-upload-item:not(:last-child) {
19
- border-bottom: 0;
20
- }
21
- .np-upload-item.np-upload-item__link:hover:before,
22
- .np-upload-button-container:hover:before {
23
- margin: 0 !important;
24
- }
25
- .np-upload-item.np-upload-item__link:hover + div:before,
26
- .np-upload-button-container:hover + div:before {
27
- margin: 0 !important;
28
- }
29
- .np-upload-button-container:has(:focus-visible) {
30
- outline: var(--ring-outline-color) solid var(--ring-outline-width);
31
- outline-offset: var(--ring-outline-offset);
32
- border-color: transparent;
33
- outline-offset: -3px;
10
+ .np-theme-personal .np-upload-item:first-child a:hover,
11
+ .np-theme-personal .np-upload-item:first-child a:focus-visible,
12
+ .np-theme-personal .np-upload-item:first-child a:active {
13
+ border-top-left-radius: calc(10px - 1px);
14
+ border-top-left-radius: calc(var(--radius-small) - 1px);
34
15
  }
35
- .np-upload-item--single-file:focus-visible,
36
- .np-upload-item--link:focus-visible,
37
- .np-upload-button-container:has(:focus-visible) {
38
- outline-width: 3px;
16
+ .np-theme-personal .np-upload-item:first-child a:hover ~ .np-upload-item__remove-button,
17
+ .np-theme-personal .np-upload-item:first-child a:focus-visible ~ .np-upload-item__remove-button,
18
+ .np-theme-personal .np-upload-item:first-child a:active ~ .np-upload-item__remove-button {
19
+ border-top-right-radius: calc(10px - 1px);
20
+ border-top-right-radius: calc(var(--radius-small) - 1px);
39
21
  }
40
22
  .np-upload-item__link a {
41
23
  flex: 1;
42
24
  -webkit-text-decoration: none;
43
25
  text-decoration: none;
44
- border-radius: inherit;
26
+ outline: none;
27
+ border-top-right-radius: 0;
28
+ border-bottom-right-radius: 0;
45
29
  }
46
- .np-upload-item__link a:focus-visible {
47
- outline-offset: -2px;
30
+ .np-theme-personal .np-upload-item__link a {
31
+ border-radius: 0;
32
+ border-radius: initial;
33
+ }
34
+ .np-upload-item__link a.np-upload-item--single-file {
35
+ border-bottom-left-radius: calc(10px - 1px);
36
+ border-bottom-left-radius: calc(var(--radius-small) - 1px);
48
37
  }
49
38
  .np-upload-item__link a:hover,
39
+ .np-upload-item__link a:focus-visible,
50
40
  .np-upload-item__link a:active {
51
41
  -webkit-text-decoration: none;
52
42
  text-decoration: none;
53
43
  background-color: rgba(134,167,189,0.10196);
54
44
  background-color: var(--color-background-neutral);
55
45
  }
46
+ .np-upload-item__link a:hover ~ .np-upload-item__remove-button,
47
+ .np-upload-item__link a:focus-visible ~ .np-upload-item__remove-button,
48
+ .np-upload-item__link a:active ~ .np-upload-item__remove-button {
49
+ background-color: rgba(134,167,189,0.10196);
50
+ background-color: var(--color-background-neutral);
51
+ }
52
+ .np-upload-item__link .np-upload-item__remove-button.np-upload-item--single-file {
53
+ border-bottom-right-radius: calc(10px - 1px);
54
+ border-bottom-right-radius: calc(var(--radius-small) - 1px);
55
+ }
56
56
  .np-upload-item__body {
57
57
  display: flex;
58
58
  align-items: center;
59
59
  justify-content: space-between;
60
- position: relative;
61
- border-radius: inherit;
62
60
  }
63
61
  .np-upload-item__remove-button {
64
- display: flex;
65
- align-items: center;
66
- justify-content: center;
67
- align-self: flex-start;
68
- position: absolute;
69
- height: 24px;
70
- height: var(--size-24);
71
- min-height: 0;
72
- width: 24px;
73
- width: var(--size-24);
74
- padding: 0;
75
- border-radius: 50% !important;
76
- outline-offset: 0 !important;
77
- background-color: rgba(134,167,189,0.10196);
78
- background-color: var(--color-background-neutral);
79
- color: var(--color-interactive-primary);
80
- right: 16px;
81
- right: var(--size-16);
82
- top: 16px;
83
- top: var(--size-16);
84
- transition: color, background-color 0.15s ease-in-out;
85
- }
86
- @media (max-width: 320px) {
87
- .np-upload-item__remove-button {
88
- top: 16px;
89
- top: var(--size-16);
90
- right: 16px;
91
- right: var(--size-16);
92
- height: 48px;
93
- height: var(--size-48);
94
- width: 48px;
95
- width: var(--size-48);
96
- }
97
- }
98
- .np-upload-item__remove-button:hover {
99
- background-color: var(--color-sentiment-negative);
100
- color: var(--color-contrast-overlay) !important;
101
- }
102
- .np-upload-item__remove-button:before {
103
- display: block;
104
- width: 44px;
105
- height: 44px;
106
- content: '';
107
- border-radius: 50%;
108
- position: absolute;
62
+ flex-shrink: 0;
63
+ align-self: stretch;
64
+ padding: 12px 16px;
65
+ padding: var(--size-12) var(--size-16);
66
+ color: #c9cbce;
67
+ color: var(--color-interactive-secondary);
68
+ background: transparent;
69
+ }
70
+ .np-upload-item__remove-button:hover,
71
+ .np-upload-item__remove-button:focus {
72
+ color: #d03238 !important;
73
+ color: var(--color-interactive-negative-hover) !important;
109
74
  }
@@ -1,112 +1,77 @@
1
- @import (reference) "../../../node_modules/@transferwise/neptune-css/src/less/ring.less";
1
+ @small-border-minus-one: calc(var(--radius-small) - 1px);
2
2
 
3
3
  .np-upload-item {
4
- border: 1px solid var(--color-interactive-secondary);
5
-
6
- &:first-child ~ div:before {
4
+ &:not(:last-child)::after {
7
5
  display: block;
8
6
  position: relative;
9
- height: 1px;
10
- background-color: var(--color-border-neutral);
7
+ border-bottom: 1px solid var(--color-border-neutral);
11
8
  content: " ";
12
9
  margin: 0 var(--size-16);
13
10
  }
14
-
15
11
  &:first-child {
16
- & ~ div {
17
- border-top: 0;
18
- }
19
- }
12
+ .np-theme-personal & {
13
+ a {
14
+ &:hover,
15
+ &:focus-visible,
16
+ &:active {
17
+ border-top-left-radius: @small-border-minus-one;
20
18
 
21
- &:not(:last-child) {
22
- border-bottom: 0;
19
+ ~ .np-upload-item__remove-button {
20
+ border-top-right-radius: @small-border-minus-one;
21
+ }
22
+ }
23
+ }
23
24
  }
24
- }
25
-
26
- .np-upload-item.np-upload-item__link:hover,
27
- .np-upload-button-container:hover {
28
- &:before {
29
- margin: 0 !important;
30
25
  }
31
- & + div:before {
32
- margin: 0 !important;
33
- }
34
- }
35
-
36
- .np-upload-button-container:has(:focus-visible) {
37
- .ring();
38
- border-color: transparent;
39
- outline-offset: -3px;
40
- }
41
-
42
- .np-upload-item--single-file:focus-visible,
43
- .np-upload-item--link:focus-visible,
44
- .np-upload-button-container:has(:focus-visible) {
45
- outline-width: 3px;
46
26
  }
47
27
 
48
28
  .np-upload-item__link {
49
29
  a {
30
+ .np-theme-personal & {
31
+ border-radius: unset;
32
+ }
50
33
  flex: 1;
51
34
  text-decoration: none;
52
- border-radius: inherit;
53
- &:focus-visible {
54
- outline-offset: -2px;
35
+ outline: none;
36
+ border-top-right-radius: 0;
37
+ border-bottom-right-radius: 0;
38
+
39
+ &.np-upload-item--single-file {
40
+ border-bottom-left-radius: @small-border-minus-one;
55
41
  }
56
42
 
57
43
  &:hover,
44
+ &:focus-visible,
58
45
  &:active {
59
46
  text-decoration: none;
60
47
  background-color: var(--color-background-neutral);
48
+
49
+ ~ .np-upload-item__remove-button {
50
+ background-color: var(--color-background-neutral);
51
+ }
61
52
  }
62
53
  }
54
+
55
+ .np-upload-item__remove-button.np-upload-item--single-file {
56
+ border-bottom-right-radius: @small-border-minus-one;
57
+ }
63
58
  }
64
59
 
65
60
  .np-upload-item__body {
66
61
  display: flex;
67
62
  align-items: center;
68
63
  justify-content: space-between;
69
- // We should have the `relative` position for the body, because we have `absolute` position for `np-upload-item__remove-button` to achieve appropriate `hover` effects
70
- position: relative;
71
- border-radius: inherit;
72
64
  }
73
65
 
74
66
  .np-upload-item__remove-button {
75
- display: flex;
76
- align-items: center;
77
- justify-content: center;
78
- align-self: flex-start;
79
- position: absolute;
80
- height: var(--size-24);
81
- min-height: 0;
82
- width: var(--size-24);
83
- padding: 0;
84
- border-radius: 50% !important;
85
- outline-offset: 0 !important;
86
- background-color: var(--color-background-neutral);
87
- color: var(--color-interactive-primary);
88
- right: var(--size-16);
89
- top: var(--size-16);
90
- transition: color, background-color 0.15s ease-in-out;
67
+ flex-shrink: 0;
68
+ align-self: stretch;
69
+ padding: var(--size-12) var(--size-16);
70
+ color: var(--color-interactive-secondary);
71
+ background: transparent;
91
72
 
92
- @media (--screen-400-zoom) {
93
- top: var(--size-16);
94
- right: var(--size-16);
95
- height: var(--size-48);
96
- width: var(--size-48);
97
- }
98
-
99
- &:hover {
100
- background-color: var(--color-sentiment-negative);
101
- color: var(--color-contrast-overlay) !important;
102
- }
103
-
104
- &:before {
105
- display: block;
106
- width: 44px;
107
- height: 44px;
108
- content: '';
109
- border-radius: 50%;
110
- position: absolute;
73
+ &:hover,
74
+ &:focus {
75
+ color: var(--color-interactive-negative-hover) !important; // Override btn:hover color
111
76
  }
112
77
  }