@carbon-labs/react-animated-header 0.31.0 → 0.33.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.
Files changed (52) hide show
  1. package/es/__stories__/AnimatedHeader.stories.d.ts +148 -1944
  2. package/es/__stories__/data/index.d.ts +52 -225
  3. package/es/_virtual/lottie.js +1 -1
  4. package/es/components/AnimatedHeader/AnimatedHeader.d.ts +11 -27
  5. package/es/components/AnimatedHeader/AnimatedHeader.js +42 -36
  6. package/es/components/AnimatedHeader/types.d.ts +24 -0
  7. package/es/components/HeaderTitle/HeaderTitle.d.ts +1 -1
  8. package/es/components/TasksController/TasksController.d.ts +1 -1
  9. package/es/components/Tiles/AIPromptTile/AIPromptTile.d.ts +10 -11
  10. package/es/components/Tiles/AIPromptTile/AIPromptTile.js +14 -16
  11. package/es/components/Tiles/AITile/AITile.d.ts +26 -0
  12. package/es/components/Tiles/AITile/AITile.js +65 -0
  13. package/es/components/Tiles/AITile/AITileBody.d.ts +19 -0
  14. package/es/components/Tiles/AITile/AITileBody.js +59 -0
  15. package/es/components/Tiles/BaseTile/BaseTile.d.ts +15 -18
  16. package/es/components/Tiles/BaseTile/BaseTile.js +34 -4
  17. package/es/components/Tiles/GlassTile/GlassTile.d.ts +13 -9
  18. package/es/components/Tiles/GlassTile/GlassTile.js +13 -15
  19. package/es/components/Tiles/GlassTile/GlassTileBody.d.ts +4 -4
  20. package/es/components/Tiles/GlassTile/GlassTileBody.js +6 -6
  21. package/es/components/Tiles/index.d.ts +2 -1
  22. package/es/index.d.ts +3 -2
  23. package/es/node_modules/lottie-web/build/player/lottie.js +194 -193
  24. package/lib/__stories__/AnimatedHeader.stories.d.ts +148 -1944
  25. package/lib/__stories__/data/index.d.ts +52 -225
  26. package/lib/_virtual/lottie.js +1 -1
  27. package/lib/components/AnimatedHeader/AnimatedHeader.d.ts +11 -27
  28. package/lib/components/AnimatedHeader/AnimatedHeader.js +42 -36
  29. package/lib/components/AnimatedHeader/types.d.ts +24 -0
  30. package/lib/components/HeaderTitle/HeaderTitle.d.ts +1 -1
  31. package/lib/components/TasksController/TasksController.d.ts +1 -1
  32. package/lib/components/Tiles/AIPromptTile/AIPromptTile.d.ts +10 -11
  33. package/lib/components/Tiles/AIPromptTile/AIPromptTile.js +14 -16
  34. package/lib/components/Tiles/AITile/AITile.d.ts +26 -0
  35. package/lib/components/Tiles/AITile/AITile.js +70 -0
  36. package/lib/components/Tiles/AITile/AITileBody.d.ts +19 -0
  37. package/lib/components/Tiles/AITile/AITileBody.js +61 -0
  38. package/lib/components/Tiles/BaseTile/BaseTile.d.ts +15 -18
  39. package/lib/components/Tiles/BaseTile/BaseTile.js +34 -4
  40. package/lib/components/Tiles/GlassTile/GlassTile.d.ts +13 -9
  41. package/lib/components/Tiles/GlassTile/GlassTile.js +13 -15
  42. package/lib/components/Tiles/GlassTile/GlassTileBody.d.ts +4 -4
  43. package/lib/components/Tiles/GlassTile/GlassTileBody.js +6 -6
  44. package/lib/components/Tiles/index.d.ts +2 -1
  45. package/lib/index.d.ts +3 -2
  46. package/lib/node_modules/lottie-web/build/player/lottie.js +194 -193
  47. package/package.json +2 -2
  48. package/scss/AnimatedHeader/animated-header.scss +66 -36
  49. package/scss/Tiles/AIPromptTile/ai-prompt-tile.scss +14 -2
  50. package/scss/Tiles/AITile/ai-tile.scss +222 -0
  51. package/scss/Tiles/GlassTile/glass-tile.scss +14 -2
  52. package/scss/animated-header.scss +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carbon-labs/react-animated-header",
