@carbon-labs/react-animated-header 0.1.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 (92) hide show
  1. package/LICENSE +201 -0
  2. package/es/__stories__/AnimatedHeader.stories.d.ts +17275 -0
  3. package/es/_virtual/_commonjsHelpers.js +12 -0
  4. package/es/_virtual/lottie.js +14 -0
  5. package/es/_virtual/lottie2.js +10 -0
  6. package/es/assets/index.d.ts +7 -0
  7. package/es/components/AnimatedHeader/AnimatedHeader.d.ts +31 -0
  8. package/es/components/AnimatedHeader/AnimatedHeader.js +277 -0
  9. package/es/components/Tiles/AIPromptTile/AIPromptTile.d.ts +20 -0
  10. package/es/components/Tiles/AIPromptTile/AIPromptTile.js +94 -0
  11. package/es/components/Tiles/BaseTile/BaseTile.d.ts +22 -0
  12. package/es/components/Tiles/BaseTile/BaseTile.js +39 -0
  13. package/es/components/Tiles/GlassTile/GlassTile.d.ts +21 -0
  14. package/es/components/Tiles/GlassTile/GlassTile.js +53 -0
  15. package/es/components/Tiles/index.d.ts +12 -0
  16. package/es/data/index.d.ts +47 -0
  17. package/es/index.d.ts +11 -0
  18. package/es/index.js +11 -0
  19. package/es/node_modules/@carbon/icon-helpers/es/index.js +125 -0
  20. package/es/node_modules/@carbon/icons-react/es/Icon.js +71 -0
  21. package/es/node_modules/@carbon/icons-react/es/generated/bucket-0.js +2967 -0
  22. package/es/node_modules/@carbon/icons-react/es/generated/bucket-1.js +3260 -0
  23. package/es/node_modules/@carbon/icons-react/es/generated/bucket-10.js +2906 -0
  24. package/es/node_modules/@carbon/icons-react/es/generated/bucket-11.js +3151 -0
  25. package/es/node_modules/@carbon/icons-react/es/generated/bucket-12.js +2966 -0
  26. package/es/node_modules/@carbon/icons-react/es/generated/bucket-13.js +3019 -0
  27. package/es/node_modules/@carbon/icons-react/es/generated/bucket-14.js +2923 -0
  28. package/es/node_modules/@carbon/icons-react/es/generated/bucket-15.js +3076 -0
  29. package/es/node_modules/@carbon/icons-react/es/generated/bucket-16.js +2913 -0
  30. package/es/node_modules/@carbon/icons-react/es/generated/bucket-17.js +2917 -0
  31. package/es/node_modules/@carbon/icons-react/es/generated/bucket-18.js +3141 -0
  32. package/es/node_modules/@carbon/icons-react/es/generated/bucket-19.js +811 -0
  33. package/es/node_modules/@carbon/icons-react/es/generated/bucket-2.js +3195 -0
  34. package/es/node_modules/@carbon/icons-react/es/generated/bucket-3.js +3119 -0
  35. package/es/node_modules/@carbon/icons-react/es/generated/bucket-4.js +3002 -0
  36. package/es/node_modules/@carbon/icons-react/es/generated/bucket-5.js +2929 -0
  37. package/es/node_modules/@carbon/icons-react/es/generated/bucket-6.js +2978 -0
  38. package/es/node_modules/@carbon/icons-react/es/generated/bucket-7.js +3017 -0
  39. package/es/node_modules/@carbon/icons-react/es/generated/bucket-8.js +3149 -0
  40. package/es/node_modules/@carbon/icons-react/es/generated/bucket-9.js +3084 -0
  41. package/es/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +14 -0
  42. package/es/node_modules/@carbon/icons-react/es/index.js +30 -0
  43. package/es/node_modules/@carbon-labs/utilities/es/usePrefix.js +20 -0
  44. package/es/node_modules/lottie-web/build/player/lottie.js +682 -0
  45. package/lib/__stories__/AnimatedHeader.stories.d.ts +17275 -0
  46. package/lib/_virtual/_commonjsHelpers.js +14 -0
  47. package/lib/_virtual/lottie.js +18 -0
  48. package/lib/_virtual/lottie2.js +12 -0
  49. package/lib/assets/index.d.ts +7 -0
  50. package/lib/components/AnimatedHeader/AnimatedHeader.d.ts +31 -0
  51. package/lib/components/AnimatedHeader/AnimatedHeader.js +281 -0
  52. package/lib/components/Tiles/AIPromptTile/AIPromptTile.d.ts +20 -0
  53. package/lib/components/Tiles/AIPromptTile/AIPromptTile.js +96 -0
  54. package/lib/components/Tiles/BaseTile/BaseTile.d.ts +22 -0
  55. package/lib/components/Tiles/BaseTile/BaseTile.js +41 -0
  56. package/lib/components/Tiles/GlassTile/GlassTile.d.ts +21 -0
  57. package/lib/components/Tiles/GlassTile/GlassTile.js +55 -0
  58. package/lib/components/Tiles/index.d.ts +12 -0
  59. package/lib/data/index.d.ts +47 -0
  60. package/lib/index.d.ts +11 -0
  61. package/lib/index.js +18 -0
  62. package/lib/node_modules/@carbon/icon-helpers/es/index.js +128 -0
  63. package/lib/node_modules/@carbon/icons-react/es/Icon.js +75 -0
  64. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-0.js +3093 -0
  65. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-1.js +3386 -0
  66. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-10.js +3032 -0
  67. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-11.js +3277 -0
  68. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-12.js +3092 -0
  69. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-13.js +3145 -0
  70. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-14.js +3049 -0
  71. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-15.js +3202 -0
  72. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-16.js +3039 -0
  73. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-17.js +3043 -0
  74. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-18.js +3267 -0
  75. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-19.js +847 -0
  76. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-2.js +3321 -0
  77. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-3.js +3245 -0
  78. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-4.js +3128 -0
  79. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-5.js +3055 -0
  80. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-6.js +3104 -0
  81. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-7.js +3143 -0
  82. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-8.js +3275 -0
  83. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-9.js +3210 -0
  84. package/lib/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +16 -0
  85. package/lib/node_modules/@carbon/icons-react/es/index.js +2446 -0
  86. package/lib/node_modules/@carbon-labs/utilities/es/usePrefix.js +23 -0
  87. package/lib/node_modules/lottie-web/build/player/lottie.js +684 -0
  88. package/package.json +35 -0
  89. package/scss/AnimatedHeader/animated-header.scss +619 -0
  90. package/scss/Tiles/AIPromptTile/ai-prompt-tile.scss +187 -0
  91. package/scss/Tiles/GlassTile/glass-tile.scss +111 -0
  92. package/scss/animated_header.scss +10 -0
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@carbon-labs/react-animated-header",
3
+ "version": "0.1.0",
4
+ "publishConfig": {
5
+ "access": "public",
6
+ "provenance": true
7
+ },
8
+ "type": "module",
9
+ "description": "Carbon Labs - Animated Header",
10
+ "license": "Apache-2.0",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/carbon-design-system/carbon-labs",
14
+ "directory": "src/components/AnimatedHeader"
15
+ },
16
+ "main": "./src/index.js",
17
+ "module": "./src/index.js",
18
+ "files": [
19
+ "es",
20
+ "lib",
21
+ "scss"
22
+ ],
23
+ "scripts": {
24
+ "build": "node ../../../tasks/build.js",
25
+ "clean": "rm -rf {es,lib,scss}"
26
+ },
27
+ "dependencies": {
28
+ "jest-canvas-mock": "^2.5.2",
29
+ "lottie-web": "^5.12.2"
30
+ },
31
+ "devDependencies": {
32
+ "@carbon-labs/utilities": "canary"
33
+ },
34
+ "gitHead": "728c683c561041ad84fcb3c5f81087b6f1b8f483"
35
+ }
@@ -0,0 +1,619 @@
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/react/scss/compat/themes' as compat;
10
+ @use '@carbon/styles/scss/themes';
11
+ @use '@carbon/styles/scss/theme' as *;
12
+ @use '@carbon/styles/scss/colors' as *;
13
+ @use '@carbon/styles/scss/spacing' as *;
14
+ @use '@carbon/styles/scss/type' as *;
15
+ @use '@carbon/motion';
16
+
17
+ $prefix: 'clabs-animated-header' !default;
18
+
19
+ [data-carbon-theme='white'] {
20
+ @include theme(themes.$white, true);
21
+ }
22
+
23
+ [data-carbon-theme='g10'] {
24
+ @include theme(themes.$g10, true);
25
+ }
26
+
27
+ [data-carbon-theme='g90'] {
28
+ @include theme(themes.$g90, true);
29
+ }
30
+
31
+ [data-carbon-theme='g100'] {
32
+ @include theme(themes.$g100, true);
33
+ }
34
+
35
+ body {
36
+ padding: 0;
37
+ margin: 0;
38
+ background-color: $background;
39
+ color: $text-primary;
40
+ }
41
+
42
+ .#{$prefix} {
43
+ position: relative;
44
+ display: flex;
45
+ overflow: hidden;
46
+ background: $background;
47
+ inline-size: 100vw;
48
+ max-block-size: 90vh;
49
+ outline: 1px solid transparent;
50
+ padding-block: 0 $spacing-10;
51
+ transition: padding 500ms motion.motion(standard, expressive),
52
+ max-height 500ms motion.motion(standard, expressive), color 200ms linear,
53
+ background-color 200ms linear,
54
+ outline 500ms motion.motion(standard, expressive);
55
+ writing-mode: horizontal-tb;
56
+ }
57
+
58
+ .#{$prefix}__static--container {
59
+ position: absolute;
60
+ display: flex;
61
+ justify-content: flex-end;
62
+
63
+ block-size: 100%;
64
+
65
+ /* stylelint-disable-next-line declaration-block-no-duplicate-properties */
66
+ block-size: fill-available;
67
+
68
+ inline-size: 100%;
69
+
70
+ /* stylelint-disable-next-line declaration-block-no-duplicate-properties */
71
+ inline-size: fill-available;
72
+
73
+ max-inline-size: 96rem;
74
+ writing-mode: horizontal-tb;
75
+ }
76
+
77
+ .#{$prefix}__static {
78
+ position: absolute;
79
+ z-index: 0;
80
+ display: flex;
81
+
82
+ background-position: top right;
83
+ background-repeat: no-repeat;
84
+ transform: translateY(0);
85
+ transition: transform 500ms motion.motion(standard, expressive);
86
+ }
87
+
88
+ .#{$prefix}__ui-heading {
89
+ margin-block-start: $spacing-09;
90
+ }
91
+
92
+ .#{$prefix}__ui-side-nav {
93
+ margin-inline-start: $spacing-09;
94
+ }
95
+
96
+ .#{$prefix}__gradient--overlay {
97
+ position: absolute;
98
+ z-index: 1;
99
+
100
+ block-size: 100%;
101
+
102
+ /* stylelint-disable-next-line declaration-block-no-duplicate-properties */
103
+ block-size: fill-available;
104
+
105
+ inline-size: 100%;
106
+
107
+ /* stylelint-disable-next-line declaration-block-no-duplicate-properties */
108
+ inline-size: fill-available;
109
+
110
+ margin-inline: auto;
111
+ max-inline-size: 99rem;
112
+ padding-inline: var(--cds-grid-margin);
113
+ }
114
+
115
+ .#{$prefix}__container--gradient {
116
+ position: absolute;
117
+ z-index: 1;
118
+
119
+ block-size: 100%;
120
+ inline-size: 100%;
121
+ inset-block-start: 0;
122
+ inset-inline-start: 0;
123
+
124
+ margin-inline: auto;
125
+ padding-inline: var(--cds-grid-margin);
126
+ }
127
+
128
+ [data-carbon-theme='white'] .#{$prefix}__container--gradient,
129
+ [data-carbon-theme='g10'] .#{$prefix}__container--gradient {
130
+ background: linear-gradient(0deg, #e0e0e0bf 0%, transparent 100%);
131
+ }
132
+
133
+ [data-carbon-theme='g90'] .#{$prefix}__container--gradient,
134
+ [data-carbon-theme='g100'] .#{$prefix}__container--gradient {
135
+ background: linear-gradient(0deg, #262626bf 0%, transparent 100%);
136
+ }
137
+
138
+ .#{$prefix}__heading {
139
+ @include type-style('heading-05');
140
+
141
+ position: relative;
142
+ z-index: 2;
143
+ overflow: hidden;
144
+ margin: $spacing-08 0 $spacing-05 0;
145
+ text-overflow: ellipsis;
146
+ transition: font-size 500ms motion.motion(standard, expressive),
147
+ margin 500ms motion.motion(standard, expressive);
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
+ /* support for Safari */
161
+ @supports (font: -apple-system-body) and (-webkit-appearance: none) {
162
+ .#{$prefix}__heading {
163
+ transition: margin 500ms motion.motion(standard, expressive);
164
+ }
165
+ }
166
+
167
+ .#{$prefix}__heading--collapsed {
168
+ @include type-style('heading-03');
169
+
170
+ margin: $spacing-03 0 $spacing-04 0;
171
+ line-height: 1.25;
172
+ }
173
+
174
+ .#{$prefix}__heading-welcome {
175
+ animation: 250ms ease-in fade-in;
176
+ animation-fill-mode: both;
177
+ }
178
+
179
+ .#{$prefix}__heading-name {
180
+ animation: 250ms ease-in fade-in;
181
+ animation-delay: 125ms;
182
+ animation-fill-mode: both;
183
+ }
184
+
185
+ .#{$prefix}__left-area-container {
186
+ z-index: 3;
187
+ display: flex;
188
+ flex-direction: column;
189
+ gap: $spacing-07;
190
+ margin-block-start: $spacing-08;
191
+ opacity: 1;
192
+ transition: opacity 500ms linear;
193
+ }
194
+
195
+ .#{$prefix}__left-area-container--collapsed {
196
+ opacity: 0;
197
+ }
198
+
199
+ .#{$prefix}__description {
200
+ @include type-style('heading-03');
201
+
202
+ overflow: hidden;
203
+ animation: 250ms ease-in fade-in;
204
+ animation-delay: 300ms;
205
+ animation-fill-mode: both;
206
+ text-overflow: ellipsis;
207
+ white-space: nowrap;
208
+
209
+ @supports (-webkit-line-clamp: 3) {
210
+ display: -webkit-box;
211
+ overflow: hidden;
212
+ -webkit-box-orient: vertical;
213
+ -webkit-line-clamp: 3;
214
+ text-overflow: ellipsis;
215
+ white-space: initial;
216
+ }
217
+ }
218
+
219
+ .#{$prefix}__button {
220
+ animation: 250ms ease-in fade-in;
221
+ animation-delay: 300ms;
222
+ animation-fill-mode: both;
223
+
224
+ max-inline-size: fit-content;
225
+ }
226
+
227
+ .#{$prefix}__header-dropdown {
228
+ border-width: 1px;
229
+ border-style: solid;
230
+ border-color: $border-inverse;
231
+ animation: 250ms ease-in fade-in;
232
+ animation-delay: 300ms;
233
+ animation-fill-mode: both;
234
+ background-color: transparent;
235
+ max-inline-size: fit-content;
236
+ }
237
+
238
+ .#{$prefix}__content {
239
+ z-index: 2;
240
+ display: flex;
241
+ flex-direction: column;
242
+ margin: 0;
243
+ opacity: 1;
244
+ transition: opacity 500ms linear;
245
+ }
246
+
247
+ .#{$prefix}__tile-dropdown--container {
248
+ min-block-size: $spacing-08;
249
+ opacity: 1;
250
+ transition: opacity 500ms linear;
251
+ }
252
+
253
+ .#{$prefix}__tile-dropdown {
254
+ position: relative;
255
+ z-index: 9999;
256
+ animation: 500ms motion.motion(standard, expressive) 0ms 1 slide-in;
257
+ animation-delay: 383.333ms;
258
+ animation-fill-mode: both;
259
+ margin-block-end: $spacing-03;
260
+ }
261
+
262
+ .#{$prefix}__tiles-container {
263
+ display: flex;
264
+ flex-wrap: wrap;
265
+ gap: $spacing-05;
266
+ }
267
+
268
+ .#{$prefix}__content--collapsed {
269
+ opacity: 0;
270
+ }
271
+
272
+ .#{$prefix}__tile {
273
+ animation: 500ms motion.motion(standard, expressive) 0ms 1 slide-in;
274
+ animation-fill-mode: both;
275
+ }
276
+
277
+ .#{$prefix}__tile:nth-child(1) {
278
+ animation-delay: 383.333ms;
279
+ }
280
+
281
+ @for $i from 1 through 99 {
282
+ .#{$prefix}__tile:nth-child(#{$i}n) {
283
+ animation-delay: #{383.333 + $i * 83.333}ms;
284
+ }
285
+ }
286
+
287
+ .#{$prefix}__lottie-animation--container {
288
+ position: absolute;
289
+ display: flex;
290
+ justify-content: flex-end;
291
+
292
+ block-size: 100%;
293
+
294
+ /* stylelint-disable-next-line declaration-block-no-duplicate-properties */
295
+ block-size: fill-available;
296
+
297
+ inline-size: 100%;
298
+
299
+ /* stylelint-disable-next-line declaration-block-no-duplicate-properties */
300
+ inline-size: fill-available;
301
+
302
+ max-inline-size: 96rem;
303
+ }
304
+
305
+ .#{$prefix}__lottie-animation {
306
+ position: absolute;
307
+ z-index: 0;
308
+ display: flex;
309
+
310
+ transform: translateY(0);
311
+ transition: transform 500ms motion.motion(standard, expressive);
312
+ }
313
+
314
+ .#{$prefix}__lottie-animation--collapsed {
315
+ transform: translateY(-16px);
316
+ }
317
+
318
+ .#{$prefix}__button-collapse--container {
319
+ position: absolute;
320
+ z-index: 2;
321
+ display: flex;
322
+ justify-content: flex-end;
323
+ inset-block-end: 0;
324
+ inset-inline: 0;
325
+ inset-inline-start: 0;
326
+ margin-inline-start: auto;
327
+ padding-block-start: $spacing-05;
328
+ }
329
+
330
+ .#{$prefix}__button-collapse--gradient {
331
+ position: absolute;
332
+ z-index: 1;
333
+ block-size: 200px;
334
+ inline-size: 300px;
335
+ inset-block-end: 0;
336
+ inset-inline-end: 0;
337
+ }
338
+
339
+ [data-carbon-theme='white'] .#{$prefix}__button-collapse--gradient,
340
+ [data-carbon-theme='g10'] .#{$prefix}__button-collapse--gradient {
341
+ background: radial-gradient(
342
+ ellipse 100% 100% at 245px 195px,
343
+ rgba(#e0e0e0, 1),
344
+ rgba(#e0e0e0, 0) 80%
345
+ );
346
+ }
347
+
348
+ [data-carbon-theme='g90'] .#{$prefix}__button-collapse--gradient,
349
+ [data-carbon-theme='g100'] .#{$prefix}__button-collapse--gradient {
350
+ background: radial-gradient(
351
+ ellipse 100% 100% at 245px 195px,
352
+ rgba(#262626, 1),
353
+ rgba(#262626, 0) 80%
354
+ );
355
+ }
356
+
357
+ ##{$prefix}__button-collapse {
358
+ min-inline-size: 112px;
359
+ }
360
+
361
+ ##{$prefix}__button-collapse,
362
+ ##{$prefix}__button-collapse:hover {
363
+ color: $text-primary;
364
+ }
365
+
366
+ .#{$prefix}--collapsed {
367
+ padding: 0;
368
+ max-block-size: $spacing-09;
369
+ outline: 1px solid $border-subtle-00;
370
+ }
371
+
372
+ // Small
373
+ @media only screen and (width >= 20rem) {
374
+ .#{$prefix}__lottie-animation {
375
+ display: none;
376
+ }
377
+
378
+ .#{$prefix}__static {
379
+ display: none;
380
+ }
381
+
382
+ .#{$prefix}__gradient--overlay {
383
+ background: linear-gradient(180deg, $background 25%, transparent 75%);
384
+ }
385
+
386
+ .#{$prefix}__header-dropdown {
387
+ display: none;
388
+ }
389
+
390
+ .#{$prefix}__tile-dropdown {
391
+ margin-block-start: $spacing-06;
392
+ }
393
+
394
+ .#{$prefix}__content {
395
+ display: none;
396
+ }
397
+
398
+ .#{$prefix}__button-collapse--container .cds--popover-container {
399
+ display: none;
400
+ }
401
+ }
402
+
403
+ // Medium
404
+ @media only screen and (width >= 42rem) {
405
+ .#{$prefix}__lottie-animation {
406
+ display: flex;
407
+ }
408
+
409
+ .#{$prefix}__header-dropdown {
410
+ display: inline-grid;
411
+ }
412
+
413
+ .#{$prefix}__static {
414
+ display: flex;
415
+
416
+ background-size: 203% auto;
417
+ block-size: 100%;
418
+ inline-size: 100%;
419
+ }
420
+
421
+ .#{$prefix}__lottie-animation > canvas {
422
+ inline-size: 2582px;
423
+ writing-mode: horizontal-tb;
424
+ }
425
+
426
+ .#{$prefix}__lottie-animation > canvas > svg > g > g > g > g > path {
427
+ vector-effect: non-scaling-stroke;
428
+ }
429
+
430
+ .#{$prefix}__content {
431
+ display: flex;
432
+ }
433
+
434
+ .#{$prefix}__button-collapse--container .cds--popover-container {
435
+ display: flex;
436
+ }
437
+
438
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(1))
439
+ > .#{$prefix}__tile {
440
+ inline-size: calc(50% - 16px);
441
+ }
442
+
443
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(2))
444
+ > .#{$prefix}__tile {
445
+ inline-size: calc(50% - 16px);
446
+ }
447
+
448
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(3))
449
+ > .#{$prefix}__tile {
450
+ inline-size: calc(50% - 16px);
451
+ }
452
+
453
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(4))
454
+ > .#{$prefix}__tile {
455
+ inline-size: calc(50% - 16px);
456
+ }
457
+
458
+ .#{$prefix}__tiles-container:has(> :nth-child(4)) > .#{$prefix}__tile {
459
+ inline-size: calc(33% - 16px);
460
+ }
461
+
462
+ .#{$prefix}__tiles-container:has(> :first-child)
463
+ > ##{$prefix}__ai-prompt-tile {
464
+ inline-size: calc(100% - 16px);
465
+ }
466
+
467
+ .#{$prefix}__tiles-container:has(> :first-child)
468
+ > ##{$prefix}__ai-prompt-tile
469
+ ~ .#{$prefix}__glass-tile {
470
+ inline-size: calc(50% - 16px);
471
+ }
472
+ }
473
+
474
+ // Large
475
+ @media only screen and (width >= 66rem) {
476
+ .#{$prefix}__lottie-animation > canvas {
477
+ inline-size: 1982px;
478
+ }
479
+
480
+ .#{$prefix}__static {
481
+ background-size: 100% auto;
482
+ }
483
+
484
+ .#{$prefix}__gradient--overlay {
485
+ background: linear-gradient(90deg, $background 25%, transparent 75%);
486
+ }
487
+
488
+ .#{$prefix}__tile-dropdown {
489
+ margin-block-start: 0;
490
+ }
491
+
492
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(1))
493
+ > .#{$prefix}__tile {
494
+ inline-size: calc(33% - 16px);
495
+ }
496
+
497
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(2))
498
+ > .#{$prefix}__tile {
499
+ inline-size: calc(50% - 16px);
500
+ }
501
+
502
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(3))
503
+ > .#{$prefix}__tile {
504
+ inline-size: calc(50% - 16px);
505
+ }
506
+
507
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(4))
508
+ > .#{$prefix}__tile {
509
+ inline-size: calc(33% - 16px);
510
+ }
511
+
512
+ .#{$prefix}__tiles-container:has(> :nth-child(4)) > .#{$prefix}__tile {
513
+ inline-size: calc(33% - 16px);
514
+ }
515
+
516
+ .#{$prefix}__tiles-container:has(> :first-child)
517
+ > ##{$prefix}__ai-prompt-tile {
518
+ inline-size: calc(66% - 16px);
519
+ }
520
+
521
+ .#{$prefix}__tiles-container:has(> :first-child)
522
+ > ##{$prefix}__ai-prompt-tile
523
+ ~ .#{$prefix}__glass-tile {
524
+ inline-size: calc(33% - 16px);
525
+ }
526
+ }
527
+
528
+ // X-Large
529
+ @media only screen and (width >= 82rem) {
530
+ .#{$prefix}__lottie-animation > canvas {
531
+ inline-size: 100%;
532
+ }
533
+
534
+ .#{$prefix}__static {
535
+ background-size: 89% auto;
536
+ }
537
+
538
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(1))
539
+ > .#{$prefix}__tile {
540
+ inline-size: calc(25% - 16px);
541
+ }
542
+
543
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(2))
544
+ > .#{$prefix}__tile {
545
+ inline-size: calc(50% - 16px);
546
+ }
547
+
548
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(3))
549
+ > .#{$prefix}__tile {
550
+ inline-size: calc(33% - 16px);
551
+ }
552
+
553
+ .#{$prefix}__tiles-container:has(> :last-child:nth-child(4))
554
+ > .#{$prefix}__tile {
555
+ inline-size: calc(25% - 16px);
556
+ }
557
+
558
+ .#{$prefix}__tiles-container:has(> :nth-child(4)) > .#{$prefix}__tile {
559
+ inline-size: calc(25% - 16px);
560
+ }
561
+
562
+ .#{$prefix}__tiles-container:has(> :first-child)
563
+ > ##{$prefix}__ai-prompt-tile {
564
+ inline-size: calc(50% - 16px);
565
+ }
566
+
567
+ .#{$prefix}__tiles-container:has(> :first-child)
568
+ > ##{$prefix}__ai-prompt-tile
569
+ ~ .#{$prefix}__glass-tile {
570
+ inline-size: calc(25% - 16px);
571
+ }
572
+ }
573
+
574
+ @keyframes slide-in {
575
+ 0% {
576
+ opacity: 0;
577
+ transform: translateY(16px);
578
+ }
579
+
580
+ 100% {
581
+ opacity: 1;
582
+ transform: translateY(0);
583
+ }
584
+ }
585
+
586
+ @keyframes fade-in {
587
+ 0% {
588
+ opacity: 0;
589
+ }
590
+
591
+ 100% {
592
+ opacity: 1;
593
+ }
594
+ }
595
+
596
+ /*
597
+ If the user has expressed their preference for
598
+ reduced motion, then don't use animations
599
+ */
600
+ @media (prefers-reduced-motion: reduce) {
601
+ .#{$prefix},
602
+ .#{$prefix}__static,
603
+ .#{$prefix}__heading,
604
+ .#{$prefix}__left-area-container,
605
+ .#{$prefix}__content,
606
+ .#{$prefix}__lottie-animation {
607
+ transition: none;
608
+ }
609
+
610
+ .#{$prefix}__heading-welcome,
611
+ .#{$prefix}__heading-name,
612
+ .#{$prefix}__description,
613
+ .#{$prefix}__button,
614
+ .#{$prefix}__tile-dropdown,
615
+ .#{$prefix}__tile,
616
+ .#{$prefix}__icon-button {
617
+ animation: none;
618
+ }
619
+ }