@transferwise/components 0.0.0-experimental-c81666a → 0.0.0-experimental-bb07bc5
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.
- package/build/i18n/ja.json +1 -1
- package/build/i18n/ja.json.js +1 -1
- package/build/i18n/ja.json.mjs +1 -1
- package/build/image/Image.js +10 -9
- package/build/image/Image.js.map +1 -1
- package/build/image/Image.mjs +11 -11
- package/build/image/Image.mjs.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/index.mjs +1 -1
- package/build/main.css +212 -0
- package/build/styles/listItem/ListItem.css +212 -0
- package/build/styles/main.css +212 -0
- package/build/test-utils/assets/apple-pay-logo.svg +84 -0
- package/build/types/image/Image.d.ts +1 -0
- package/build/types/image/Image.d.ts.map +1 -1
- package/build/types/index.d.ts +2 -0
- package/build/types/index.d.ts.map +1 -1
- package/build/types/listItem/ListItem.d.ts +50 -0
- package/build/types/listItem/ListItem.d.ts.map +1 -0
- package/build/types/listItem/ListItemAdditionalInfo.d.ts +9 -0
- package/build/types/listItem/ListItemAdditionalInfo.d.ts.map +1 -0
- package/build/types/listItem/ListItemButton.d.ts +6 -0
- package/build/types/listItem/ListItemButton.d.ts.map +1 -0
- package/build/types/listItem/ListItemCheckbox.d.ts +4 -0
- package/build/types/listItem/ListItemCheckbox.d.ts.map +1 -0
- package/build/types/listItem/ListItemIconButton.d.ts +8 -0
- package/build/types/listItem/ListItemIconButton.d.ts.map +1 -0
- package/build/types/listItem/ListItemMedia.d.ts +19 -0
- package/build/types/listItem/ListItemMedia.d.ts.map +1 -0
- package/build/types/listItem/ListItemNavigation.d.ts +4 -0
- package/build/types/listItem/ListItemNavigation.d.ts.map +1 -0
- package/build/types/listItem/ListItemSwitch.d.ts +3 -0
- package/build/types/listItem/ListItemSwitch.d.ts.map +1 -0
- package/build/types/listItem/index.d.ts +6 -0
- package/build/types/listItem/index.d.ts.map +1 -0
- package/build/types/listItem/prompt/Prompt.d.ts +12 -0
- package/build/types/listItem/prompt/Prompt.d.ts.map +1 -0
- package/build/types/listItem/useItemControl.d.ts +5 -0
- package/build/types/listItem/useItemControl.d.ts.map +1 -0
- package/build/types/test-utils/fake-data.d.ts +2 -0
- package/build/types/test-utils/fake-data.d.ts.map +1 -1
- package/build/types/uploadInput/UploadInput.d.ts.map +1 -1
- package/build/uploadInput/UploadInput.js +0 -1
- package/build/uploadInput/UploadInput.js.map +1 -1
- package/build/uploadInput/UploadInput.mjs +0 -1
- package/build/uploadInput/UploadInput.mjs.map +1 -1
- package/package.json +3 -3
- package/src/i18n/ja.json +1 -1
- package/src/image/Image.spec.tsx +3 -3
- package/src/image/Image.tsx +12 -10
- package/src/index.ts +2 -0
- package/src/legacylistItem/LegacyListItem.story.tsx +5 -5
- package/src/legacylistItem/LegacyListItem.tests.story.tsx +6 -6
- package/src/listItem/ListItem.css +212 -0
- package/src/listItem/ListItem.less +210 -0
- package/src/listItem/ListItem.spec.tsx +35 -0
- package/src/listItem/ListItem.story.tsx +461 -0
- package/src/listItem/ListItem.tsx +282 -0
- package/src/listItem/ListItemAdditionalInfo.tsx +31 -0
- package/src/listItem/ListItemButton.spec.tsx +92 -0
- package/src/listItem/ListItemButton.tsx +24 -0
- package/src/listItem/ListItemCheckbox.tsx +14 -0
- package/src/listItem/ListItemIconButton.tsx +16 -0
- package/src/listItem/ListItemMedia.tsx +52 -0
- package/src/listItem/ListItemNavigation.tsx +23 -0
- package/src/listItem/ListItemSwitch.tsx +8 -0
- package/src/listItem/index.ts +10 -0
- package/src/listItem/prompt/Prompt.spec.tsx +77 -0
- package/src/listItem/prompt/Prompt.story.tsx +170 -0
- package/src/listItem/prompt/Prompt.tsx +44 -0
- package/src/listItem/useItemControl.tsx +23 -0
- package/src/main.css +212 -0
- package/src/main.less +1 -0
- package/src/promoCard/__snapshots__/PromoCard.spec.tsx.snap +0 -1
- package/src/promoCard/__snapshots__/PromoCardGroup.spec.tsx.snap +0 -2
- package/src/test-utils/assets/apple-pay-logo.svg +84 -0
- package/src/test-utils/fake-data.ts +5 -0
- package/src/uploadInput/UploadInput.tsx +4 -13
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import Link from '../../link';
|
|
2
|
+
import { Sentiment } from '../../common';
|
|
3
|
+
import { Prompt, ListItemPromptProps } from './Prompt';
|
|
4
|
+
import { lorem40 } from '../../test-utils';
|
|
5
|
+
import { StoryObj } from '@storybook/react';
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
component: Prompt,
|
|
9
|
+
title: 'Content/ListItem/Prompt',
|
|
10
|
+
args: {
|
|
11
|
+
type: Sentiment.NEGATIVE,
|
|
12
|
+
children: 'You have done a terrible thing',
|
|
13
|
+
},
|
|
14
|
+
argTypes: {
|
|
15
|
+
type: {
|
|
16
|
+
options: [
|
|
17
|
+
Sentiment.POSITIVE,
|
|
18
|
+
Sentiment.NEGATIVE,
|
|
19
|
+
Sentiment.NEUTRAL,
|
|
20
|
+
Sentiment.WARNING,
|
|
21
|
+
'discount',
|
|
22
|
+
'savings',
|
|
23
|
+
],
|
|
24
|
+
control: { type: 'radio' },
|
|
25
|
+
description: 'The type of prompt to display',
|
|
26
|
+
},
|
|
27
|
+
action: {
|
|
28
|
+
table: {
|
|
29
|
+
disable: true,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
children: {
|
|
33
|
+
type: {
|
|
34
|
+
name: 'string',
|
|
35
|
+
required: true,
|
|
36
|
+
description: 'The content of the prompt',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
type CustomStory = StoryObj<
|
|
43
|
+
ListItemPromptProps & {
|
|
44
|
+
interactivity?: 'none' | 'full-anchor' | 'full-button' | 'link';
|
|
45
|
+
}
|
|
46
|
+
>;
|
|
47
|
+
|
|
48
|
+
export const Basic: CustomStory = {
|
|
49
|
+
args: {
|
|
50
|
+
interactivity: 'none',
|
|
51
|
+
},
|
|
52
|
+
argTypes: {
|
|
53
|
+
interactivity: {
|
|
54
|
+
options: ['none', 'full-button', 'full-anchor', 'link'],
|
|
55
|
+
control: { type: 'radio' },
|
|
56
|
+
description: 'The type of interactivity to display',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
render: ({ interactivity, ...args }) => {
|
|
60
|
+
return (
|
|
61
|
+
<div>
|
|
62
|
+
<Prompt
|
|
63
|
+
type={args.type}
|
|
64
|
+
action={
|
|
65
|
+
interactivity === 'full-anchor'
|
|
66
|
+
? { href: 'wise.com' }
|
|
67
|
+
: interactivity === 'full-button'
|
|
68
|
+
? {
|
|
69
|
+
onClick: () => {
|
|
70
|
+
console.log('clicked');
|
|
71
|
+
},
|
|
72
|
+
}
|
|
73
|
+
: undefined
|
|
74
|
+
}
|
|
75
|
+
>
|
|
76
|
+
{args.children} {interactivity === 'link' && <Link href="www.wise.com">with a link</Link>}
|
|
77
|
+
</Prompt>
|
|
78
|
+
</div>
|
|
79
|
+
);
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export const Variants = () => {
|
|
84
|
+
return (
|
|
85
|
+
<>
|
|
86
|
+
<div className="m-b-2">
|
|
87
|
+
<Prompt type={Sentiment.POSITIVE}>
|
|
88
|
+
Positive prompt <Link href="www.wise.com">with a link to amazing content</Link>
|
|
89
|
+
</Prompt>
|
|
90
|
+
</div>
|
|
91
|
+
<div className="m-b-2">
|
|
92
|
+
<Prompt type={Sentiment.NEGATIVE}>
|
|
93
|
+
Negative prompt <Link href="www.wise.com">with a link to amazing content</Link>
|
|
94
|
+
</Prompt>
|
|
95
|
+
</div>
|
|
96
|
+
<div className="m-b-2">
|
|
97
|
+
<Prompt type={Sentiment.NEUTRAL}>
|
|
98
|
+
Neutral prompt <Link href="www.wise.com">with a link to amazing content</Link>
|
|
99
|
+
</Prompt>
|
|
100
|
+
</div>
|
|
101
|
+
<div className="m-b-2">
|
|
102
|
+
<Prompt type={Sentiment.WARNING}>
|
|
103
|
+
Warning prompt <Link href="www.wise.com">with a link to amazing content</Link>
|
|
104
|
+
</Prompt>
|
|
105
|
+
</div>
|
|
106
|
+
<div className="m-b-2">
|
|
107
|
+
<Prompt type="discount">
|
|
108
|
+
Discount prompt <Link href="www.wise.com">with a link to amazing content</Link>
|
|
109
|
+
</Prompt>
|
|
110
|
+
</div>
|
|
111
|
+
<div className="m-b-2">
|
|
112
|
+
<Prompt type="savings">
|
|
113
|
+
Savings prompt <Link href="www.wise.com">with a link to amazing content</Link>
|
|
114
|
+
</Prompt>
|
|
115
|
+
</div>
|
|
116
|
+
<div className="m-b-2">
|
|
117
|
+
<Prompt
|
|
118
|
+
type="discount"
|
|
119
|
+
action={{
|
|
120
|
+
href: 'www.wise.com',
|
|
121
|
+
target: '_self',
|
|
122
|
+
'aria-label': 'hidden anchor tags are accessible, right?',
|
|
123
|
+
}}
|
|
124
|
+
>
|
|
125
|
+
The whole prompt is secretly clickable
|
|
126
|
+
</Prompt>
|
|
127
|
+
</div>
|
|
128
|
+
<div className="m-b-2">
|
|
129
|
+
<Prompt
|
|
130
|
+
type="negative"
|
|
131
|
+
action={{
|
|
132
|
+
href: 'www.wise.com',
|
|
133
|
+
target: '_self',
|
|
134
|
+
'aria-label': 'clickable <a>',
|
|
135
|
+
}}
|
|
136
|
+
>
|
|
137
|
+
The whole prompt is secretly clickable as an anchor tag
|
|
138
|
+
</Prompt>
|
|
139
|
+
</div>
|
|
140
|
+
<div className="m-b-2">
|
|
141
|
+
<Prompt
|
|
142
|
+
type="warning"
|
|
143
|
+
action={{
|
|
144
|
+
onClick: () => {
|
|
145
|
+
console.log('clicked');
|
|
146
|
+
},
|
|
147
|
+
'aria-label': 'clickable button',
|
|
148
|
+
}}
|
|
149
|
+
>
|
|
150
|
+
The whole prompt is secretly clickable as a button
|
|
151
|
+
</Prompt>
|
|
152
|
+
</div>
|
|
153
|
+
<div className="m-b-2">
|
|
154
|
+
<Prompt
|
|
155
|
+
type="neutral"
|
|
156
|
+
action={{
|
|
157
|
+
href: 'www.wise.com',
|
|
158
|
+
target: '_self',
|
|
159
|
+
'aria-label': 'clickable prompt',
|
|
160
|
+
}}
|
|
161
|
+
>
|
|
162
|
+
The whole prompt is secretly clickable
|
|
163
|
+
</Prompt>
|
|
164
|
+
</div>
|
|
165
|
+
<div className="m-b-2" style={{ maxWidth: '300px' }}>
|
|
166
|
+
<Prompt type="warning">The prompt has very long text that wraps {lorem40}</Prompt>
|
|
167
|
+
</div>
|
|
168
|
+
</>
|
|
169
|
+
);
|
|
170
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Confetti, Tags } from '@transferwise/icons';
|
|
2
|
+
import { Sentiment } from '../../common';
|
|
3
|
+
import StatusIcon from '../../statusIcon';
|
|
4
|
+
import { clsx } from 'clsx';
|
|
5
|
+
import { LinkProps } from '../../link';
|
|
6
|
+
import Body from '../../body';
|
|
7
|
+
|
|
8
|
+
export type ListItemPromptProps = {
|
|
9
|
+
type:
|
|
10
|
+
| `${Sentiment.POSITIVE | Sentiment.NEGATIVE | Sentiment.NEUTRAL | Sentiment.WARNING}`
|
|
11
|
+
| 'discount'
|
|
12
|
+
| 'savings';
|
|
13
|
+
children: React.ReactNode;
|
|
14
|
+
action?: Pick<LinkProps, 'href' | 'target' | 'onClick'> & { 'aria-label'?: string };
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const Prompt = ({ type, children, action }: ListItemPromptProps) => {
|
|
18
|
+
const Wrapper = action?.href ? 'a' : action?.onClick ? 'button' : 'span';
|
|
19
|
+
|
|
20
|
+
const icon =
|
|
21
|
+
type === 'discount' ? (
|
|
22
|
+
<Tags size={16} />
|
|
23
|
+
) : type === 'savings' ? (
|
|
24
|
+
<Confetti size={16} />
|
|
25
|
+
) : (
|
|
26
|
+
<StatusIcon size={16} sentiment={type} />
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<Wrapper
|
|
31
|
+
className={clsx(
|
|
32
|
+
'wds-list-item-prompt',
|
|
33
|
+
type,
|
|
34
|
+
(action?.href || action?.onClick) && 'np-prompt-interactive',
|
|
35
|
+
)}
|
|
36
|
+
{...(action ?? {})}
|
|
37
|
+
>
|
|
38
|
+
<div className="np-prompt-icon">{icon}</div>
|
|
39
|
+
<Body>{children}</Body>
|
|
40
|
+
</Wrapper>
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export default Prompt;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useContext, useEffect } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
ListItemContext,
|
|
4
|
+
ListItemContextData,
|
|
5
|
+
ListItemControlProps,
|
|
6
|
+
ListItemTypes,
|
|
7
|
+
} from './ListItem';
|
|
8
|
+
|
|
9
|
+
export function useItemControl(controlType: ListItemTypes, controlProps?: ListItemControlProps) {
|
|
10
|
+
const {
|
|
11
|
+
setControlType,
|
|
12
|
+
setControlProps,
|
|
13
|
+
props: baseItemProps,
|
|
14
|
+
} = useContext<ListItemContextData>(ListItemContext);
|
|
15
|
+
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
setControlType(controlType);
|
|
18
|
+
// @ts-expect-error TODO: fix the type error later
|
|
19
|
+
setControlProps(controlProps);
|
|
20
|
+
}, [controlType, controlProps, setControlType, setControlProps]);
|
|
21
|
+
|
|
22
|
+
return { baseItemProps };
|
|
23
|
+
}
|
package/src/main.css
CHANGED
|
@@ -2662,6 +2662,218 @@ html:not([dir="rtl"]) .np-flow-navigation--sm .np-flow-navigation__stepper {
|
|
|
2662
2662
|
border-radius: 9999px !important;
|
|
2663
2663
|
border-radius: var(--radius-full) !important;
|
|
2664
2664
|
}
|
|
2665
|
+
.wds-list-item {
|
|
2666
|
+
list-style: none;
|
|
2667
|
+
width: 100%;
|
|
2668
|
+
padding: 0;
|
|
2669
|
+
border-radius: 16px;
|
|
2670
|
+
border-radius: var(--radius-medium);
|
|
2671
|
+
background-color: #ffffff;
|
|
2672
|
+
background-color: var(--color-background-screen);
|
|
2673
|
+
gap: 16px;
|
|
2674
|
+
gap: var(--size-16);
|
|
2675
|
+
}
|
|
2676
|
+
.wds-list-item .partially-interactive {
|
|
2677
|
+
padding: 16px;
|
|
2678
|
+
padding: var(--size-16);
|
|
2679
|
+
}
|
|
2680
|
+
.wds-list-item label,
|
|
2681
|
+
.wds-list-item a {
|
|
2682
|
+
padding: 16px;
|
|
2683
|
+
padding: var(--size-16);
|
|
2684
|
+
}
|
|
2685
|
+
.wds-list-item-interactive label {
|
|
2686
|
+
cursor: pointer;
|
|
2687
|
+
}
|
|
2688
|
+
.wds-list-item-interactive:hover {
|
|
2689
|
+
background-color: var(--color-background-screen-hover);
|
|
2690
|
+
}
|
|
2691
|
+
.wds-list-item-interactive:hover .wds-list-item-control .wds-Button {
|
|
2692
|
+
background-color: var(--Button-background-hover);
|
|
2693
|
+
color: var(--Button-color-hover);
|
|
2694
|
+
transition: none;
|
|
2695
|
+
}
|
|
2696
|
+
.wds-list-item-interactive:active {
|
|
2697
|
+
background-color: var(--color-background-screen-active);
|
|
2698
|
+
}
|
|
2699
|
+
.wds-list-item-interactive .wds-list-item-control .wds-Button {
|
|
2700
|
+
transition: none;
|
|
2701
|
+
}
|
|
2702
|
+
.wds-list-item-media-image {
|
|
2703
|
+
width: var(--item-media-image-size);
|
|
2704
|
+
height: var(--item-media-image-size);
|
|
2705
|
+
}
|
|
2706
|
+
.wds-list-item-body {
|
|
2707
|
+
width: 100%;
|
|
2708
|
+
}
|
|
2709
|
+
.wds-list-item-title {
|
|
2710
|
+
color: #37517e;
|
|
2711
|
+
color: var(--color-content-primary);
|
|
2712
|
+
}
|
|
2713
|
+
.wds-list-item-additional-info {
|
|
2714
|
+
color: #768e9c;
|
|
2715
|
+
color: var(--color-content-tertiary);
|
|
2716
|
+
}
|
|
2717
|
+
.wds-list-item-value {
|
|
2718
|
+
flex: 0 0 auto;
|
|
2719
|
+
}
|
|
2720
|
+
.wds-list-item-control {
|
|
2721
|
+
flex: 0 0 auto;
|
|
2722
|
+
}
|
|
2723
|
+
.wds-list-item-navigation,
|
|
2724
|
+
.wds-list-item-navigation:hover,
|
|
2725
|
+
.wds-list-item-navigation:focus {
|
|
2726
|
+
-webkit-text-decoration: none;
|
|
2727
|
+
text-decoration: none;
|
|
2728
|
+
}
|
|
2729
|
+
.wds-list-item-spotlight-active {
|
|
2730
|
+
background-color: rgba(134,167,189,0.10196);
|
|
2731
|
+
background-color: var(--color-background-neutral);
|
|
2732
|
+
}
|
|
2733
|
+
.wds-list-item-spotlight-active:not(.disabled):not(:disabled):hover {
|
|
2734
|
+
background-color: var(--color-background-neutral-hover);
|
|
2735
|
+
}
|
|
2736
|
+
.wds-list-item-spotlight-active:not(.disabled):not(:disabled):active {
|
|
2737
|
+
background-color: var(--color-background-neutral-active);
|
|
2738
|
+
}
|
|
2739
|
+
.wds-list-item-spotlight-inactive {
|
|
2740
|
+
background-color: rgba(134, 167, 189, 0.025);
|
|
2741
|
+
border: 1px dashed rgba(0,0,0,0.10196);
|
|
2742
|
+
border: 1px dashed var(--color-border-neutral);
|
|
2743
|
+
}
|
|
2744
|
+
@supports (color: color-mix(in lch, red, blue)) {
|
|
2745
|
+
.wds-list-item-spotlight-inactive {
|
|
2746
|
+
background-color: color-mix(in srgb, var(--color-background-neutral) 25%, transparent);
|
|
2747
|
+
}
|
|
2748
|
+
}
|
|
2749
|
+
.wds-list-item-spotlight-inactive:not(.disabled):not(:disabled):hover {
|
|
2750
|
+
background-color: color-mix(in srgb, var(--color-background-neutral-hover) 25%, transparent);
|
|
2751
|
+
}
|
|
2752
|
+
.wds-list-item-spotlight-inactive:not(.disabled):not(:disabled):active {
|
|
2753
|
+
background-color: color-mix(in srgb, var(--color-background-neutral-active) 25%, transparent);
|
|
2754
|
+
}
|
|
2755
|
+
.wds-list-item-prompt {
|
|
2756
|
+
display: inline-flex;
|
|
2757
|
+
padding-top: calc(8px / 2);
|
|
2758
|
+
padding-top: calc(var(--padding-x-small) / 2);
|
|
2759
|
+
padding-bottom: calc(8px / 2);
|
|
2760
|
+
padding-bottom: calc(var(--padding-x-small) / 2);
|
|
2761
|
+
padding-left: calc(8px - 1px);
|
|
2762
|
+
padding-left: calc(var(--padding-x-small) - 1px);
|
|
2763
|
+
padding-right: 8px;
|
|
2764
|
+
padding-right: var(--padding-x-small);
|
|
2765
|
+
border-radius: 10px;
|
|
2766
|
+
border-radius: var(--radius-small);
|
|
2767
|
+
word-break: break-word;
|
|
2768
|
+
word-wrap: break-word;
|
|
2769
|
+
}
|
|
2770
|
+
.wds-list-item-prompt .np-prompt-icon {
|
|
2771
|
+
padding-right: calc(12px / 2);
|
|
2772
|
+
padding-right: calc(var(--size-12) / 2);
|
|
2773
|
+
padding-top: calc(4px - 1px);
|
|
2774
|
+
padding-top: calc(var(--size-4) - 1px);
|
|
2775
|
+
padding-bottom: calc(4px - 1px);
|
|
2776
|
+
padding-bottom: calc(var(--size-4) - 1px);
|
|
2777
|
+
}
|
|
2778
|
+
.wds-list-item-prompt .np-prompt-icon .tw-icon-tags,
|
|
2779
|
+
.wds-list-item-prompt .np-prompt-icon .tw-icon-confetti {
|
|
2780
|
+
color: var(--color-sentiment-positive-primary);
|
|
2781
|
+
}
|
|
2782
|
+
.wds-list-item-prompt a {
|
|
2783
|
+
text-underline-offset: calc(4px / 2);
|
|
2784
|
+
text-underline-offset: calc(var(--size-4) / 2);
|
|
2785
|
+
}
|
|
2786
|
+
.wds-list-item-prompt.np-prompt-interactive {
|
|
2787
|
+
-webkit-text-decoration: none;
|
|
2788
|
+
text-decoration: none;
|
|
2789
|
+
cursor: pointer;
|
|
2790
|
+
border: none;
|
|
2791
|
+
}
|
|
2792
|
+
.wds-list-item-prompt.negative {
|
|
2793
|
+
background-color: var(--color-sentiment-negative-secondary);
|
|
2794
|
+
color: var(--color-sentiment-negative-primary);
|
|
2795
|
+
}
|
|
2796
|
+
.wds-list-item-prompt.negative a {
|
|
2797
|
+
color: var(--color-sentiment-negative-primary);
|
|
2798
|
+
}
|
|
2799
|
+
.wds-list-item-prompt.negative a:hover {
|
|
2800
|
+
color: var(--color-sentiment-negative-primary-hover);
|
|
2801
|
+
}
|
|
2802
|
+
.wds-list-item-prompt.negative a:active {
|
|
2803
|
+
color: var(--color-sentiment-negative-primary-active);
|
|
2804
|
+
}
|
|
2805
|
+
.np-prompt-interactive.wds-list-item-prompt.negative:hover {
|
|
2806
|
+
background-color: color-mix(in srgb, var(--color-sentiment-negative-secondary) 95%, var(--color-sentiment-negative-primary));
|
|
2807
|
+
}
|
|
2808
|
+
.np-prompt-interactive.wds-list-item-prompt.negative:active {
|
|
2809
|
+
background-color: color-mix(in srgb, var(--color-sentiment-negative-secondary) 90%, var(--color-sentiment-negative-primary));
|
|
2810
|
+
}
|
|
2811
|
+
.wds-list-item-prompt.positive,
|
|
2812
|
+
.wds-list-item-prompt.discount,
|
|
2813
|
+
.wds-list-item-prompt.savings {
|
|
2814
|
+
background-color: var(--color-sentiment-positive-secondary);
|
|
2815
|
+
color: var(--color-sentiment-positive-primary);
|
|
2816
|
+
}
|
|
2817
|
+
.wds-list-item-prompt.positive a,
|
|
2818
|
+
.wds-list-item-prompt.discount a,
|
|
2819
|
+
.wds-list-item-prompt.savings a {
|
|
2820
|
+
color: var(--color-sentiment-positive-primary);
|
|
2821
|
+
}
|
|
2822
|
+
.wds-list-item-prompt.positive a:hover,
|
|
2823
|
+
.wds-list-item-prompt.discount a:hover,
|
|
2824
|
+
.wds-list-item-prompt.savings a:hover {
|
|
2825
|
+
color: var(--color-sentiment-positive-primary-hover);
|
|
2826
|
+
}
|
|
2827
|
+
.wds-list-item-prompt.positive a:active,
|
|
2828
|
+
.wds-list-item-prompt.discount a:active,
|
|
2829
|
+
.wds-list-item-prompt.savings a:active {
|
|
2830
|
+
color: var(--color-sentiment-positive-primary-active);
|
|
2831
|
+
}
|
|
2832
|
+
.np-prompt-interactive.wds-list-item-prompt.positive:hover,
|
|
2833
|
+
.np-prompt-interactive.wds-list-item-prompt.discount:hover,
|
|
2834
|
+
.np-prompt-interactive.wds-list-item-prompt.savings:hover {
|
|
2835
|
+
background-color: color-mix(in srgb, var(--color-sentiment-positive-secondary) 95%, var(--color-sentiment-positive-primary));
|
|
2836
|
+
}
|
|
2837
|
+
.np-prompt-interactive.wds-list-item-prompt.positive:active,
|
|
2838
|
+
.np-prompt-interactive.wds-list-item-prompt.discount:active,
|
|
2839
|
+
.np-prompt-interactive.wds-list-item-prompt.savings:active {
|
|
2840
|
+
background-color: color-mix(in srgb, var(--color-sentiment-positive-secondary) 90%, var(--color-sentiment-positive-primary));
|
|
2841
|
+
}
|
|
2842
|
+
.wds-list-item-prompt.neutral {
|
|
2843
|
+
background-color: rgba(134,167,189,0.10196);
|
|
2844
|
+
background-color: var(--color-background-neutral);
|
|
2845
|
+
color: #37517e;
|
|
2846
|
+
color: var(--color-content-primary);
|
|
2847
|
+
}
|
|
2848
|
+
.wds-list-item-prompt.neutral a {
|
|
2849
|
+
color: #37517e;
|
|
2850
|
+
color: var(--color-content-primary);
|
|
2851
|
+
}
|
|
2852
|
+
.np-prompt-interactive.wds-list-item-prompt.neutral:hover {
|
|
2853
|
+
background-color: var(--color-background-neutral-hover);
|
|
2854
|
+
}
|
|
2855
|
+
.np-prompt-interactive.wds-list-item-prompt.neutral:active {
|
|
2856
|
+
background-color: var(--color-background-neutral-active);
|
|
2857
|
+
}
|
|
2858
|
+
.wds-list-item-prompt.warning {
|
|
2859
|
+
background-color: var(--color-sentiment-warning-secondary);
|
|
2860
|
+
color: var(--color-sentiment-warning-content);
|
|
2861
|
+
}
|
|
2862
|
+
.wds-list-item-prompt.warning a {
|
|
2863
|
+
color: var(--color-sentiment-warning-content);
|
|
2864
|
+
}
|
|
2865
|
+
.wds-list-item-prompt.warning a:hover {
|
|
2866
|
+
color: var(--color-sentiment-warning-content-hover);
|
|
2867
|
+
}
|
|
2868
|
+
.wds-list-item-prompt.warning a:active {
|
|
2869
|
+
color: var(--color-sentiment-warning-content-active);
|
|
2870
|
+
}
|
|
2871
|
+
.np-prompt-interactive.wds-list-item-prompt.warning:hover {
|
|
2872
|
+
background-color: color-mix(in srgb, var(--color-sentiment-warning-secondary) 90%, var(--color-sentiment-warning-primary));
|
|
2873
|
+
}
|
|
2874
|
+
.np-prompt-interactive.wds-list-item-prompt.warning:active {
|
|
2875
|
+
background-color: color-mix(in srgb, var(--color-sentiment-warning-secondary) 80%, var(--color-sentiment-warning-primary));
|
|
2876
|
+
}
|
|
2665
2877
|
.np-field-control {
|
|
2666
2878
|
margin-top: 4px;
|
|
2667
2879
|
margin-top: var(--size-4);
|
package/src/main.less
CHANGED
|
@@ -33,7 +33,6 @@ exports[`PromoCardGroup matches snapshot 1`] = `
|
|
|
33
33
|
<img
|
|
34
34
|
alt=""
|
|
35
35
|
class="tw-image tw-image__stretch tw-image__shrink"
|
|
36
|
-
loading="lazy"
|
|
37
36
|
src="https://via.placeholder.com/150"
|
|
38
37
|
/>
|
|
39
38
|
</div>
|
|
@@ -68,7 +67,6 @@ exports[`PromoCardGroup matches snapshot 1`] = `
|
|
|
68
67
|
<img
|
|
69
68
|
alt=""
|
|
70
69
|
class="tw-image tw-image__stretch tw-image__shrink"
|
|
71
|
-
loading="lazy"
|
|
72
70
|
src="https://via.placeholder.com/150"
|
|
73
71
|
/>
|
|
74
72
|
</div>
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
3
|
+
<svg version="1.1" id="Artwork" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
4
|
+
width="165.52107px" height="105.9651px" viewBox="0 0 165.52107 105.9651" enable-background="new 0 0 165.52107 105.9651"
|
|
5
|
+
xml:space="preserve">
|
|
6
|
+
<g>
|
|
7
|
+
<path id="XMLID_4_" d="M150.69807,0H14.82318c-0.5659,0-1.1328,0-1.69769,0.0033c-0.47751,0.0034-0.95391,0.0087-1.43031,0.0217
|
|
8
|
+
c-1.039,0.0281-2.0869,0.0894-3.1129,0.2738c-1.0424,0.1876-2.0124,0.4936-2.9587,0.9754
|
|
9
|
+
c-0.9303,0.4731-1.782,1.0919-2.52009,1.8303c-0.73841,0.7384-1.35721,1.5887-1.83021,2.52
|
|
10
|
+
c-0.4819,0.9463-0.7881,1.9166-0.9744,2.9598c-0.18539,1.0263-0.2471,2.074-0.2751,3.1119
|
|
11
|
+
c-0.0128,0.4764-0.01829,0.9528-0.0214,1.4291c-0.0033,0.5661-0.0022,1.1318-0.0022,1.6989V91.142
|
|
12
|
+
c0,0.5671-0.0011,1.13181,0.0022,1.69901c0.00311,0.4763,0.0086,0.9527,0.0214,1.4291
|
|
13
|
+
c0.028,1.03699,0.08971,2.08469,0.2751,3.11069c0.1863,1.0436,0.4925,2.0135,0.9744,2.9599
|
|
14
|
+
c0.473,0.9313,1.0918,1.7827,1.83021,2.52c0.73809,0.7396,1.58979,1.3583,2.52009,1.8302
|
|
15
|
+
c0.9463,0.4831,1.9163,0.7892,2.9587,0.9767c1.026,0.1832,2.0739,0.2456,3.1129,0.2737c0.4764,0.0108,0.9528,0.0172,1.43031,0.0194
|
|
16
|
+
c0.56489,0.0044,1.13179,0.0044,1.69769,0.0044h135.87489c0.5649,0,1.13181,0,1.69659-0.0044
|
|
17
|
+
c0.47641-0.0022,0.95282-0.0086,1.4314-0.0194c1.0368-0.0281,2.0845-0.0905,3.11301-0.2737
|
|
18
|
+
c1.041-0.1875,2.0112-0.4936,2.9576-0.9767c0.9313-0.4719,1.7805-1.0906,2.52011-1.8302c0.7372-0.7373,1.35599-1.5887,1.8302-2.52
|
|
19
|
+
c0.48299-0.9464,0.78889-1.9163,0.97429-2.9599c0.1855-1.026,0.2457-2.0737,0.2738-3.11069
|
|
20
|
+
c0.013-0.4764,0.01941-0.9528,0.02161-1.4291c0.00439-0.5672,0.00439-1.1319,0.00439-1.69901V14.8242
|
|
21
|
+
c0-0.5671,0-1.1328-0.00439-1.6989c-0.0022-0.4763-0.00861-0.9527-0.02161-1.4291c-0.02811-1.0379-0.0883-2.0856-0.2738-3.1119
|
|
22
|
+
c-0.18539-1.0432-0.4913-2.0135-0.97429-2.9598c-0.47421-0.9313-1.093-1.7816-1.8302-2.52
|
|
23
|
+
c-0.73961-0.7384-1.58881-1.3572-2.52011-1.8303c-0.9464-0.4818-1.9166-0.7878-2.9576-0.9754
|
|
24
|
+
c-1.0285-0.1844-2.0762-0.2457-3.11301-0.2738c-0.47858-0.013-0.95499-0.0183-1.4314-0.0217C151.82988,0,151.26297,0,150.69807,0
|
|
25
|
+
L150.69807,0z"/>
|
|
26
|
+
<path id="XMLID_3_" fill="#FFFFFF" d="M150.69807,3.532l1.67149,0.0032c0.4528,0.0032,0.90561,0.0081,1.36092,0.0205
|
|
27
|
+
c0.79201,0.0214,1.71849,0.0643,2.58209,0.2191c0.7507,0.1352,1.38029,0.3408,1.9845,0.6484
|
|
28
|
+
c0.5965,0.3031,1.14301,0.7003,1.62019,1.1768c0.479,0.4797,0.87671,1.0271,1.18381,1.6302
|
|
29
|
+
c0.30589,0.5995,0.51019,1.2261,0.64459,1.9823c0.1544,0.8542,0.1971,1.7832,0.21881,2.5801
|
|
30
|
+
c0.01219,0.4498,0.01819,0.8996,0.0204,1.3601c0.00429,0.5569,0.0042,1.1135,0.0042,1.6715V91.142
|
|
31
|
+
c0,0.558,0.00009,1.1136-0.0043,1.6824c-0.00211,0.4497-0.0081,0.8995-0.0204,1.3501c-0.02161,0.7957-0.0643,1.7242-0.2206,2.5885
|
|
32
|
+
c-0.13251,0.7458-0.3367,1.3725-0.64429,1.975c-0.30621,0.6016-0.70331,1.1484-1.18022,1.6251
|
|
33
|
+
c-0.47989,0.48-1.0246,0.876-1.62819,1.1819c-0.5997,0.3061-1.22821,0.51151-1.97151,0.6453
|
|
34
|
+
c-0.88109,0.157-1.84639,0.2002-2.57339,0.2199c-0.4574,0.0103-0.9126,0.01649-1.37889,0.0187
|
|
35
|
+
c-0.55571,0.0043-1.1134,0.0042-1.6692,0.0042H14.82318c-0.0074,0-0.0146,0-0.0221,0c-0.5494,0-1.0999,0-1.6593-0.0043
|
|
36
|
+
c-0.4561-0.00211-0.9112-0.0082-1.3512-0.0182c-0.7436-0.0201-1.7095-0.0632-2.5834-0.2193
|
|
37
|
+
c-0.74969-0.1348-1.3782-0.3402-1.9858-0.6503c-0.59789-0.3032-1.1422-0.6988-1.6223-1.1797
|
|
38
|
+
c-0.4764-0.4756-0.8723-1.0207-1.1784-1.6232c-0.3064-0.6019-0.5114-1.2305-0.64619-1.9852
|
|
39
|
+
c-0.15581-0.8626-0.19861-1.7874-0.22-2.5777c-0.01221-0.4525-0.01731-0.9049-0.02021-1.3547l-0.0022-1.3279l0.0001-0.3506V14.8242
|
|
40
|
+
l-0.0001-0.3506l0.0021-1.3251c0.003-0.4525,0.0081-0.9049,0.02031-1.357c0.02139-0.7911,0.06419-1.7163,0.22129-2.5861
|
|
41
|
+
c0.1336-0.7479,0.3385-1.3765,0.6465-1.9814c0.3037-0.5979,0.7003-1.1437,1.17921-1.6225
|
|
42
|
+
c0.477-0.4772,1.02309-0.8739,1.62479-1.1799c0.6011-0.3061,1.2308-0.5116,1.9805-0.6465c0.8638-0.1552,1.7909-0.198,2.5849-0.2195
|
|
43
|
+
c0.4526-0.0123,0.9052-0.0172,1.3544-0.0203l1.6771-0.0033H150.69807"/>
|
|
44
|
+
<g>
|
|
45
|
+
<g>
|
|
46
|
+
<path d="M45.1862,35.64053c1.41724-1.77266,2.37897-4.15282,2.12532-6.58506c-2.07464,0.10316-4.60634,1.36871-6.07207,3.14276
|
|
47
|
+
c-1.31607,1.5192-2.4809,3.99902-2.17723,6.3293C41.39111,38.72954,43.71785,37.36345,45.1862,35.64053"/>
|
|
48
|
+
<path d="M47.28506,38.98252c-3.38211-0.20146-6.25773,1.91951-7.87286,1.91951c-1.61602,0-4.08931-1.81799-6.76438-1.76899
|
|
49
|
+
c-3.48177,0.05114-6.71245,2.01976-8.4793,5.15079c-3.63411,6.2636-0.95904,15.55471,2.57494,20.65606
|
|
50
|
+
c1.71618,2.5238,3.78447,5.30269,6.50976,5.20287c2.57494-0.10104,3.58421-1.66732,6.71416-1.66732
|
|
51
|
+
c3.12765,0,4.03679,1.66732,6.76252,1.61681c2.82665-0.05054,4.59381-2.52506,6.30997-5.05132
|
|
52
|
+
c1.96878-2.877,2.77473-5.65498,2.82542-5.80748c-0.0507-0.05051-5.45058-2.12204-5.50065-8.33358
|
|
53
|
+
c-0.05098-5.20101,4.23951-7.6749,4.44144-7.82832C52.3832,39.4881,48.5975,39.08404,47.28506,38.98252"/>
|
|
54
|
+
</g>
|
|
55
|
+
<g>
|
|
56
|
+
<path d="M76.73385,31.94381c7.35096,0,12.4697,5.06708,12.4697,12.44437c0,7.40363-5.22407,12.49704-12.65403,12.49704h-8.13892
|
|
57
|
+
v12.94318h-5.88037v-37.8846H76.73385z M68.41059,51.9493h6.74732c5.11975,0,8.0336-2.75636,8.0336-7.53479
|
|
58
|
+
c0-4.77792-2.91385-7.50845-8.00727-7.50845h-6.77365V51.9493z"/>
|
|
59
|
+
<path d="M90.73997,61.97864c0-4.8311,3.70182-7.79761,10.26583-8.16526l7.56061-0.44614v-2.12639
|
|
60
|
+
c0-3.07185-2.07423-4.90959-5.53905-4.90959c-3.28251,0-5.33041,1.57492-5.82871,4.04313h-5.35574
|
|
61
|
+
c0.31499-4.98859,4.56777-8.66407,11.3941-8.66407c6.69466,0,10.97377,3.54432,10.97377,9.08388v19.03421h-5.43472v-4.54194
|
|
62
|
+
h-0.13065c-1.60125,3.07185-5.09341,5.01441-8.71623,5.01441C94.52078,70.30088,90.73997,66.94038,90.73997,61.97864z
|
|
63
|
+
M108.56641,59.4846v-2.17905l-6.8,0.41981c-3.38683,0.23649-5.30306,1.73291-5.30306,4.09579
|
|
64
|
+
c0,2.41504,1.99523,3.99046,5.04075,3.99046C105.46823,65.81161,108.56641,63.08108,108.56641,59.4846z"/>
|
|
65
|
+
<path d="M119.34167,79.9889v-4.5946c0.4193,0.10483,1.36425,0.10483,1.83723,0.10483c2.6252,0,4.04313-1.10245,4.90908-3.9378
|
|
66
|
+
c0-0.05267,0.49931-1.68025,0.49931-1.70658l-9.97616-27.64562h6.14268l6.98432,22.47371h0.10432l6.98433-22.47371h5.9857
|
|
67
|
+
l-10.34483,29.06304c-2.36186,6.69517-5.0924,8.84789-10.81577,8.84789C121.17891,80.12006,119.76098,80.06739,119.34167,79.9889
|
|
68
|
+
z"/>
|
|
69
|
+
</g>
|
|
70
|
+
</g>
|
|
71
|
+
</g>
|
|
72
|
+
<g>
|
|
73
|
+
</g>
|
|
74
|
+
<g>
|
|
75
|
+
</g>
|
|
76
|
+
<g>
|
|
77
|
+
</g>
|
|
78
|
+
<g>
|
|
79
|
+
</g>
|
|
80
|
+
<g>
|
|
81
|
+
</g>
|
|
82
|
+
<g>
|
|
83
|
+
</g>
|
|
84
|
+
</svg>
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
export const lorem5 = 'Lorem ipsum dolor sit amet.';
|
|
2
|
+
|
|
1
3
|
export const lorem10 =
|
|
2
4
|
'Lorem ipsum, dolor sit amet consectetur adipisicing elit. Iste, architecto?';
|
|
3
5
|
|
|
6
|
+
export const lorem20 =
|
|
7
|
+
'Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum non explicabo doloribus rerum saepe ut beatae adipisci rem vero optio.';
|
|
8
|
+
|
|
4
9
|
export const lorem40 =
|
|
5
10
|
'Lorem ipsum dolor sit amet consectetur, adipisicing elit. Illo esse quod et iure deserunt facilis similique voluptatem reprehenderit mollitia inventore, ab voluptate dignissimos autem repellat accusamus perferendis sed pariatur tempore possimus ipsam praesentium ipsum? Nesciunt cumque repellendus impedit aliquam! Error?';
|
|
6
11
|
|
|
@@ -328,9 +328,7 @@ const UploadInput = ({
|
|
|
328
328
|
| { ref: HTMLDivElement | UploadItemRef; target: 'button' | 'link' }
|
|
329
329
|
| null;
|
|
330
330
|
|
|
331
|
-
const [nextFocusable, setNextFocusable] = useState<NextFocusable>(
|
|
332
|
-
uploadInputRef.current,
|
|
333
|
-
);
|
|
331
|
+
const [nextFocusable, setNextFocusable] = useState<NextFocusable>(uploadInputRef.current);
|
|
334
332
|
|
|
335
333
|
const handleFocus = (fileId: string | number) => {
|
|
336
334
|
fileRefs = fileRefs.filter((ref) => {
|
|
@@ -363,7 +361,7 @@ const UploadInput = ({
|
|
|
363
361
|
// If next is an UploadItemRef, check if it has a URL (succeeded)
|
|
364
362
|
if (next && 'status' in next) {
|
|
365
363
|
// Find the file object for this ref
|
|
366
|
-
const fileObj = uploadedFiles.find(f => f.id === next?.id);
|
|
364
|
+
const fileObj = uploadedFiles.find((f) => f.id === next?.id);
|
|
367
365
|
if (
|
|
368
366
|
fileObj &&
|
|
369
367
|
(fileObj.status === Status.SUCCEEDED || fileObj.status === Status.DONE) &&
|
|
@@ -404,19 +402,12 @@ const UploadInput = ({
|
|
|
404
402
|
typeof focusTarget.ref.focus === 'function'
|
|
405
403
|
) {
|
|
406
404
|
setTimeout(() => {
|
|
407
|
-
|
|
408
|
-
if (
|
|
409
|
-
focusTarget.ref &&
|
|
410
|
-
typeof (focusTarget.ref as UploadItemRef).focus === 'function'
|
|
411
|
-
) {
|
|
405
|
+
if (focusTarget.ref && typeof (focusTarget.ref as UploadItemRef).focus === 'function') {
|
|
412
406
|
// @ts-expect-error: focus may not exist on all possible ref types, but is safe here
|
|
413
407
|
(focusTarget.ref as UploadItemRef).focus(focusTarget.target);
|
|
414
408
|
}
|
|
415
409
|
}, 0);
|
|
416
|
-
} else if (
|
|
417
|
-
focusTarget &&
|
|
418
|
-
typeof (focusTarget as UploadItemRef).focus === 'function'
|
|
419
|
-
) {
|
|
410
|
+
} else if (focusTarget && typeof (focusTarget as UploadItemRef).focus === 'function') {
|
|
420
411
|
setTimeout(() => {
|
|
421
412
|
(focusTarget as UploadItemRef).focus();
|
|
422
413
|
}, 0);
|