3
- "version": "0.31.0",
3
+ "version": "0.33.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -45,5 +45,5 @@
45
45
  "devDependencies": {
46
46
  "@carbon-labs/utilities": "canary"
47
47
  },
48
- "gitHead": "5484fe3c1663b43ab9131b53ec1d1b9126b1640a"
48
+ "gitHead": "2cb890436fa0c3e0f5a0b9738f2d59fb1a50eb31"
49
49
  }
@@ -46,17 +46,37 @@ body {
46
46
  .#{$prefix} {
47
47
  position: relative;
48
48
  display: flex;
49
- overflow: visible;
50
49
  background: $background;
51
50
  inline-size: 100%;
52
- max-block-size: 200vh;
53
- outline: 1px solid transparent;
54
- padding-block: 0 $spacing-10;
55
- transition: padding 500ms motion.motion(standard, expressive),
56
- max-block-size 500ms motion.motion(standard, expressive), color 200ms linear,
57
- background-color 200ms linear,
58
- outline 500ms motion.motion(standard, expressive);
51
+ max-block-size: 85vh;
59
52
  writing-mode: horizontal-tb;
53
+
54
+ &[data-expanded='true'] {
55
+ overflow: visible;
56
+ max-block-size: 85vh;
57
+ outline: 1px solid transparent;
58
+
59
+ @media (prefers-reduced-motion: no-preference) {
60
+ transition: max-block-size 500ms motion.motion(entrance, expressive),
61
+ color 200ms linear, background-color 200ms linear,
62
+ outline 500ms motion.motion(entrance, expressive);
63
+ }
64
+ }
65
+
66
+ &[data-expanded='false'] {
67
+ overflow: hidden;
68
+ max-block-size: $spacing-09;
69
+ outline: 1px solid $border-subtle-00;
70
+
71
+ @media (prefers-reduced-motion: no-preference) {
72
+ transition: max-block-size 500ms motion.motion(exit, expressive),
73
+ outline 500ms motion.motion(exit, expressive);
74
+ }
75
+ }
76
+ }
77
+
78
+ .#{$prefix}__grid {
79
+ padding-block: 0 $spacing-10;
60
80
  }
61
81
 
62
82
  .#{$prefix}__static--container {
@@ -88,8 +108,6 @@ body {
88
108
 
89
109
  background-position: top right;
90
110
  background-repeat: no-repeat;
91
- transform: translateY(0);
92
- transition: transform 500ms motion.motion(standard, expressive);
93
111
  }
94
112
 
95
113
  .#{$prefix}__ui-heading {
@@ -151,12 +169,20 @@ body {
151
169
  flex-direction: column;
152
170
  gap: $spacing-07;
153
171
  margin-block-start: $spacing-08;
154
- opacity: 1;
155
- transition: opacity 500ms linear;
156
- }
157
172
 
158
- .#{$prefix}__left-area-container--collapsed {
159
- opacity: 0;
173
+ @media (prefers-reduced-motion: no-preference) {
174
+ transition: opacity 500ms linear;
175
+ }
176
+
177
+ &[data-expanded='true'] {
178
+ opacity: 1;
179
+ transition-delay: 110ms;
180
+ }
181
+
182
+ &[data-expanded='false'] {
183
+ opacity: 0;
184
+ transition-delay: 0ms;
185
+ }
160
186
  }
161
187
 
162
188
  .#{$prefix}__description {
@@ -238,15 +264,25 @@ body {
238
264
  flex-direction: column;
239
265
  margin: 0;
240
266
  margin-block-start: $spacing-08;
241
- opacity: 1;
242
- transition: opacity 500ms linear;
243
267
  }
