@carbon/styles 1.112.0 → 1.113.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/css/styles.css +4714 -3240
- package/css/styles.min.css +1 -1
- package/package.json +10 -10
- package/scss/components/__tests__/button-test.js +1 -0
- package/scss/components/__tests__/pagination-test.js +42 -1
- package/scss/components/__tests__/ui-shell-test.js +58 -1
- package/scss/components/_index.scss +5 -0
- package/scss/components/action-set/_action-set.scss +130 -0
- package/scss/components/action-set/_index.scss +11 -0
- package/scss/components/button/_button.scss +3 -3
- package/scss/components/button/_vars.scss +10 -0
- package/scss/components/card/_card.scss +449 -0
- package/scss/components/card/_index.scss +11 -0
- package/scss/components/date-picker/_date-picker-next.scss +421 -0
- package/scss/components/date-picker/_index.scss +3 -0
- package/scss/components/modal/_modal.scss +2 -18
- package/scss/components/pagination/_pagination.scss +29 -18
- package/scss/components/pagination/_unstable_pagination.scss +20 -13
- package/scss/components/resizer/_index.scss +11 -0
- package/scss/components/resizer/_resizer.scss +60 -0
- package/scss/components/side-panel/_animations.scss +74 -0
- package/scss/components/side-panel/_index.scss +11 -0
- package/scss/components/side-panel/_side-panel-variables.scss +15 -0
- package/scss/components/side-panel/_side-panel.scss +642 -0
- package/scss/components/truncated-text/_index.scss +11 -0
- package/scss/components/truncated-text/_truncated-text.scss +54 -0
- package/scss/components/ui-shell/header/_header.scss +46 -21
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright IBM Corp. 2026
|
|
3
|
+
//
|
|
4
|
+
// This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
// LICENSE file in the root directory of this source tree.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
//-----------------------------
|
|
9
|
+
// Card
|
|
10
|
+
//-----------------------------
|
|
11
|
+
|
|
12
|
+
@use '../../config' as *;
|
|
13
|
+
@use '../../motion' as *;
|
|
14
|
+
@use '../../spacing' as *;
|
|
15
|
+
@use '../../theme' as *;
|
|
16
|
+
@use '../../type' as *;
|
|
17
|
+
@use '../../utilities/ai-gradient' as *;
|
|
18
|
+
@use '../../utilities/focus-outline' as *;
|
|
19
|
+
|
|
20
|
+
/// Card styles
|
|
21
|
+
/// @access public
|
|
22
|
+
/// @group card
|
|
23
|
+
@mixin card {
|
|
24
|
+
// ─── Base ────────────────────────────────────────────────────────────
|
|
25
|
+
.#{$prefix}--card {
|
|
26
|
+
position: relative;
|
|
27
|
+
border: 1px solid $border-subtle-01;
|
|
28
|
+
background-color: $layer-01;
|
|
29
|
+
color: $text-primary;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// ─── Clickable ───────────────────────────────────────────────────────
|
|
33
|
+
.#{$prefix}--card--clickable {
|
|
34
|
+
cursor: pointer;
|
|
35
|
+
transition: background-color $duration-fast-02 motion(standard, productive);
|
|
36
|
+
|
|
37
|
+
&:hover {
|
|
38
|
+
background-color: $layer-hover-01;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
&:focus {
|
|
42
|
+
@include focus-outline('outline');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&:active {
|
|
46
|
+
background-color: $layer-active-01;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// ─── Disabled ────────────────────────────────────────────────────────
|
|
51
|
+
.#{$prefix}--card--disabled {
|
|
52
|
+
border-color: $border-disabled;
|
|
53
|
+
background-color: $layer-01;
|
|
54
|
+
color: $text-disabled;
|
|
55
|
+
cursor: not-allowed;
|
|
56
|
+
pointer-events: none;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ─── Header ──────────────────────────────────────────────────────────
|
|
60
|
+
.#{$prefix}--card__header {
|
|
61
|
+
position: relative;
|
|
62
|
+
display: grid;
|
|
63
|
+
// 16px gap between __title-media and __title
|
|
64
|
+
column-gap: $spacing-05;
|
|
65
|
+
grid-template-columns: auto 1fr;
|
|
66
|
+
// vertical rhythm is handled by margin-block on each child
|
|
67
|
+
row-gap: 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// ─── Body ────────────────────────────────────────────────────────────
|
|
71
|
+
.#{$prefix}--card__body {
|
|
72
|
+
@include type-style('body-compact-01');
|
|
73
|
+
|
|
74
|
+
margin-block: $spacing-05;
|
|
75
|
+
margin-block-start: 0;
|
|
76
|
+
margin-inline: $spacing-05;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// When body is the first child (no header), restore top padding
|
|
80
|
+
.#{$prefix}--card > .#{$prefix}--card__body:first-child {
|
|
81
|
+
margin-block-start: $spacing-05;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// ─── Footer ──────────────────────────────────────────────────────────
|
|
85
|
+
// Default: padded, no border (raw-content slot)
|
|
86
|
+
.#{$prefix}--card__footer {
|
|
87
|
+
display: flex;
|
|
88
|
+
align-items: center;
|
|
89
|
+
padding: $spacing-05;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Action-set layout: triggered when CardAction children are present
|
|
93
|
+
.#{$prefix}--card__footer:has(> .#{$prefix}--card__action) {
|
|
94
|
+
overflow: hidden;
|
|
95
|
+
padding: 0;
|
|
96
|
+
border-block-start: 1px solid $border-subtle;
|
|
97
|
+
gap: 1px;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Text/secondary actions stretch to fill width
|
|
101
|
+
.#{$prefix}--card__footer
|
|
102
|
+
> .#{$prefix}--card__action:not(:has(.#{$prefix}--btn--icon-only)) {
|
|
103
|
+
flex: 1 0 0;
|
|
104
|
+
min-inline-size: 0;
|
|
105
|
+
|
|
106
|
+
> .#{$prefix}--btn,
|
|
107
|
+
> * > .#{$prefix}--btn {
|
|
108
|
+
inline-size: 100%;
|
|
109
|
+
max-inline-size: none;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Icon-only actions are fixed-width, pushed to the right
|
|
114
|
+
.#{$prefix}--card__footer
|
|
115
|
+
> .#{$prefix}--card__action:has(.#{$prefix}--btn--icon-only) {
|
|
116
|
+
flex: 0 0 auto;
|
|
117
|
+
margin-inline-start: auto;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Consecutive icon-only actions: only the first gets the auto margin
|
|
121
|
+
.#{$prefix}--card__footer
|
|
122
|
+
> .#{$prefix}--card__action:has(.#{$prefix}--btn--icon-only)
|
|
123
|
+
+ .#{$prefix}--card__action:has(.#{$prefix}--btn--icon-only) {
|
|
124
|
+
margin-inline-start: 0;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// ─── Action wrapper ───────────────────────────────────────────────────
|
|
128
|
+
.#{$prefix}--card__action {
|
|
129
|
+
display: inline-flex;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// ─── Header media (icon / avatar slot) ───────────────────────────────
|
|
133
|
+
// Spans both grid columns so it always sits above the title-media+title row.
|
|
134
|
+
.#{$prefix}--card__header-media {
|
|
135
|
+
display: flex;
|
|
136
|
+
align-items: flex-start;
|
|
137
|
+
justify-content: flex-start;
|
|
138
|
+
grid-column: 1 / -1;
|
|
139
|
+
margin-block: $spacing-05;
|
|
140
|
+
margin-inline: $spacing-05;
|
|
141
|
+
// 64px max height
|
|
142
|
+
max-block-size: $spacing-10;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// ─── Media (AspectRatio slot) ────────────────────────────────────────
|
|
146
|
+
.#{$prefix}--card__media {
|
|
147
|
+
grid-column: 1 / -1;
|
|
148
|
+
inline-size: 100%;
|
|
149
|
+
|
|
150
|
+
// Disable Carbon's float-based padding-top trick
|
|
151
|
+
&::before,
|
|
152
|
+
&::after {
|
|
153
|
+
display: none;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Re-apply aspect ratio using the native CSS property
|
|
158
|
+
.#{$prefix}--card__media.#{$prefix}--aspect-ratio--16x9 {
|
|
159
|
+
aspect-ratio: 16 / 9;
|
|
160
|
+
}
|
|
161
|
+
.#{$prefix}--card__media.#{$prefix}--aspect-ratio--9x16 {
|
|
162
|
+
aspect-ratio: 9 / 16;
|
|
163
|
+
}
|
|
164
|
+
.#{$prefix}--card__media.#{$prefix}--aspect-ratio--2x1 {
|
|
165
|
+
aspect-ratio: 2 / 1;
|
|
166
|
+
}
|
|
167
|
+
.#{$prefix}--card__media.#{$prefix}--aspect-ratio--1x2 {
|
|
168
|
+
aspect-ratio: 1 / 2;
|
|
169
|
+
}
|
|
170
|
+
.#{$prefix}--card__media.#{$prefix}--aspect-ratio--4x3 {
|
|
171
|
+
aspect-ratio: 4 / 3;
|
|
172
|
+
}
|
|
173
|
+
.#{$prefix}--card__media.#{$prefix}--aspect-ratio--3x4 {
|
|
174
|
+
aspect-ratio: 3 / 4;
|
|
175
|
+
}
|
|
176
|
+
.#{$prefix}--card__media.#{$prefix}--aspect-ratio--3x2 {
|
|
177
|
+
aspect-ratio: 3 / 2;
|
|
178
|
+
}
|
|
179
|
+
.#{$prefix}--card__media.#{$prefix}--aspect-ratio--2x3 {
|
|
180
|
+
aspect-ratio: 2 / 3;
|
|
181
|
+
}
|
|
182
|
+
.#{$prefix}--card__media.#{$prefix}--aspect-ratio--1x1 {
|
|
183
|
+
aspect-ratio: 1 / 1;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Children of the media slot (images, video) must fill the container
|
|
187
|
+
.#{$prefix}--card__media > * {
|
|
188
|
+
position: static;
|
|
189
|
+
block-size: 100%;
|
|
190
|
+
inline-size: 100%;
|
|
191
|
+
object-fit: cover;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// ─── Horizontal layout ───────────────────────────────────────────────
|
|
195
|
+
.#{$prefix}--card--horizontal {
|
|
196
|
+
display: flex;
|
|
197
|
+
flex-direction: row;
|
|
198
|
+
align-items: stretch;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.#{$prefix}--card__media--horizontal {
|
|
202
|
+
overflow: hidden;
|
|
203
|
+
flex-basis: var(--#{$prefix}--card--media-width, 33.33%);
|
|
204
|
+
flex-shrink: 0;
|
|
205
|
+
align-self: stretch;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.#{$prefix}--card--horizontal > .#{$prefix}--card__content {
|
|
209
|
+
display: flex;
|
|
210
|
+
flex: 1 1 0;
|
|
211
|
+
flex-direction: column;
|
|
212
|
+
min-inline-size: 0;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.#{$prefix}--card--horizontal
|
|
216
|
+
> .#{$prefix}--card__content
|
|
217
|
+
> .#{$prefix}--card__body {
|
|
218
|
+
flex: 1 0 auto;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.#{$prefix}--card--horizontal
|
|
222
|
+
> .#{$prefix}--card__content
|
|
223
|
+
> .#{$prefix}--card__footer {
|
|
224
|
+
margin-block-start: auto;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// ─── Label (nested inside __title via label prop on CardTitle) ─────────
|
|
228
|
+
.#{$prefix}--card__title > .#{$prefix}--card__label {
|
|
229
|
+
@include type-style('label-01');
|
|
230
|
+
|
|
231
|
+
color: $text-secondary;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.#{$prefix}--card__label--truncate {
|
|
235
|
+
overflow: hidden;
|
|
236
|
+
text-overflow: ellipsis;
|
|
237
|
+
white-space: nowrap;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.#{$prefix}--card__label--truncate-multi {
|
|
241
|
+
display: -webkit-box;
|
|
242
|
+
overflow: hidden;
|
|
243
|
+
-webkit-box-orient: vertical;
|
|
244
|
+
-webkit-line-clamp: var(--#{$prefix}--card--label-line-clamp);
|
|
245
|
+
text-overflow: ellipsis;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// ─── Title ───────────────────────────────────────────────────────────
|
|
249
|
+
.#{$prefix}--card__title {
|
|
250
|
+
display: flex;
|
|
251
|
+
overflow: hidden;
|
|
252
|
+
flex-direction: column;
|
|
253
|
+
color: $text-primary;
|
|
254
|
+
// 2px between label / text-row / description
|
|
255
|
+
gap: $spacing-01;
|
|
256
|
+
margin-inline: $spacing-05;
|
|
257
|
+
min-inline-size: 0;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.#{$prefix}--card__header > .#{$prefix}--card__title {
|
|
261
|
+
margin-block: $spacing-05;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.#{$prefix}--card--expressive .#{$prefix}--card__title-text-row {
|
|
265
|
+
@include type-style('heading-03');
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.#{$prefix}--card--productive .#{$prefix}--card__title-text-row {
|
|
269
|
+
@include type-style('heading-compact-02');
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// ─── Title text row ──────────────────────────────────────────────────
|
|
273
|
+
.#{$prefix}--card__title-text-row {
|
|
274
|
+
display: block;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.#{$prefix}--card__title-text-row--truncate {
|
|
278
|
+
overflow: hidden;
|
|
279
|
+
max-inline-size: var(--#{$prefix}--card--title-max-width, 100%);
|
|
280
|
+
text-overflow: ellipsis;
|
|
281
|
+
white-space: nowrap;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.#{$prefix}--card__title-text-row--truncate-multi {
|
|
285
|
+
display: -webkit-box;
|
|
286
|
+
overflow: hidden;
|
|
287
|
+
-webkit-box-orient: vertical;
|
|
288
|
+
-webkit-line-clamp: var(--#{$prefix}--card--title-line-clamp);
|
|
289
|
+
max-inline-size: var(--#{$prefix}--card--title-max-width, 100%);
|
|
290
|
+
text-overflow: ellipsis;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// Leading icon: flex row so icon and text sit side-by-side
|
|
294
|
+
.#{$prefix}--card__title-text-row--with-start-icon {
|
|
295
|
+
display: flex;
|
|
296
|
+
align-items: flex-start;
|
|
297
|
+
gap: $spacing-03;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// Trailing icon — no override needed; icon span is inline-flex inside block text
|
|
301
|
+
.#{$prefix}--card__title-text-row--with-end-icon {
|
|
302
|
+
display: block;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// Title leading icon wrapper
|
|
306
|
+
.#{$prefix}--card__title-start-icon {
|
|
307
|
+
display: flex;
|
|
308
|
+
flex-shrink: 0;
|
|
309
|
+
// 2px to align with first text line
|
|
310
|
+
margin-block-start: $spacing-01;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// Title trailing icon wrapper — inline so it flows with text
|
|
314
|
+
.#{$prefix}--card__title-end-icon {
|
|
315
|
+
display: inline-flex;
|
|
316
|
+
align-items: center;
|
|
317
|
+
margin-inline-start: $spacing-03;
|
|
318
|
+
vertical-align: middle;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// ─── Description (nested inside __title via description prop) ──────────
|
|
322
|
+
.#{$prefix}--card__title > .#{$prefix}--card__description {
|
|
323
|
+
@include type-style('label-01');
|
|
324
|
+
|
|
325
|
+
color: $text-secondary;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
.#{$prefix}--card__description--truncate {
|
|
329
|
+
overflow: hidden;
|
|
330
|
+
text-overflow: ellipsis;
|
|
331
|
+
white-space: nowrap;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.#{$prefix}--card__description--truncate-multi {
|
|
335
|
+
display: -webkit-box;
|
|
336
|
+
overflow: hidden;
|
|
337
|
+
-webkit-box-orient: vertical;
|
|
338
|
+
-webkit-line-clamp: var(--#{$prefix}--card--description-line-clamp);
|
|
339
|
+
text-overflow: ellipsis;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// ─── Title media ─────────────────────────────────────────────────────
|
|
343
|
+
.#{$prefix}--card__title-media {
|
|
344
|
+
display: flex;
|
|
345
|
+
flex-shrink: 0;
|
|
346
|
+
// top-align so it tracks the first line on long titles
|
|
347
|
+
align-items: flex-start;
|
|
348
|
+
justify-content: center;
|
|
349
|
+
grid-column: 1;
|
|
350
|
+
// aligns top edge with title text top margin
|
|
351
|
+
margin-block-start: $spacing-05;
|
|
352
|
+
// 16px from card edge
|
|
353
|
+
margin-inline-start: $spacing-05;
|
|
354
|
+
// 64px max height
|
|
355
|
+
max-block-size: $spacing-10;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.#{$prefix}--card__header:has(> .#{$prefix}--card__title-media)
|
|
359
|
+
> .#{$prefix}--card__title {
|
|
360
|
+
grid-column: 2;
|
|
361
|
+
// left margin is provided by the gap from __title-media
|
|
362
|
+
margin-inline-start: 0;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
// ─── Header actions ───────────────────────────────────────────────────
|
|
366
|
+
.#{$prefix}--card__actions {
|
|
367
|
+
position: absolute;
|
|
368
|
+
display: inline-flex;
|
|
369
|
+
align-items: center;
|
|
370
|
+
justify-content: flex-end;
|
|
371
|
+
block-size: $spacing-07;
|
|
372
|
+
gap: $spacing-02;
|
|
373
|
+
inline-size: 50%;
|
|
374
|
+
inset-block-start: $spacing-03;
|
|
375
|
+
inset-inline-end: $spacing-03;
|
|
376
|
+
max-inline-size: 50%;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// ─── AI Label (decorator) ─────────────────────────────────────────────
|
|
380
|
+
.#{$prefix}--card--has-ai-label {
|
|
381
|
+
@include ai-popover-gradient('default', 0, 'layer');
|
|
382
|
+
|
|
383
|
+
border: 1px solid transparent;
|
|
384
|
+
box-shadow:
|
|
385
|
+
inset 0 -80px 70px -65px $ai-inner-shadow,
|
|
386
|
+
0 4px 10px 2px $ai-drop-shadow;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.#{$prefix}--card__decorator {
|
|
390
|
+
position: absolute;
|
|
391
|
+
z-index: 1;
|
|
392
|
+
display: flex;
|
|
393
|
+
align-items: center;
|
|
394
|
+
block-size: $spacing-07;
|
|
395
|
+
inset-block-start: $spacing-03;
|
|
396
|
+
inset-inline-end: $spacing-03;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.#{$prefix}--card--has-ai-label .#{$prefix}--card__title {
|
|
400
|
+
padding-inline-end: calc($spacing-07 + $spacing-05);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
.#{$prefix}--card--has-ai-label:has(.#{$prefix}--card__actions)
|
|
404
|
+
.#{$prefix}--card__title {
|
|
405
|
+
padding-inline-end: $spacing-13;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
.#{$prefix}--card--has-ai-label .#{$prefix}--card__label {
|
|
409
|
+
padding-inline-end: calc($spacing-07 + $spacing-05);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
.#{$prefix}--card--has-ai-label:has(.#{$prefix}--card__actions)
|
|
413
|
+
.#{$prefix}--card__label {
|
|
414
|
+
padding-inline-end: $spacing-13;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.#{$prefix}--card--has-ai-label .#{$prefix}--card__description {
|
|
418
|
+
padding-inline-end: calc($spacing-07 + $spacing-05);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
.#{$prefix}--card--has-ai-label:has(.#{$prefix}--card__actions)
|
|
422
|
+
.#{$prefix}--card__description {
|
|
423
|
+
padding-inline-end: $spacing-13;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
.#{$prefix}--card--has-ai-label .#{$prefix}--card__actions {
|
|
427
|
+
inset-inline-end: calc($spacing-03 + $spacing-06 + $spacing-03);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// AI label hover state for clickable cards
|
|
431
|
+
.#{$prefix}--card--clickable.#{$prefix}--card--has-ai-label::before {
|
|
432
|
+
@include ai-popover-gradient('hover', 0, 'layer');
|
|
433
|
+
|
|
434
|
+
position: absolute;
|
|
435
|
+
display: block;
|
|
436
|
+
block-size: 100%;
|
|
437
|
+
box-shadow: inset 0 -80px 70px -65px $ai-inner-shadow;
|
|
438
|
+
content: '';
|
|
439
|
+
inline-size: 100%;
|
|
440
|
+
inset-block-start: 0;
|
|
441
|
+
inset-inline-start: 0;
|
|
442
|
+
opacity: 0;
|
|
443
|
+
transition: opacity $duration-fast-02 motion(standard, productive);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
.#{$prefix}--card--clickable.#{$prefix}--card--has-ai-label:hover::before {
|
|
447
|
+
opacity: 1;
|
|
448
|
+
}
|
|
449
|
+
}
|