@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.
@@ -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
- icon?: React.ElementType;
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;AAM1B,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAI9C,eAAO,MAAM,iBAAiB;;;;;;CAM7B,CAAC;AAiEF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AASpE,KAAK,YAAY,GAAG,QAAQ,GAAG;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,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;CAC9B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAwC1C,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
+ {"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 { CheckCircleIcon, CrossIcon, InfoIcon, WarningTriangleIcon } from '@apify/ui-icons';
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 { Heading } from './text/index.js';
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.content} {
24
- flex: 1;
25
- margin-top: 1px; /* This is to align icon with text (align-items: center not possible - icon should be on top) */
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
- /* TODO: We should not override the default Heading that is rendered for caption but it doesn't look good without these */
30
- line-height: 20px;
31
- font-weight: 600;
32
- margin-bottom: ${theme.space.space4};
34
+ grid-area: captionArea;
33
35
  }
34
36
 
35
- .${messageClassNames.dismiss} {
36
- background: transparent;
37
- height: 20px;
37
+ .${messageClassNames.description} {
38
+ grid-area: descriptionArea;
39
+ }
38
40
 
39
- svg {
40
- color: ${theme.color.neutral.icon}
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} { color: ${theme.color.primary.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} { color: ${theme.color.success.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} { color: ${theme.color.warning.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} { color: ${theme.color.danger.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: CheckCircleIcon,
124
+ success: CheckIcon,
81
125
  warning: WarningTriangleIcon,
82
- danger: WarningTriangleIcon,
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 Icon = icon || typeToIcon[type];
89
- return (_jsxs(StyledMessage, { className: clsx(className, messageClassNames.main, type, borderless && 'borderless'), mb: boxless ? 'space8' : 'space16', p: boxless ? 'none' : 'space16', forwardedAs: as, ...rest, children: [_jsx(Icon, { className: messageClassNames.icon, size: "20" }), _jsxs("div", { className: messageClassNames.content, children: [caption && (_jsx(Heading, { as: 'div', type: 'titleM', className: messageClassNames.caption, children: caption })), children] }), onDismissClick && (_jsx(Button, { size: 'small', variant: 'tertiary', trackingId: dismissTrackingId, onClick: onDismissClick, className: messageClassNames.dismiss, children: _jsx(CrossIcon, { size: "16" }) }))] }));
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":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/components/message.tsx"],"names":[],"mappings":"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"}