244
268
 
245
269
  .#{$prefix}__workspace--container {
246
270
  margin-block-start: calc(-1 * $spacing-08);
247
271
  min-block-size: $spacing-08;
248
- opacity: 1;
249
- transition: opacity 500ms linear;
272
+
273
+ @media (prefers-reduced-motion: no-preference) {
274
+ transition: opacity 500ms linear;
275
+ }
276
+
277
+ &[data-expanded='true'] {
278
+ opacity: 1;
279
+ transition-delay: 110ms;
280
+ }
281
+
282
+ &[data-expanded='false'] {
283
+ opacity: 0;
284
+ transition-delay: 0ms;
285
+ }
250
286
  }
251
287
 
252
288
  .#{$prefix}__workspace {
@@ -264,10 +300,6 @@ body {
264
300
  gap: $spacing-05;
265
301
  }
266
302
 
267
- .#{$prefix}__content--collapsed {
268
- opacity: 0;
269
- }
270
-
271
303
  .#{$prefix}__tile {
272
304
  animation: 500ms motion.motion(standard, expressive) 0ms 1 slide-in;
273
305
  animation-fill-mode: both;
@@ -326,12 +358,17 @@ body {
326
358
  z-index: 0;
327
359
  display: flex;
328
360
 
329
- transform: translateY(0);
330
- transition: transform 500ms motion.motion(standard, expressive);
331
- }
361
+ @media (prefers-reduced-motion: no-preference) {
362
+ transition: transform 500ms motion.motion(standard, expressive);
363
+ }
332
364
 
333
- .#{$prefix}__lottie-animation--collapsed {
334
- transform: translateY(-16px);
365
+ &[data-expanded='true'] {
366
+ transform: translateY(0);
367
+ }
368
+
369
+ &[data-expanded='false'] {
370
+ transform: translateY(-16px);
371
+ }
335
372
  }
336
373
 
337
374
  .#{$prefix}__button-collapse--container {
@@ -383,13 +420,6 @@ body {
383
420
  color: $text-primary;
384
421
  }
385
422
 
386
- .#{$prefix}--collapsed {
387
- overflow: hidden;
388
- padding: 0;
389
- max-block-size: $spacing-09;
390
- outline: 1px solid $border-subtle-00;
391
- }
392
-
393
423
  // Small
