@carbon-labs/react-animated-header 0.3.0 → 0.5.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/es/__stories__/AnimatedHeader.stories.d.ts +466 -544
- package/es/__stories__/data/index.d.ts +21 -11
- package/es/components/AnimatedHeader/AnimatedHeader.d.ts +30 -17
- package/es/components/AnimatedHeader/AnimatedHeader.js +79 -64
- package/es/components/Tiles/AIPromptTile/AIPromptTile.d.ts +3 -3
- package/es/components/Tiles/AIPromptTile/AIPromptTile.js +7 -5
- package/es/components/Tiles/GlassTile/GlassTile.d.ts +3 -3
- package/es/components/Tiles/GlassTile/GlassTile.js +4 -4
- package/es/node_modules/@carbon/icons-react/es/Icon.js +1 -1
- package/lib/__stories__/AnimatedHeader.stories.d.ts +466 -544
- package/lib/__stories__/data/index.d.ts +21 -11
- package/lib/components/AnimatedHeader/AnimatedHeader.d.ts +30 -17
- package/lib/components/AnimatedHeader/AnimatedHeader.js +78 -63
- package/lib/components/Tiles/AIPromptTile/AIPromptTile.d.ts +3 -3
- package/lib/components/Tiles/AIPromptTile/AIPromptTile.js +7 -5
- package/lib/components/Tiles/GlassTile/GlassTile.d.ts +3 -3
- package/lib/components/Tiles/GlassTile/GlassTile.js +4 -4
- package/lib/node_modules/@carbon/icons-react/es/Icon.js +1 -1
- package/package.json +2 -2
- package/scss/AnimatedHeader/animated-header.scss +17 -11
- package/scss/Tiles/AIPromptTile/ai-prompt-tile.scss +11 -4
- package/scss/Tiles/GlassTile/glass-tile.scss +4 -2
- /package/es/node_modules/@carbon/{icon-helpers → icons-react/node_modules/@carbon/icon-helpers}/es/index.js +0 -0
- /package/lib/node_modules/@carbon/{icon-helpers → icons-react/node_modules/@carbon/icon-helpers}/es/index.js +0 -0
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
*
|
|
4
|
-
* Copyright IBM Corp. 2025
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the Apache-2.0 license found in the
|
|
7
|
-
* LICENSE file in the root directory of this source tree.
|
|
8
|
-
*/
|
|
9
1
|
export const workspaceData: {
|
|
10
2
|
id: string;
|
|
11
|
-
|
|
3
|
+
label: string;
|
|
12
4
|
}[];
|
|
13
5
|
export const headerTiles: ({
|
|
14
6
|
id: number;
|
|
15
|
-
|
|
7
|
+
label: string;
|
|
16
8
|
tiles: ({
|
|
17
9
|
id: string;
|
|
18
10
|
href: string;
|
|
@@ -28,7 +20,7 @@ export const headerTiles: ({
|
|
|
28
20
|
})[];
|
|
29
21
|
} | {
|
|
30
22
|
id: number;
|
|
31
|
-
|
|
23
|
+
label: string;
|
|
32
24
|
tiles: ({
|
|
33
25
|
id: string;
|
|
34
26
|
href: string;
|
|
@@ -45,3 +37,21 @@ export const headerTiles: ({
|
|
|
45
37
|
subtitle?: undefined;
|
|
46
38
|
})[];
|
|
47
39
|
})[];
|
|
40
|
+
export namespace tasksConfigButton {
|
|
41
|
+
let type: string;
|
|
42
|
+
namespace button {
|
|
43
|
+
export let href: string;
|
|
44
|
+
export { Add as icon };
|
|
45
|
+
export let text: string;
|
|
46
|
+
let type_1: "tertiary";
|
|
47
|
+
export { type_1 as type };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export namespace tasksConfigDropdown {
|
|
51
|
+
let type_2: string;
|
|
52
|
+
export { type_2 as type };
|
|
53
|
+
export namespace dropdown {
|
|
54
|
+
let label: string;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
import { Add } from '@carbon/react/icons';
|
|
@@ -1,39 +1,52 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ButtonKind } from '@carbon/react';
|
|
3
3
|
/** Animated Header */
|
|
4
|
+
export interface TasksConfig {
|
|
5
|
+
type: 'button' | 'dropdown' | string;
|
|
6
|
+
button?: {
|
|
7
|
+
href?: string;
|
|
8
|
+
icon?: any;
|
|
9
|
+
text?: string;
|
|
10
|
+
type?: ButtonKind;
|
|
11
|
+
};
|
|
12
|
+
dropdown?: {
|
|
13
|
+
label?: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
4
16
|
export interface SelectedWorkspace {
|
|
5
17
|
id: string;
|
|
6
|
-
|
|
18
|
+
label: string;
|
|
7
19
|
}
|
|
8
20
|
export interface Tile {
|
|
9
|
-
id: string;
|
|
10
21
|
href: string | null;
|
|
11
|
-
|
|
12
|
-
subtitle: string | null;
|
|
22
|
+
id: string;
|
|
13
23
|
mainIcon: string | null;
|
|
14
|
-
secondaryIcon
|
|
24
|
+
secondaryIcon?: string | null;
|
|
25
|
+
subtitle?: string | null;
|
|
26
|
+
title: string | null;
|
|
15
27
|
}
|
|
16
28
|
export interface TileGroup {
|
|
17
29
|
id: number;
|
|
18
|
-
|
|
30
|
+
label: string;
|
|
19
31
|
tiles: Tile[];
|
|
20
32
|
}
|
|
21
33
|
export interface AnimatedHeaderProps {
|
|
22
|
-
|
|
34
|
+
allTiles: TileGroup[];
|
|
35
|
+
allWorkspaces?: SelectedWorkspace[];
|
|
23
36
|
description?: string;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
37
|
+
handleHeaderItemsToString: (item: TileGroup | null) => string;
|
|
38
|
+
handleWorkspaceItemsToString: (item: SelectedWorkspace | null) => string;
|
|
39
|
+
headerAnimation?: object;
|
|
40
|
+
headerStatic?: React.JSX.Element;
|
|
28
41
|
productName?: string;
|
|
29
|
-
selectedWorkspace?: SelectedWorkspace[] | any;
|
|
30
|
-
setSelectedWorkspace: (e: any) => void;
|
|
31
|
-
allWorkspaces?: SelectedWorkspace[];
|
|
32
42
|
selectedTileGroup: TileGroup[] | any;
|
|
43
|
+
selectedWorkspace?: SelectedWorkspace | any;
|
|
33
44
|
setSelectedTileGroup: (e: any) => void;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
setSelectedWorkspace: (e: any) => void;
|
|
46
|
+
tasksConfig?: TasksConfig;
|
|
47
|
+
userName?: string;
|
|
48
|
+
welcomeText?: string;
|
|
49
|
+
workspaceLabel?: string;
|
|
37
50
|
}
|
|
38
51
|
declare const AnimatedHeader: React.FC<AnimatedHeaderProps>;
|
|
39
52
|
export default AnimatedHeader;
|
|
@@ -25,25 +25,26 @@ var _PauseFilled, _PlayFilledAlt;
|
|
|
25
25
|
|
|
26
26
|
const AnimatedHeader = _ref => {
|
|
27
27
|
let {
|
|
28
|
-
|
|
28
|
+
allTiles,
|
|
29
|
+
allWorkspaces,
|
|
29
30
|
description,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
handleHeaderItemsToString,
|
|
32
|
+
handleWorkspaceItemsToString,
|
|
33
|
+
headerAnimation,
|
|
34
|
+
headerStatic,
|
|
34
35
|
productName = '[Product name]',
|
|
35
|
-
selectedWorkspace,
|
|
36
|
-
setSelectedWorkspace,
|
|
37
|
-
allWorkspaces,
|
|
38
36
|
selectedTileGroup,
|
|
37
|
+
selectedWorkspace,
|
|
39
38
|
setSelectedTileGroup,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
setSelectedWorkspace,
|
|
40
|
+
tasksConfig,
|
|
41
|
+
userName,
|
|
42
|
+
welcomeText,
|
|
43
|
+
workspaceLabel = `Open in: ${userName}'s workspace` || `Select a workspace`
|
|
43
44
|
} = _ref;
|
|
44
45
|
const prefix = usePrefix.usePrefix();
|
|
45
46
|
const blockClass = `${prefix}--animated-header`;
|
|
46
|
-
|
|
47
|
+
const animationContainer = /*#__PURE__*/React.createRef();
|
|
47
48
|
const [open, setOpen] = React.useState(true);
|
|
48
49
|
const [playing, setPlaying] = React.useState(true);
|
|
49
50
|
const [headingTextAnimation, setHeadingTextAnimation] = React.useState('');
|
|
@@ -67,7 +68,7 @@ const AnimatedHeader = _ref => {
|
|
|
67
68
|
setPlaying(!playing);
|
|
68
69
|
};
|
|
69
70
|
React.useEffect(() => {
|
|
70
|
-
|
|
71
|
+
const animation = lottie.default.loadAnimation({
|
|
71
72
|
container: animationContainer.current,
|
|
72
73
|
animationData: headerAnimation,
|
|
73
74
|
renderer: 'svg',
|
|
@@ -88,7 +89,7 @@ const AnimatedHeader = _ref => {
|
|
|
88
89
|
animation.setSpeed(lottieLoopSpeed);
|
|
89
90
|
animation.playSegments([animationData.markers.at(1).tm, animationData.op], true);
|
|
90
91
|
}
|
|
91
|
-
if (
|
|
92
|
+
if (isReduced) {
|
|
92
93
|
// reduced motion on
|
|
93
94
|
animation.addEventListener('DOMLoaded', reducedMotion);
|
|
94
95
|
} else {
|
|
@@ -100,9 +101,15 @@ const AnimatedHeader = _ref => {
|
|
|
100
101
|
// Run Looped Animation
|
|
101
102
|
animation.addEventListener('complete', loop);
|
|
102
103
|
}
|
|
103
|
-
|
|
104
|
+
return () => {
|
|
105
|
+
animation?.removeEventListener('DOMLoaded', reducedMotion);
|
|
106
|
+
animation?.removeEventListener('DOMLoaded', load);
|
|
107
|
+
animation?.removeEventListener('complete', loop);
|
|
108
|
+
};
|
|
109
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
110
|
+
}, [headerAnimation, isReduced]);
|
|
104
111
|
return /*#__PURE__*/React.createElement("section", {
|
|
105
|
-
className: `${blockClass}
|
|
112
|
+
className: `${blockClass}${!open ? ` ${collapsed}` : ''}`
|
|
106
113
|
}, /*#__PURE__*/React.createElement(react.Grid, null, /*#__PURE__*/React.createElement("div", {
|
|
107
114
|
className: `${blockClass}__gradient--overlay`
|
|
108
115
|
}), /*#__PURE__*/React.createElement("div", {
|
|
@@ -125,14 +132,14 @@ const AnimatedHeader = _ref => {
|
|
|
125
132
|
lg: 16
|
|
126
133
|
}, /*#__PURE__*/React.createElement(react.Tooltip, {
|
|
127
134
|
align: "bottom",
|
|
128
|
-
label:
|
|
135
|
+
label: `${welcomeText}, ${userName}`
|
|
129
136
|
}, /*#__PURE__*/React.createElement("h1", {
|
|
130
137
|
className: `${blockClass}__heading ${headingTextAnimation}`
|
|
131
138
|
}, /*#__PURE__*/React.createElement("span", {
|
|
132
139
|
className: `${blockClass}__heading-welcome`
|
|
133
|
-
}, "
|
|
140
|
+
}, welcomeText, ",", ' '), /*#__PURE__*/React.createElement("span", {
|
|
134
141
|
className: `${blockClass}__heading-name`
|
|
135
|
-
},
|
|
142
|
+
}, userName)))), (description || tasksConfig && tasksConfig.type === 'button' && tasksConfig.button?.text || tasksConfig && tasksConfig.type === 'dropdown' && tasksConfig.dropdown?.label) && /*#__PURE__*/React.createElement(react.Column, {
|
|
136
143
|
sm: 4,
|
|
137
144
|
md: 8,
|
|
138
145
|
lg: 4,
|
|
@@ -142,24 +149,23 @@ const AnimatedHeader = _ref => {
|
|
|
142
149
|
label: description
|
|
143
150
|
}, /*#__PURE__*/React.createElement("h2", {
|
|
144
151
|
className: `${blockClass}__description`
|
|
145
|
-
}, description)),
|
|
152
|
+
}, description)), tasksConfig?.button?.text && /*#__PURE__*/React.createElement(react.Button, {
|
|
146
153
|
className: `${blockClass}__button`,
|
|
147
|
-
kind:
|
|
148
|
-
renderIcon:
|
|
149
|
-
|
|
154
|
+
kind: tasksConfig.button.type,
|
|
155
|
+
renderIcon: tasksConfig.button.icon,
|
|
156
|
+
href: tasksConfig.button.href
|
|
157
|
+
}, tasksConfig.button.text), !tasksConfig?.button?.text && tasksConfig && tasksConfig.type === 'dropdown' && allTiles && /*#__PURE__*/React.createElement("div", {
|
|
150
158
|
className: `${blockClass}__header-dropdown--container`
|
|
151
159
|
}, /*#__PURE__*/React.createElement(react.Dropdown, {
|
|
152
160
|
id: `${blockClass}__header-dropdown`,
|
|
153
161
|
className: `${blockClass}__header-dropdown`,
|
|
154
162
|
size: "md",
|
|
155
|
-
autoAlign: true,
|
|
156
163
|
titleText: "Label",
|
|
157
|
-
|
|
158
|
-
label: allTiles[0].name || 'Select an option below',
|
|
164
|
+
label: tasksConfig.dropdown?.label || allTiles[0].label,
|
|
159
165
|
hideLabel: true,
|
|
160
166
|
type: "inline",
|
|
161
167
|
items: allTiles,
|
|
162
|
-
itemToString: item => item
|
|
168
|
+
itemToString: item => handleHeaderItemsToString(item),
|
|
163
169
|
onChange: e => setSelectedTileGroup(e)
|
|
164
170
|
}))), selectedTileGroup && /*#__PURE__*/React.createElement(react.Column, {
|
|
165
171
|
sm: 4,
|
|
@@ -173,11 +179,11 @@ const AnimatedHeader = _ref => {
|
|
|
173
179
|
className: `${blockClass}__workspace`,
|
|
174
180
|
size: "sm",
|
|
175
181
|
titleText: "Label",
|
|
176
|
-
label:
|
|
182
|
+
label: workspaceLabel,
|
|
177
183
|
hideLabel: true,
|
|
178
184
|
type: "inline",
|
|
179
185
|
items: allWorkspaces,
|
|
180
|
-
itemToString: item => item
|
|
186
|
+
itemToString: item => handleWorkspaceItemsToString(item),
|
|
181
187
|
onChange: e => setSelectedWorkspace(e)
|
|
182
188
|
})), /*#__PURE__*/React.createElement("div", {
|
|
183
189
|
className: `${blockClass}__tiles-container`
|
|
@@ -219,76 +225,85 @@ const AnimatedHeader = _ref => {
|
|
|
219
225
|
AnimatedHeader.displayName = 'Animated Header';
|
|
220
226
|
AnimatedHeader.propTypes = {
|
|
221
227
|
/**
|
|
222
|
-
*
|
|
228
|
+
* Array of each tile group setup
|
|
223
229
|
*/
|
|
224
|
-
|
|
230
|
+
allTiles: PropTypes.arrayOf(PropTypes.object),
|
|
225
231
|
/**
|
|
226
|
-
*
|
|
232
|
+
* Array of all workspace options
|
|
227
233
|
*/
|
|
228
|
-
|
|
234
|
+
allWorkspaces: PropTypes.arrayOf(PropTypes.object),
|
|
235
|
+
/**
|
|
236
|
+
* Specify an optional className to be added to your Animated Header
|
|
237
|
+
*/
|
|
238
|
+
className: PropTypes.string,
|
|
229
239
|
/**
|
|
230
240
|
* Provide short sentence in max. 3 lines related to product context
|
|
231
241
|
*/
|
|
232
242
|
description: PropTypes.string,
|
|
233
243
|
/**
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
244
|
+
* Helper function passed to downshift that allows the library to render a
|
|
245
|
+
* given item to a string label. By default, it extracts the `label` field
|
|
246
|
+
* from a given item to serve as the item label in the list. (Dropdown
|
|
247
|
+
* under description in header).
|
|
237
248
|
*/
|
|
238
|
-
|
|
249
|
+
handleHeaderItemsToString: PropTypes.func,
|
|
239
250
|
/**
|
|
240
|
-
*
|
|
251
|
+
* Helper function passed to downshift that allows the library to render a
|
|
252
|
+
* given item to a string label. By default, it extracts the `label` field
|
|
253
|
+
* from a given item to serve as the item label in the list. (Dropdown
|
|
254
|
+
* related to workspace selection).
|
|
241
255
|
*/
|
|
242
|
-
|
|
256
|
+
handleWorkspaceItemsToString: PropTypes.func,
|
|
243
257
|
/**
|
|
244
|
-
*
|
|
245
|
-
*
|
|
258
|
+
* In-product imagery / lottie animation (.json) dim. 1312 x 738
|
|
259
|
+
* (to update headerAnimation content storybook requires remount in toolbar)
|
|
246
260
|
*/
|
|
247
|
-
|
|
261
|
+
headerAnimation: PropTypes.object,
|
|
248
262
|
/**
|
|
249
|
-
*
|
|
263
|
+
* In-product imagery / static imagery dim. 1312 x 738
|
|
264
|
+
* Only active when headerAnimation is not in use
|
|
250
265
|
*/
|
|
251
|
-
|
|
266
|
+
headerStatic: PropTypes.object,
|
|
252
267
|
/**
|
|
253
268
|
* Provide current product name
|
|
254
269
|
*/
|
|
255
270
|
productName: PropTypes.string,
|
|
271
|
+
/**
|
|
272
|
+
* The tile group that is active in the header
|
|
273
|
+
* ex. "AI Chat Tile w/ two glass tiles", "Four glass tiles", ect.
|
|
274
|
+
*/
|
|
275
|
+
selectedTileGroup: PropTypes.object,
|
|
256
276
|
/**
|
|
257
277
|
* Object containing workspace selection
|
|
258
278
|
* `Open in: "_"`
|
|
259
279
|
*/
|
|
260
280
|
selectedWorkspace: PropTypes.object,
|
|
261
281
|
/**
|
|
262
|
-
* Provide function to be called when switching
|
|
263
|
-
*/
|
|
264
|
-
setSelectedWorkspace: PropTypes.func,
|
|
265
|
-
/**
|
|
266
|
-
* Array of all workspace options
|
|
282
|
+
* Provide function to be called when switching selected tile group
|
|
267
283
|
*/
|
|
268
|
-
|
|
284
|
+
setSelectedTileGroup: PropTypes.func,
|
|
269
285
|
/**
|
|
270
|
-
*
|
|
271
|
-
* ex. "AI Chat Tile w/ two glass tiles", "Four glass tiles", ect.
|
|
286
|
+
* Provide function to be called when switching workspace selection
|
|
272
287
|
*/
|
|
273
|
-
|
|
288
|
+
setSelectedWorkspace: PropTypes.func,
|
|
274
289
|
/**
|
|
275
|
-
*
|
|
290
|
+
* Configuration for Carbon button or dropdown menu in header. Customized
|
|
291
|
+
* tasks are used to allow users that have multiple roles and permissions
|
|
292
|
+
* to experience better tailored content based on their need.
|
|
276
293
|
*/
|
|
277
|
-
|
|
294
|
+
tasksConfig: PropTypes.object,
|
|
278
295
|
/**
|
|
279
|
-
*
|
|
296
|
+
* Specify the current username of active user
|
|
280
297
|
*/
|
|
281
|
-
|
|
298
|
+
userName: PropTypes.string,
|
|
282
299
|
/**
|
|
283
|
-
*
|
|
284
|
-
* (to update headerAnimation content storybook requires remount in toolbar)
|
|
300
|
+
* Specify the current welcome text on the header
|
|
285
301
|
*/
|
|
286
|
-
|
|
302
|
+
welcomeText: PropTypes.string,
|
|
287
303
|
/**
|
|
288
|
-
*
|
|
289
|
-
* Only active when headerAnimation is not in use
|
|
304
|
+
* Specify the default workspace label above the tiles
|
|
290
305
|
*/
|
|
291
|
-
|
|
306
|
+
workspaceLabel: PropTypes.string
|
|
292
307
|
};
|
|
293
308
|
|
|
294
309
|
exports.default = AnimatedHeader;
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
import React from 'react';
|
|
10
10
|
/** Primary UI component for user interaction */
|
|
11
11
|
interface AIPromptTileProps {
|
|
12
|
-
id?: string;
|
|
13
12
|
href?: string;
|
|
14
|
-
|
|
13
|
+
id?: string;
|
|
15
14
|
mainIcon?: string;
|
|
16
|
-
|
|
15
|
+
open?: boolean;
|
|
17
16
|
productName?: string;
|
|
17
|
+
title?: string;
|
|
18
18
|
}
|
|
19
19
|
export declare const AIPromptTile: React.FC<AIPromptTileProps>;
|
|
20
20
|
export {};
|
|
@@ -19,12 +19,12 @@ var _AILabel;
|
|
|
19
19
|
|
|
20
20
|
const AIPromptTile = _ref => {
|
|
21
21
|
let {
|
|
22
|
-
id,
|
|
23
22
|
href,
|
|
24
|
-
|
|
23
|
+
id,
|
|
25
24
|
mainIcon,
|
|
26
|
-
|
|
27
|
-
productName
|
|
25
|
+
open,
|
|
26
|
+
productName,
|
|
27
|
+
title
|
|
28
28
|
} = _ref;
|
|
29
29
|
const prefix = usePrefix.usePrefix();
|
|
30
30
|
const blockClass = `${prefix}--animated-header__ai-prompt-tile`;
|
|
@@ -37,7 +37,9 @@ const AIPromptTile = _ref => {
|
|
|
37
37
|
};
|
|
38
38
|
const openInNewTab = url => {
|
|
39
39
|
const newWindow = window.open(url, '_blank', 'noopener,noreferrer');
|
|
40
|
-
if (newWindow)
|
|
40
|
+
if (newWindow) {
|
|
41
|
+
newWindow.opener = null;
|
|
42
|
+
}
|
|
41
43
|
};
|
|
42
44
|
const handleTextInputKeyDown = event => {
|
|
43
45
|
if (event.key === 'Enter') {
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
import React from 'react';
|
|
10
10
|
/** Primary UI component for user interaction */
|
|
11
11
|
interface GlassTileProps {
|
|
12
|
-
id?: string;
|
|
13
12
|
href?: string;
|
|
14
|
-
|
|
13
|
+
id?: string;
|
|
15
14
|
mainIcon?: string;
|
|
15
|
+
open?: boolean;
|
|
16
16
|
secondaryIcon?: string;
|
|
17
|
-
title?: string;
|
|
18
17
|
subtitle?: string;
|
|
18
|
+
title?: string;
|
|
19
19
|
}
|
|
20
20
|
export declare const GlassTile: React.FC<GlassTileProps>;
|
|
21
21
|
export {};
|
|
@@ -16,13 +16,13 @@ var usePrefix = require('../../../node_modules/@carbon-labs/utilities/es/usePref
|
|
|
16
16
|
|
|
17
17
|
const GlassTile = _ref => {
|
|
18
18
|
let {
|
|
19
|
-
id,
|
|
20
19
|
href,
|
|
21
|
-
|
|
20
|
+
id,
|
|
22
21
|
mainIcon,
|
|
22
|
+
open,
|
|
23
23
|
secondaryIcon,
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
subtitle,
|
|
25
|
+
title
|
|
26
26
|
} = _ref;
|
|
27
27
|
const prefix = usePrefix.usePrefix();
|
|
28
28
|
const blockClass = `${prefix}--animated-header__glass-tile`;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
11
|
|
|
12
|
-
var index = require('
|
|
12
|
+
var index = require('../node_modules/@carbon/icon-helpers/es/index.js');
|
|
13
13
|
var PropTypes = require('prop-types');
|
|
14
14
|
var React = require('react');
|
|
15
15
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carbon-labs/react-animated-header",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"provenance": true
|
|
@@ -32,5 +32,5 @@
|
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@carbon-labs/utilities": "canary"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "00c3ca091be01c1085927e424eae56588e74b7fe"
|
|
36
36
|
}
|
|
@@ -16,20 +16,24 @@
|
|
|
16
16
|
|
|
17
17
|
$prefix: 'clabs--animated-header' !default;
|
|
18
18
|
|
|
19
|
+
:root {
|
|
20
|
+
@include theme(themes.$g10);
|
|
21
|
+
}
|
|
22
|
+
|
|
19
23
|
[data-carbon-theme='white'] {
|
|
20
|
-
@include theme(themes.$white
|
|
24
|
+
@include theme(themes.$white);
|
|
21
25
|
}
|
|
22
26
|
|
|
23
27
|
[data-carbon-theme='g10'] {
|
|
24
|
-
@include theme(themes.$g10
|
|
28
|
+
@include theme(themes.$g10);
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
[data-carbon-theme='g90'] {
|
|
28
|
-
@include theme(themes.$g90
|
|
32
|
+
@include theme(themes.$g90);
|
|
29
33
|
}
|
|
30
34
|
|
|
31
35
|
[data-carbon-theme='g100'] {
|
|
32
|
-
@include theme(themes.$g100
|
|
36
|
+
@include theme(themes.$g100);
|
|
33
37
|
}
|
|
34
38
|
|
|
35
39
|
body {
|
|
@@ -42,9 +46,9 @@ body {
|
|
|
42
46
|
.#{$prefix} {
|
|
43
47
|
position: relative;
|
|
44
48
|
display: flex;
|
|
45
|
-
overflow:
|
|
49
|
+
overflow: visible;
|
|
46
50
|
background: $background;
|
|
47
|
-
inline-size:
|
|
51
|
+
inline-size: 100%;
|
|
48
52
|
max-block-size: 90vh;
|
|
49
53
|
outline: 1px solid transparent;
|
|
50
54
|
padding-block: 0 $spacing-10;
|
|
@@ -58,6 +62,7 @@ body {
|
|
|
58
62
|
.#{$prefix}__static--container {
|
|
59
63
|
position: absolute;
|
|
60
64
|
display: flex;
|
|
65
|
+
overflow: hidden;
|
|
61
66
|
justify-content: flex-end;
|
|
62
67
|
|
|
63
68
|
block-size: 100%;
|
|
@@ -125,6 +130,7 @@ body {
|
|
|
125
130
|
padding-inline: var(--cds-grid-margin);
|
|
126
131
|
}
|
|
127
132
|
|
|
133
|
+
:root .#{$prefix}__container--gradient,
|
|
128
134
|
[data-carbon-theme='white'] .#{$prefix}__container--gradient,
|
|
129
135
|
[data-carbon-theme='g10'] .#{$prefix}__container--gradient {
|
|
130
136
|
background: linear-gradient(0deg, #e0e0e0bf 0%, transparent 100%);
|
|
@@ -295,6 +301,7 @@ body {
|
|
|
295
301
|
.#{$prefix}__lottie-animation--container {
|
|
296
302
|
position: absolute;
|
|
297
303
|
display: flex;
|
|
304
|
+
overflow: hidden;
|
|
298
305
|
justify-content: flex-end;
|
|
299
306
|
|
|
300
307
|
block-size: 100%;
|
|
@@ -344,6 +351,7 @@ body {
|
|
|
344
351
|
inset-inline-end: 0;
|
|
345
352
|
}
|
|
346
353
|
|
|
354
|
+
:root .#{$prefix}__button-collapse--gradient,
|
|
347
355
|
[data-carbon-theme='white'] .#{$prefix}__button-collapse--gradient,
|
|
348
356
|
[data-carbon-theme='g10'] .#{$prefix}__button-collapse--gradient {
|
|
349
357
|
background: radial-gradient(
|
|
@@ -372,6 +380,7 @@ body {
|
|
|
372
380
|
}
|
|
373
381
|
|
|
374
382
|
.#{$prefix}--collapsed {
|
|
383
|
+
overflow: hidden;
|
|
375
384
|
padding: 0;
|
|
376
385
|
max-block-size: $spacing-09;
|
|
377
386
|
outline: 1px solid $border-subtle-00;
|
|
@@ -395,10 +404,6 @@ body {
|
|
|
395
404
|
display: none;
|
|
396
405
|
}
|
|
397
406
|
|
|
398
|
-
.#{$prefix}__workspace {
|
|
399
|
-
margin-block-start: $spacing-06;
|
|
400
|
-
}
|
|
401
|
-
|
|
402
407
|
.#{$prefix}__content {
|
|
403
408
|
display: none;
|
|
404
409
|
}
|
|
@@ -437,6 +442,7 @@ body {
|
|
|
437
442
|
|
|
438
443
|
.#{$prefix}__content {
|
|
439
444
|
display: flex;
|
|
445
|
+
margin-block-start: $spacing-06;
|
|
440
446
|
}
|
|
441
447
|
|
|
442
448
|
.#{$prefix}__button-collapse--container .cds--popover-container {
|
|
@@ -493,7 +499,7 @@ body {
|
|
|
493
499
|
background: linear-gradient(90deg, $background 25%, transparent 75%);
|
|
494
500
|
}
|
|
495
501
|
|
|
496
|
-
.#{$prefix}
|
|
502
|
+
.#{$prefix}__content {
|
|
497
503
|
margin-block-start: 0;
|
|
498
504
|
}
|
|
499
505
|
|
|
@@ -19,7 +19,7 @@ $prefix: 'clabs--animated-header__ai-prompt-tile' !default;
|
|
|
19
19
|
display: flex;
|
|
20
20
|
-webkit-backdrop-filter: blur(3px);
|
|
21
21
|
backdrop-filter: blur(3px);
|
|
22
|
-
min-block-size:
|
|
22
|
+
min-block-size: 192px;
|
|
23
23
|
text-decoration: none;
|
|
24
24
|
}
|
|
25
25
|
|
|
@@ -35,14 +35,14 @@ $prefix: 'clabs--animated-header__ai-prompt-tile' !default;
|
|
|
35
35
|
flex: 1;
|
|
36
36
|
flex-direction: column;
|
|
37
37
|
justify-content: flex-start;
|
|
38
|
-
padding: $spacing-05
|
|
38
|
+
padding: $spacing-05;
|
|
39
39
|
background-color: transparent;
|
|
40
40
|
color: $text-primary;
|
|
41
|
-
gap: $spacing-05;
|
|
42
41
|
opacity: 1;
|
|
43
42
|
transition: opacity 500ms linear;
|
|
44
43
|
}
|
|
45
44
|
|
|
45
|
+
:root .#{$prefix}--body::before,
|
|
46
46
|
[data-carbon-theme='white'] .#{$prefix}--body::before,
|
|
47
47
|
[data-carbon-theme='g10'] .#{$prefix}--body::before {
|
|
48
48
|
background-color: $layer-01;
|
|
@@ -101,6 +101,7 @@ $prefix: 'clabs--animated-header__ai-prompt-tile' !default;
|
|
|
101
101
|
z-index: 3;
|
|
102
102
|
display: flex;
|
|
103
103
|
justify-content: space-between;
|
|
104
|
+
margin-block-end: $spacing-05;
|
|
104
105
|
}
|
|
105
106
|
|
|
106
107
|
.#{$prefix}--title {
|
|
@@ -127,7 +128,12 @@ $prefix: 'clabs--animated-header__ai-prompt-tile' !default;
|
|
|
127
128
|
z-index: 3;
|
|
128
129
|
display: flex;
|
|
129
130
|
justify-content: flex-end;
|
|
130
|
-
|
|
131
|
+
margin-block: $spacing-03 calc(-1 * $spacing-05);
|
|
132
|
+
margin-inline-end: calc(-1 * $spacing-05);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.#{$prefix}--footer > a {
|
|
136
|
+
padding: 14px $spacing-05;
|
|
131
137
|
}
|
|
132
138
|
|
|
133
139
|
.#{$prefix}--subtitle {
|
|
@@ -144,6 +150,7 @@ $prefix: 'clabs--animated-header__ai-prompt-tile' !default;
|
|
|
144
150
|
border: 1px solid $border-subtle-01;
|
|
145
151
|
border-radius: 8px;
|
|
146
152
|
background-color: $layer-01;
|
|
153
|
+
margin-block-start: $spacing-06;
|
|
147
154
|
transition: border 200ms motion.motion(standard, expressive);
|
|
148
155
|
}
|
|
149
156
|
|