@apify/ui-library 1.83.1 → 1.84.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.
- package/dist/src/components/message.d.ts +12 -1
- package/dist/src/components/message.d.ts.map +1 -1
- package/dist/src/components/message.js +70 -25
- package/dist/src/components/message.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/components/message.tsx +116 -38
|
@@ -1,22 +1,33 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
1
2
|
import React from 'react';
|
|
3
|
+
import type { IconComponent as IconComponentType } from '@apify/ui-icons';
|
|
2
4
|
import { type BoxProps } from './box.js';
|
|
5
|
+
import type { ButtonProps } from './button.js';
|
|
3
6
|
export declare const messageClassNames: {
|
|
4
7
|
main: string;
|
|
5
8
|
icon: string;
|
|
6
9
|
content: string;
|
|
7
10
|
caption: string;
|
|
11
|
+
description: string;
|
|
8
12
|
dismiss: string;
|
|
13
|
+
actionsWrapper: string;
|
|
9
14
|
};
|
|
10
15
|
export type MessageType = 'info' | 'warning' | 'success' | 'danger';
|
|
16
|
+
type ActionButtonProps = Omit<ButtonProps, 'children'> & {
|
|
17
|
+
label: ReactNode;
|
|
18
|
+
};
|
|
11
19
|
type MessageProps = BoxProps & {
|
|
12
20
|
type: MessageType;
|
|
13
21
|
caption?: string;
|
|
14
|
-
|
|
22
|
+
/** @deprecated Use `Icon` instead. */
|
|
23
|
+
icon?: IconComponentType;
|
|
24
|
+
Icon?: IconComponentType;
|
|
15
25
|
onDismissClick?: () => void;
|
|
16
26
|
borderless?: boolean;
|
|
17
27
|
boxless?: boolean;
|
|
18
28
|
as?: React.ElementType;
|
|
19
29
|
dismissTrackingId?: string;
|
|
30
|
+
actions?: ActionButtonProps[];
|
|
20
31
|
};
|
|
21
32
|
/**
|
|
22
33
|
* Component used to display larger messages that are part of the content of the application.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/components/message.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/components/message.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAI1E,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,eAAO,MAAM,iBAAiB;;;;;;;;CAQ7B,CAAC;AA2GF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AASpE,KAAK,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG;IACrD,KAAK,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,KAAK,YAAY,GAAG,QAAQ,GAAG;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACjC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAgE1C,CAAC;AAEF,KAAK,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAEvD,eAAO,MAAM,WAAW,UAAW,oBAAoB,4CAAyC,CAAC;AACjG,eAAO,MAAM,cAAc,UAAW,oBAAoB,4CAA4C,CAAC;AACvG,eAAO,MAAM,cAAc,UAAW,oBAAoB,4CAA4C,CAAC;AACvG,eAAO,MAAM,aAAa,UAAW,oBAAoB,4CAA2C,CAAC"}
|
|
@@ -1,44 +1,80 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import clsx from 'clsx';
|
|
3
|
-
import styled from 'styled-components';
|
|
4
|
-
import {
|
|
3
|
+
import styled, { css } from 'styled-components';
|
|
4
|
+
import { CheckIcon, CrossIcon, InfoIcon, WarningTriangleIcon, XCircleIcon } from '@apify/ui-icons';
|
|
5
5
|
import { theme } from '../design_system/theme.js';
|
|
6
6
|
import { Box } from './box.js';
|
|
7
7
|
import { Button } from './button.js';
|
|
8
|
-
import {
|
|
8
|
+
import { Text } from './text/index.js';
|
|
9
9
|
export const messageClassNames = {
|
|
10
10
|
main: 'Message',
|
|
11
11
|
icon: 'icon',
|
|
12
12
|
content: 'content',
|
|
13
13
|
caption: 'caption',
|
|
14
|
+
description: 'description',
|
|
14
15
|
dismiss: 'dismiss',
|
|
16
|
+
actionsWrapper: 'actionsWrapper',
|
|
15
17
|
};
|
|
16
18
|
const StyledMessage = styled(Box) `
|
|
17
19
|
display: flex;
|
|
20
|
+
align-items: center;
|
|
18
21
|
gap: ${theme.space.space8};
|
|
19
22
|
|
|
20
23
|
border-radius: ${theme.radius.radius8};
|
|
21
24
|
box-shadow: ${theme.shadow.shadow1};
|
|
22
25
|
|
|
23
|
-
.${messageClassNames.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
.${messageClassNames.icon} {
|
|
27
|
+
grid-area: iconArea;
|
|
28
|
+
color: ${theme.color.neutral.icon};
|
|
29
|
+
/* Icon has 16px but text 20. With this extra margin we make the elements aligned */
|
|
30
|
+
margin: ${theme.space.space2} 0;
|
|
26
31
|
}
|
|
27
32
|
|
|
28
33
|
.${messageClassNames.caption} {
|
|
29
|
-
|
|
30
|
-
line-height: 20px;
|
|
31
|
-
font-weight: 600;
|
|
32
|
-
margin-bottom: ${theme.space.space4};
|
|
34
|
+
grid-area: captionArea;
|
|
33
35
|
}
|
|
34
36
|
|
|
35
|
-
.${messageClassNames.
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
.${messageClassNames.description} {
|
|
38
|
+
grid-area: descriptionArea;
|
|
39
|
+
}
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
.${messageClassNames.content} {
|
|
42
|
+
flex: 1;
|
|
43
|
+
display: grid;
|
|
44
|
+
gap: ${theme.space.space6} ${theme.space.space8};
|
|
45
|
+
grid-template-columns: auto 1fr;
|
|
46
|
+
|
|
47
|
+
a {
|
|
48
|
+
color: ${theme.color.neutral.text};
|
|
49
|
+
text-decoration: underline;
|
|
50
|
+
${theme.typography.shared.desktop.bodyMMedium};
|
|
41
51
|
}
|
|
52
|
+
|
|
53
|
+
${({ $hasCaption }) => ($hasCaption
|
|
54
|
+
? css `
|
|
55
|
+
grid-template-areas:
|
|
56
|
+
'iconArea captionArea'
|
|
57
|
+
'descriptionArea descriptionArea';
|
|
58
|
+
` : css `
|
|
59
|
+
grid-template-areas:
|
|
60
|
+
'iconArea descriptionArea';
|
|
61
|
+
`)}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
${({ $boxless }) => (!$boxless && css `
|
|
66
|
+
/* the dismiss button is bigger than text so we apply smaller padding on wrapper & some on the content and icon */
|
|
67
|
+
padding: ${theme.space.space8} ${theme.space.space16};
|
|
68
|
+
|
|
69
|
+
.${messageClassNames.content} {
|
|
70
|
+
padding: ${theme.space.space4} 0;
|
|
71
|
+
}
|
|
72
|
+
`)}
|
|
73
|
+
|
|
74
|
+
.${messageClassNames.actionsWrapper} {
|
|
75
|
+
display: flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
gap: ${theme.space.space8};
|
|
42
78
|
}
|
|
43
79
|
|
|
44
80
|
&.borderless {
|
|
@@ -51,42 +87,51 @@ const StyledMessage = styled(Box) `
|
|
|
51
87
|
background-color: ${theme.color.neutral.background};
|
|
52
88
|
border: 1px solid ${theme.color.neutral.border};
|
|
53
89
|
|
|
54
|
-
.${messageClassNames.icon} {
|
|
90
|
+
.${messageClassNames.icon} {
|
|
91
|
+
color: ${theme.color.neutral.icon};
|
|
92
|
+
}
|
|
55
93
|
}
|
|
56
94
|
|
|
57
95
|
&.success {
|
|
58
96
|
background-color: ${theme.color.success.backgroundSubtle};
|
|
59
97
|
border: 1px solid ${theme.color.success.borderSubtle};
|
|
60
98
|
|
|
61
|
-
.${messageClassNames.icon} {
|
|
99
|
+
.${messageClassNames.icon} {
|
|
100
|
+
color: ${theme.color.success.icon};
|
|
101
|
+
}
|
|
62
102
|
}
|
|
63
103
|
|
|
64
104
|
&.warning {
|
|
65
105
|
background-color: ${theme.color.warning.backgroundSubtle};
|
|
66
106
|
border: 1px solid ${theme.color.warning.borderSubtle};
|
|
67
107
|
|
|
68
|
-
.${messageClassNames.icon} {
|
|
108
|
+
.${messageClassNames.icon} {
|
|
109
|
+
color: ${theme.color.warning.icon};
|
|
110
|
+
}
|
|
69
111
|
}
|
|
70
112
|
|
|
71
113
|
&.danger {
|
|
72
114
|
background-color: ${theme.color.danger.backgroundSubtle};
|
|
73
115
|
border: 1px solid ${theme.color.danger.borderSubtle};
|
|
74
116
|
|
|
75
|
-
.${messageClassNames.icon} {
|
|
117
|
+
.${messageClassNames.icon} {
|
|
118
|
+
color: ${theme.color.danger.icon};
|
|
119
|
+
}
|
|
76
120
|
}
|
|
77
121
|
`;
|
|
78
122
|
const typeToIcon = {
|
|
79
123
|
info: InfoIcon,
|
|
80
|
-
success:
|
|
124
|
+
success: CheckIcon,
|
|
81
125
|
warning: WarningTriangleIcon,
|
|
82
|
-
danger:
|
|
126
|
+
danger: XCircleIcon,
|
|
83
127
|
};
|
|
84
128
|
/**
|
|
85
129
|
* Component used to display larger messages that are part of the content of the application.
|
|
86
130
|
*/
|
|
87
|
-
export const Message = ({ className, icon, caption, children, onDismissClick, type = 'warning', borderless = false, boxless = false, dismissTrackingId, as, ...rest }) => {
|
|
88
|
-
const
|
|
89
|
-
|
|
131
|
+
export const Message = ({ className, Icon, icon, caption, children, onDismissClick, type = 'warning', borderless = false, boxless = false, dismissTrackingId, actions = [], as, ...rest }) => {
|
|
132
|
+
const IconComponent = icon || Icon || typeToIcon[type];
|
|
133
|
+
const hasCaption = !!caption && !!children;
|
|
134
|
+
return (_jsxs(StyledMessage, { className: clsx(className, messageClassNames.main, type, borderless && 'borderless'), mb: boxless ? 'space8' : 'space16', forwardedAs: as, "$boxless": boxless, "$hasCaption": hasCaption, ...rest, children: [_jsxs("div", { className: messageClassNames.content, children: [_jsx(IconComponent, { className: messageClassNames.icon, size: '16' }), hasCaption && _jsx(Text, { weight: 'bold', className: messageClassNames.caption, children: caption }), _jsx("div", { className: messageClassNames.description, children: children })] }), (actions.length > 0 || onDismissClick) && (_jsxs("div", { className: messageClassNames.actionsWrapper, children: [actions.length > 0 && (_jsx(_Fragment, { children: actions.map(({ label, ...action }, index) => (_jsx(Button, { size: 'small', variant: 'primary', ...action, children: label }, index))) })), onDismissClick && (_jsx(Button, { size: 'small', variant: 'tertiary', trackingId: dismissTrackingId, onClick: onDismissClick, className: messageClassNames.dismiss, children: _jsx(CrossIcon, { size: "16", color: theme.color.neutral.icon }) }))] }))] }));
|
|
90
135
|
};
|
|
91
136
|
// Semantic classes for all the message types
|
|
92
137
|
export const InfoMessage = (props) => (_jsx(Message, { ...props, type: 'info' }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/components/message.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/components/message.tsx"],"names":[],"mappings":"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"}
|