394
424
  @media only screen and (width >= 20rem) {
395
425
  .#{$prefix}__lottie-animation {
@@ -564,7 +594,7 @@ body {
564
594
  /*
565
595
  If the user has expressed their preference for
566
596
  reduced motion, then don't use animations
567
- */
597
+ */
568
598
  @media (prefers-reduced-motion: reduce) {
569
599
  .#{$prefix},
570
600
  .#{$prefix}__static,
@@ -50,8 +50,20 @@ $prefix: 'clabs--animated-header__ai-prompt-tile' !default;
50
50
  padding: $spacing-05;
51
51
  background-color: transparent;
52
52
  color: $text-primary;
53
- opacity: 1;
54
- transition: opacity 500ms linear;
53
+
54
+ @media (prefers-reduced-motion: no-preference) {
55
+ transition: opacity 500ms linear;
56
+ }
57
+
58
+ &[data-expanded='true'] {
59
+ opacity: 1;
60
+ transition-delay: 110ms;
61
+ }
62
+
63
+ &[data-expanded='false'] {
64
+ opacity: 0;
65
+ transition-delay: 0ms;
66
+ }
55
67
  }
56
68
 
57
69
  /* Semi-transparent background layer */
@@ -0,0 +1,222 @@
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
+ @use '@carbon/styles/scss/theme' as *;
10
+ @use '@carbon/styles/scss/colors' as *;
11
+ @use '@carbon/styles/scss/spacing' as *;
12
+ @use '@carbon/styles/scss/type' as *;
13
+ @use '@carbon/motion';
14
+
15
+ $prefix: 'clabs--animated-header__ai-tile' !default;
16
+
17
+ .#{$prefix} {
18
+ position: relative;
19
+ display: flex;
20
+ -webkit-backdrop-filter: blur(3px);
21
+ backdrop-filter: blur(3px);
22
+ min-block-size: 192px;
23
+ text-decoration: none;
24
+ }
25
+
26
+ .#{$prefix}[aria-disabled='true'] {
27
+ outline: none;
28
+
29
+ * {
30
+ color: $text-disabled;
31
+ fill: $text-disabled;
32
+ pointer-events: none;
33
+ }
34
+ }
35
+
36
+ .#{$prefix}:hover,
37
+ .#{$prefix}:active,
38
+ .#{$prefix}:focus {
39
+ text-decoration: none;
40
+ }
41
+
42
+ .#{$prefix}--body {
43
+ position: relative;
44
+ z-index: 0;
45
+ display: flex;
46
+ overflow: hidden;
47
+ flex: 1;
48
+ flex-direction: column;
49
+ justify-content: flex-start;
50
+ padding: $spacing-05;
51
+ background-color: transparent;
52
+ color: $text-primary;
53
+
54
+ @media (prefers-reduced-motion: no-preference) {
55
+ transition: opacity 500ms linear;
56
+ }
57
+
58
+ &[data-expanded='true'] {
59
+ opacity: 1;
60
+ transition-delay: 110ms;
61
+ }
62
+
63
+ &[data-expanded='false'] {
64
+ opacity: 0;
65
+ transition-delay: 0ms;
66
+ }
67
+ }
68
+
69
+ /* Semi-transparent background layer */
70
+ .#{$prefix}--body-background {
71
+ position: absolute;
72
+ z-index: 1;
73
+ background-color: $layer-01;
74
+ inset: 0;
75
+ opacity: 0.7;
76
+ pointer-events: none;
77
+ transition: opacity 150ms motion.motion(standard, productive);
78
+ }
79
+
80
+ :root .#{$prefix}--body-background,
81
+ [data-carbon-theme='white'] .#{$prefix}--body-background,
82
+ [data-carbon-theme='g10'] .#{$prefix}--body-background {
83
+ background-color: $layer-01;
84
+ }
85
+
86
+ [data-carbon-theme='g90'] .#{$prefix}--body-background,
87
+ [data-carbon-theme='g100'] .#{$prefix}--body-background {
88
+ background-color: $layer-hover-01;
89
+ }
90
+
91
+ /* Animated gradient layer */
92
+ .#{$prefix}--body-gradient {
93
+ position: absolute;
94
+ z-index: 2;
95
+ animation: 1000ms motion.motion(standard, expressive) animate-gradient;
96
+ animation-delay: 466.666ms;
97
+ animation-fill-mode: both;
98
+ background: linear-gradient(0deg, #4589ff4d 0%, transparent 100%);
99
+ background-repeat: no-repeat;
100
+ background-size: 100% 64px;
101
+ inset: 0;
102
+ opacity: 0.7;
103
+ pointer-events: none;
104
+ transition: opacity 150ms motion.motion(standard, productive);
105
+ }
106
+
107
+ .#{$prefix}--body:hover {
108
+ .#{$prefix}--body-gradient,
109
+ .#{$prefix}--body-background {
110
+ opacity: 0.85;
111
+ }
112
+ }
113
+
114
+ .#{$prefix}--body::after {
115
+ position: absolute;
116
+ z-index: 3;
117
+ border: 1px solid transparent;
118
+ animation: 1000ms motion.motion(standard, expressive) animate-border;
119
+ animation-delay: 466.666ms;
120
+ animation-fill-mode: both;
121
+ background: linear-gradient(180deg, #a6c8ff 64%, #78a9ff) border-box;
122
+ background-size: 100% 150%;
123
+ content: '';
124
+ inset: 0;
125
+ -webkit-mask: linear-gradient(#ffffff 0 0) padding-box,
126
+ linear-gradient(#ffffff 0 0);
127
+ mask: linear-gradient(#ffffff 0 0) padding-box, linear-gradient(#ffffff 0 0);
128
+ -webkit-mask-composite: destination-out;
129
+ mask-composite: exclude;
130
+ }
131
+
132
+ .#{$prefix}--icons {
133
+ position: relative;
134
+ z-index: 4;
135
+ display: flex;
136
+ justify-content: space-between;
137
+ margin-block-end: $spacing-05;
138
+ }
139
+
140
+ .#{$prefix}--title {
141
+ @include type-style('body-compact-02');
142
+
143
+ position: relative;
144
+ z-index: 4;
145
+
146
+ overflow: hidden;
147
+ text-overflow: ellipsis;
148
+ white-space: nowrap;
149
+
150
+ @supports (-webkit-line-clamp: 3) {
151
+ display: -webkit-box;
152
+ overflow: hidden;
153
+ -webkit-box-orient: vertical;
154
+ -webkit-line-clamp: 3;
155
+ text-overflow: ellipsis;
156
+ white-space: initial;
157
+ }
158
+ }
159
+
160
+ .#{$prefix}--footer {
161
+ position: absolute;
162
+ z-index: 2;
163
+ display: flex;
164
+ gap: $spacing-05;
165
+ inset-block-end: $spacing-05;
166
+ }
167
+
168
+ .#{$prefix}--subtitle {
169
+ @include type-style('body-short-01');
170
+
171
+ position: relative;
172
+ z-index: 2;
173
+ overflow: hidden;
174
+ color: $text-secondary;
175
+ text-overflow: ellipsis;
176
+ white-space: nowrap;
177
+
178
+ @supports (-webkit-line-clamp: 1) {
179
+ display: -webkit-box;
180
+ overflow: hidden;
181
+ -webkit-box-orient: vertical;
182
+ -webkit-line-clamp: 1;
183
+ text-overflow: ellipsis;
184
+ white-space: initial;
185
+ }
186
+ }
187
+
188
+ .#{$prefix}--custom-content {
189
+ z-index: 4;
190
+ }
191
+
192
+ .#{$prefix}--loading-skeleton {
193
+ background: $layer-01;
194
+ block-size: 100%;
195
+ inline-size: 100%;
196
+
197
+ opacity: 0.7;
198
+ }
199
+
200
+ .#{$prefix}--loading-skeleton::before {
201
+ background: $layer-02;
202
+ }
203
+
204
+ @keyframes animate-border {
205
+ 0% {
206
+ background-position: 100% 0%;
207
+ }
208
+
209
+ 100% {
210
+ background-position: 100% 100%;
211
+ }
212
+ }
213
+
214
+ @keyframes animate-gradient {
215
+ 0% {
216
+ background-position: 100% 150%;
217
+ }
218
+
219
+ 100% {
220
+ background-position: 100% 100%;
221
+ }
222
+ }
@@ -50,8 +50,20 @@ $prefix: 'clabs--animated-header__glass-tile' !default;
50
50
  padding: $spacing-05;
51
51
  background-color: transparent;
52
52
  color: $text-primary;
53
- opacity: 1;
54
- transition: opacity 500ms linear;
53
+
54
+ @media (prefers-reduced-motion: no-preference) {
55
+ transition: opacity 500ms linear;
56
+ }
57
+
58
+ &[data-expanded='true'] {
59
+ opacity: 1;
60
+ transition-delay: 110ms;
61
+ }
62
+
63
+ &[data-expanded='false'] {
64
+ opacity: 0;
65
+ transition-delay: 0ms;
66
+ }
55
67
  }
56
68
 
57
69
  /* Semi-transparent background layer */
@@ -7,5 +7,6 @@
7
7
 
8
8
  @use 'AnimatedHeader/animated-header.scss';
9
9
  @use 'HeaderTitle/header-title.scss';
10
+ @use 'Tiles/AITile/ai-tile.scss';
10
11
  @use 'Tiles/AIPromptTile/ai-prompt-tile.scss';
11
12
  @use 'Tiles/GlassTile/glass-tile.scss';