@carbon/styles 1.114.0 → 1.115.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 (47) hide show
  1. package/css/styles.css +3356 -1547
  2. package/css/styles.min.css +7 -1
  3. package/package.json +10 -10
  4. package/scss/components/Tearsheet/_index.scss +11 -0
  5. package/scss/components/Tearsheet/_tearsheet.scss +715 -0
  6. package/scss/components/__tests__/data-table-test.js +49 -0
  7. package/scss/components/_index.scss +5 -2
  8. package/scss/components/big-number/_big-number.scss +1 -0
  9. package/scss/components/button/_button.scss +11 -12
  10. package/scss/components/button/_vars.scss +4 -4
  11. package/scss/components/card/_card.scss +2 -2
  12. package/scss/components/checkbox/_checkbox.scss +69 -26
  13. package/scss/components/combo-box/_combo-box.scss +32 -21
  14. package/scss/components/data-table/action/_data-table-action.scss +54 -22
  15. package/scss/components/data-table/sort/_data-table-sort.scss +37 -3
  16. package/scss/components/date-picker/_date-picker-next.scss +60 -0
  17. package/scss/components/date-picker/_date-picker.scss +73 -0
  18. package/scss/components/date-picker/_flatpickr.scss +10 -0
  19. package/scss/components/dropdown/_dropdown.scss +26 -4
  20. package/scss/components/fluid-date-picker/_fluid-date-picker.scss +95 -11
  21. package/scss/components/fluid-list-box/_fluid-list-box.scss +102 -23
  22. package/scss/components/fluid-number-input/_fluid-number-input.scss +204 -24
  23. package/scss/components/fluid-search/_fluid-search.scss +7 -4
  24. package/scss/components/fluid-select/_fluid-select.scss +31 -2
  25. package/scss/components/fluid-text-input/_fluid-text-input.scss +34 -4
  26. package/scss/components/form/_form.scss +1 -14
  27. package/scss/components/guidebanner/_guidebanner.scss +322 -0
  28. package/scss/components/guidebanner/_index.scss +11 -0
  29. package/scss/components/list-box/_list-box.scss +116 -8
  30. package/scss/components/menu/_menu.scss +18 -1
  31. package/scss/components/multiselect/_multiselect.scss +82 -47
  32. package/scss/components/notifications-panel/_index.scss +11 -0
  33. package/scss/components/notifications-panel/_notifications-panel.scss +459 -0
  34. package/scss/components/number-input/_number-input.scss +94 -8
  35. package/scss/components/radio-button/_radio-button.scss +93 -27
  36. package/scss/components/search/_search.scss +35 -8
  37. package/scss/components/select/_select.scss +65 -5
  38. package/scss/components/tabs/_tabs.scss +2 -1
  39. package/scss/components/tag/_mixins.scss +19 -1
  40. package/scss/components/tag/_tag.scss +46 -16
  41. package/scss/components/text-input/_text-input.scss +53 -121
  42. package/scss/components/tile/_tile.scss +131 -13
  43. package/scss/utilities/_skeleton.scss +7 -1
  44. /package/scss/components/{EditInPlace → edit-in-place}/_edit-in-place.scss +0 -0
  45. /package/scss/components/{EditInPlace → edit-in-place}/_index.scss +0 -0
  46. /package/scss/components/{OptionsTile → options-tile}/_index.scss +0 -0
  47. /package/scss/components/{OptionsTile → options-tile}/_options-tile.scss +0 -0
@@ -10,6 +10,8 @@
10
10
  @use '../../type' as *;
11
11
  @use '../../motion' as *;
12
12
  @use '../../config' as *;
13
+ @use '../../border-radius' as *;
14
+ @use '../../feature-flags' as *;
13
15
  @use '../../utilities/component-tokens' as *;
14
16
  @use '../../utilities/convert';
15
17
  @use '../../utilities/high-contrast-mode' as *;
@@ -55,6 +57,10 @@
55
57
  vertical-align: middle;
56
58
  word-break: break-word;
57
59
 
60
+ @if enabled('enable-v12-release') {
61
+ border-radius: $border-radius-04;
62
+ }
63
+
58
64
  &.#{$prefix}--tag--lg {
59
65
  padding-inline-start: $spacing-04;
60
66
  }
@@ -249,7 +255,8 @@
249
255
  @include tag-theme(
250
256
  $background-inverse,
251
257
  $text-inverse,
252
- $background-inverse-hover
258
+ $background-inverse-hover,
259
+ $close-focus-color: $focus-inverse
253
260
  );
254
261
  }
255
262
 
@@ -266,10 +273,12 @@
266
273
  .#{$prefix}--tag--outline:not(.#{$prefix}--tag--operational):not(span):not(
267
274
  [disabled]
268
275
  ) {
269
- @include tag-theme($background, $text-primary, $layer-hover);
270
-
271
- outline: 1px solid $background-inverse;
272
- outline-offset: -1px;
276
+ @include tag-theme(
277
+ $background,
278
+ $text-primary,
279
+ $layer-hover,
280
+ $outline-color: $background-inverse
281
+ );
273
282
  }
274
283
 
275
284
  .#{$prefix}--tag--disabled:not(.#{$prefix}--tag--operational),
@@ -280,16 +289,21 @@
280
289
  box-shadow: none;
281
290
  outline: none;
282
291
 
292
+ .#{$prefix}--tag__label {
293
+ background-color: $layer;
294
+ color: $text-disabled;
295
+ }
296
+ }
297
+
298
+ .#{$prefix}--tag--disabled:not(.#{$prefix}--tag--operational):not(
299
+ .#{$prefix}--tag--filter
300
+ ),
301
+ .#{$prefix}--tag--interactive.#{$prefix}--tag--disabled {
283
302
  @media (any-hover: hover) {
284
303
  &:hover {
285
304
  cursor: not-allowed;
286
305
  }
287
306
  }
288
-
289
- .#{$prefix}--tag__label {
290
- background-color: $layer;
291
- color: $text-disabled;
292
- }
293
307
  }
294
308
 
295
309
  .#{$prefix}--tag--selectable.#{$prefix}--tag--disabled,
@@ -328,6 +342,10 @@
328
342
  background-color $duration-fast-01 motion(standard, productive),
329
343
  box-shadow $duration-fast-01 motion(standard, productive);
330
344
 
345
+ @if enabled('enable-v12-release') {
346
+ border-radius: $border-radius-04;
347
+ }
348
+
331
349
  svg {
332
350
  fill: currentColor;
333
351
  }
@@ -355,15 +373,10 @@
355
373
 
356
374
  .#{$prefix}--tag__close-icon:focus {
357
375
  z-index: 99999;
358
- border-radius: 50%;
359
376
  box-shadow: inset 0 0 0 1px $focus;
360
377
  outline: none;
361
378
  }
362
379
 
363
- .#{$prefix}--tag--high-contrast .#{$prefix}--tag__close-icon:focus {
364
- box-shadow: inset 0 0 0 1px $focus-inverse;
365
- }
366
-
367
380
  @media (any-hover: hover) {
368
381
  .#{$prefix}--tag--filter.#{$prefix}--tag--disabled
369
382
  .#{$prefix}--tag__close-icon:hover {
@@ -383,6 +396,18 @@
383
396
  margin-inline-start: convert.to-rem(5px);
384
397
  }
385
398
 
399
+ @if enabled('enable-v12-release') {
400
+ .#{$prefix}--tag--sm,
401
+ .#{$prefix}--tag.#{$prefix}--layout--size-sm {
402
+ border-radius: $border-radius-02;
403
+ }
404
+
405
+ .#{$prefix}--tag--sm .#{$prefix}--tag__close-icon,
406
+ .#{$prefix}--tag.#{$prefix}--layout--size-sm .#{$prefix}--tag__close-icon {
407
+ border-radius: $border-radius-02;
408
+ }
409
+ }
410
+
386
411
  // Skeleton state
387
412
  .#{$prefix}--tag.#{$prefix}--skeleton {
388
413
  @include skeleton;
@@ -466,9 +491,14 @@
466
491
  max-inline-size: convert.to-rem(158px);
467
492
  }
468
493
 
494
+ .#{$prefix}--tag > span {
495
+ min-inline-size: 0;
496
+ }
497
+
469
498
  .#{$prefix}--interactive--tag-children {
470
499
  display: inline-flex;
471
500
  max-inline-size: convert.to-rem(200px);
501
+ min-inline-size: 0;
472
502
  place-items: center;
473
503
  }
474
504
 
@@ -476,7 +506,7 @@
476
506
  .#{$prefix}--tag__custom-icon
477
507
  + span
478
508
  > .#{$prefix}--interactive--tag-children {
479
- max-inline-size: convert.to-rem(184px);
509
+ max-inline-size: 100%;
480
510
  }
481
511
 
482
512
  .#{$prefix}--tag .#{$prefix}--definition-term {
@@ -14,11 +14,12 @@
14
14
  @use '../../theme' as *;
15
15
  @use '../../type' as *;
16
16
  @use '../../spacing' as *;
17
+ @use '../../border-radius' as *;
18
+ @use '../../feature-flags' as *;
17
19
  @use '../../motion' as *;
18
20
  @use '../../utilities/ai-gradient' as *;
19
21
  @use '../../utilities/component-reset';
20
22
  @use '../../utilities/placeholder-colors' as *;
21
- @use '../../utilities/tooltip' as *;
22
23
  @use '../../utilities/skeleton' as *;
23
24
  @use '../../utilities/convert';
24
25
  @use '../../utilities/layout';
@@ -42,14 +43,28 @@
42
43
  background-color: $field;
43
44
  block-size: layout.size('height');
44
45
  border-block-end: 1px solid $border-strong;
46
+ caret-color: $text-primary;
45
47
  color: $text-primary;
46
48
  font-family: inherit;
47
-
48
49
  inline-size: 100%;
49
50
  transition:
50
51
  background-color $duration-fast-01 motion(standard, productive),
51
52
  outline $duration-fast-01 motion(standard, productive);
52
53
 
54
+ @if enabled('enable-v12-release') {
55
+ border: 1px solid transparent;
56
+ border-radius: $border-radius-04;
57
+ // (gray-20 → gray-50)
58
+ background:
59
+ linear-gradient($field, $field) padding-box,
60
+ linear-gradient(
61
+ to bottom,
62
+ $border-subtle calc(100% - 4px),
63
+ $border-strong 100%
64
+ )
65
+ border-box;
66
+ }
67
+
53
68
  &:focus,
54
69
  &:active {
55
70
  @include focus-outline('outline');
@@ -100,12 +115,6 @@
100
115
  opacity: 1;
101
116
  }
102
117
 
103
- // TODO: deprecate this style block
104
- .#{$prefix}--text-input--password__visibility {
105
- @include tooltip--trigger('icon', 'bottom');
106
- @include tooltip--placement('icon', 'bottom', 'center');
107
- }
108
-
109
118
  .#{$prefix}--btn.#{$prefix}--text-input--password__visibility__toggle.#{$prefix}--tooltip__trigger {
110
119
  @include focus-outline('reset');
111
120
 
@@ -122,6 +131,10 @@
122
131
  inset-inline-end: 0;
123
132
  min-block-size: auto;
124
133
  transition: outline $duration-fast-01 motion(standard, productive);
134
+
135
+ @if enabled('enable-v12-release') {
136
+ border-radius: $border-radius-04;
137
+ }
125
138
  }
126
139
 
127
140
  .#{$prefix}--toggle-password-tooltip .#{$prefix}--popover {
@@ -169,12 +182,6 @@
169
182
  ~ .#{$prefix}--text-input--password__visibility__toggle.#{$prefix}--tooltip__trigger
170
183
  svg {
171
184
  fill: $icon-disabled;
172
-
173
- @media (any-hover: hover) {
174
- &:hover {
175
- fill: $icon-disabled;
176
- }
177
- }
178
185
  }
179
186
 
180
187
  .#{$prefix}--text-input--password__visibility__toggle:disabled.#{$prefix}--tooltip__trigger {
@@ -185,16 +192,6 @@
185
192
  cursor: default;
186
193
  }
187
194
 
188
- @media (any-hover: hover) {
189
- .#{$prefix}--text-input--password__visibility__toggle:disabled.#{$prefix}--tooltip__trigger:hover {
190
- svg {
191
- fill: $icon-disabled;
192
- }
193
-
194
- cursor: default;
195
- }
196
- }
197
-
198
195
  .#{$prefix}--text-input__counter-alert {
199
196
  position: absolute;
200
197
  overflow: hidden;
@@ -212,9 +209,7 @@
212
209
  .#{$prefix}--text-input:disabled {
213
210
  @include focus-outline('reset');
214
211
 
215
- background-color: $field;
216
-
217
- border-block-end: 1px solid transparent;
212
+ background: $field;
218
213
  color: $text-disabled;
219
214
  cursor: not-allowed;
220
215
  // Needed to fix disabled text in Safari #6673
@@ -247,100 +242,6 @@
247
242
  @include skeleton;
248
243
  }
249
244
 
250
- // Deprecated -- Styles have been moved to `fluid-text-input.scss`
251
- // V12 - Remove this block
252
- //-----------------------------
253
- // Fluid Text Input
254
- //-----------------------------
255
- .#{$prefix}--form--fluid .#{$prefix}--text-input-wrapper {
256
- position: relative;
257
- background: $field;
258
- transition:
259
- background-color $duration-fast-01 motion(standard, productive),
260
- outline $duration-fast-01 motion(standard, productive);
261
- }
262
-
263
- .#{$prefix}--form--fluid .#{$prefix}--label {
264
- position: absolute;
265
- z-index: 1;
266
- display: flex;
267
- align-items: center;
268
- margin: 0;
269
- block-size: convert.to-rem(16px);
270
- inset-block-start: convert.to-rem(13px);
271
- inset-inline-start: $spacing-05;
272
- }
273
-
274
- .#{$prefix}--form--fluid .#{$prefix}--form__helper-text {
275
- display: none;
276
- }
277
-
278
- .#{$prefix}--form--fluid .#{$prefix}--text-input {
279
- padding: convert.to-rem(32px) $spacing-05 convert.to-rem(13px);
280
- min-block-size: convert.to-rem(64px);
281
- }
282
-
283
- .#{$prefix}--text-input__divider,
284
- .#{$prefix}--form--fluid .#{$prefix}--text-input__divider {
285
- display: none;
286
- }
287
-
288
- .#{$prefix}--form--fluid .#{$prefix}--text-input--invalid,
289
- .#{$prefix}--form--fluid .#{$prefix}--text-input--warning {
290
- border-block-end: none;
291
- }
292
-
293
- .#{$prefix}--form--fluid
294
- .#{$prefix}--text-input--invalid
295
- + .#{$prefix}--text-input__divider,
296
- .#{$prefix}--form--fluid
297
- .#{$prefix}--text-input--warning
298
- + .#{$prefix}--text-input__divider {
299
- display: block;
300
- border-style: solid;
301
- border-color: $border-subtle;
302
- margin: 0 1rem;
303
- border-block-end: none;
304
- }
305
-
306
- .#{$prefix}--form--fluid .#{$prefix}--text-input__invalid-icon {
307
- inset-block-start: convert.to-rem(80px);
308
- }
309
-
310
- .#{$prefix}--form--fluid
311
- .#{$prefix}--text-input__field-wrapper[data-invalid]
312
- > .#{$prefix}--text-input--invalid,
313
- .#{$prefix}--form--fluid
314
- .#{$prefix}--text-input__field-wrapper--warning
315
- > .#{$prefix}--text-input--warning {
316
- outline: none;
317
- }
318
-
319
- .#{$prefix}--form--fluid .#{$prefix}--text-input__field-wrapper--warning {
320
- border-block-end: 1px solid $border-strong;
321
- }
322
-
323
- .#{$prefix}--form--fluid
324
- .#{$prefix}--text-input__field-wrapper[data-invalid]:not(:focus) {
325
- @include focus-outline('invalid');
326
- }
327
-
328
- .#{$prefix}--form--fluid
329
- .#{$prefix}--text-input__field-wrapper[data-invalid]:focus-within,
330
- .#{$prefix}--form--fluid
331
- .#{$prefix}--text-input__field-wrapper--warning:focus-within {
332
- @include focus-outline('outline');
333
- }
334
-
335
- .#{$prefix}--form--fluid
336
- .#{$prefix}--text-input__field-wrapper[data-invalid]
337
- > .#{$prefix}--text-input--invalid:focus,
338
- .#{$prefix}--form--fluid
339
- .#{$prefix}--text-input__field-wrapper--warning
340
- > .#{$prefix}--text-input--warning:focus {
341
- outline: none;
342
- }
343
-
344
245
  //-----------------------------
345
246
  // Inline Text Input
346
247
  //-----------------------------
@@ -418,6 +319,14 @@
418
319
  border-block-end-color: $border-subtle;
419
320
  }
420
321
 
322
+ @if enabled('enable-v12-release') {
323
+ .#{$prefix}--text-input-wrapper--readonly .#{$prefix}--text-input,
324
+ .#{$prefix}--text-input-wrapper--readonly
325
+ .#{$prefix}--btn.#{$prefix}--text-input--password__visibility__toggle.#{$prefix}--tooltip__trigger {
326
+ border-radius: $border-radius-00;
327
+ }
328
+ }
329
+
421
330
  // Styles for AILabel rendered inside TextInput
422
331
  .#{$prefix}--text-input__field-wrapper--decorator
423
332
  .#{$prefix}--text-input__field-inner-wrapper--decorator
@@ -449,6 +358,29 @@
449
358
  :has(~ .#{$prefix}--slug--revert)
450
359
  ) {
451
360
  @include ai-gradient;
361
+
362
+ @if enabled('enable-v12-release') {
363
+ // Reset the bottom-edge color override from @include ai-gradient so the
364
+ // border-box gradient layer controls all four sides uniformly.
365
+ background:
366
+ linear-gradient(
367
+ 0deg,
368
+ $ai-aura-start-sm 0%,
369
+ 15%,
370
+ $ai-aura-end 50%,
371
+ transparent 100%
372
+ )
373
+ padding-box,
374
+ linear-gradient($field, $field) padding-box,
375
+ // (ai-border-start → ai-border-end), mirroring the default v12 border gradient
376
+ linear-gradient(
377
+ to bottom,
378
+ $ai-border-start calc(100% - 4px),
379
+ $ai-border-strong 100%
380
+ )
381
+ border-box;
382
+ border-block-end-color: transparent;
383
+ }
452
384
  }
453
385
  .#{$prefix}--text-input__field-wrapper--decorator
454
386
  .#{$prefix}--text-input:not(.#{$prefix}--text-input--invalid):not(
@@ -1,5 +1,5 @@
1
1
  //
2
- // Copyright IBM Corp. 2016, 2023
2
+ // Copyright IBM Corp. 2016, 2026
3
3
  //
4
4
  // This source code is licensed under the Apache-2.0 license found in the
5
5
  // LICENSE file in the root directory of this source tree.
@@ -388,8 +388,27 @@ $-icon-container-size: calc(#{layout.density('padding-inline')} * 2 + 1rem);
388
388
  fill: $icon-disabled;
389
389
  }
390
390
 
391
+ .#{$prefix}--clickable-tile__wrapper,
392
+ .#{$prefix}--selectable-tile__wrapper--decorator,
393
+ .#{$prefix}--selectable-tile__wrapper--slug,
394
+ .#{$prefix}--radio-tile__wrapper--decorator,
395
+ .#{$prefix}--radio-tile__wrapper--slug {
396
+ position: relative;
397
+ }
398
+
391
399
  // AILabel styles
392
400
  .#{$prefix}--tile > .#{$prefix}--tile--inner-decorator > *,
401
+ .#{$prefix}--clickable-tile__wrapper > .#{$prefix}--tile--inner-decorator > *,
402
+ .#{$prefix}--selectable-tile__wrapper--decorator
403
+ > .#{$prefix}--tile--inner-decorator
404
+ > *,
405
+ .#{$prefix}--selectable-tile__wrapper--slug > .#{$prefix}--ai-label,
406
+ .#{$prefix}--selectable-tile__wrapper--slug > .#{$prefix}--slug,
407
+ .#{$prefix}--radio-tile__wrapper--decorator
408
+ > .#{$prefix}--tile--inner-decorator
409
+ > *,
410
+ .#{$prefix}--radio-tile__wrapper--slug > .#{$prefix}--ai-label,
411
+ .#{$prefix}--radio-tile__wrapper--slug > .#{$prefix}--slug,
393
412
  .#{$prefix}--tile--expandable > div > .#{$prefix}--tile--inner-decorator > *,
394
413
  .#{$prefix}--tile > .#{$prefix}--ai-label,
395
414
  .#{$prefix}--tile--expandable > div > .#{$prefix}--ai-label,
@@ -404,18 +423,48 @@ $-icon-container-size: calc(#{layout.density('padding-inline')} * 2 + 1rem);
404
423
  .#{$prefix}--tile.#{$prefix}--tile--selectable
405
424
  > .#{$prefix}--tile--inner-decorator
406
425
  > *,
426
+ .#{$prefix}--selectable-tile__wrapper--decorator
427
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable
428
+ + .#{$prefix}--tile--inner-decorator
429
+ > *,
430
+ .#{$prefix}--radio-tile__wrapper--decorator
431
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable
432
+ + .#{$prefix}--tile--inner-decorator
433
+ > *,
407
434
  .#{$prefix}--tile.#{$prefix}--tile--selectable > .#{$prefix}--ai-label,
408
- .#{$prefix}--tile.#{$prefix}--tile--selectable > .#{$prefix}--slug {
435
+ .#{$prefix}--tile.#{$prefix}--tile--selectable > .#{$prefix}--slug,
436
+ .#{$prefix}--selectable-tile__wrapper--slug
437
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable
438
+ + .#{$prefix}--ai-label,
439
+ .#{$prefix}--selectable-tile__wrapper--slug
440
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable
441
+ + .#{$prefix}--slug,
442
+ .#{$prefix}--radio-tile__wrapper--slug
443
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable
444
+ + .#{$prefix}--ai-label,
445
+ .#{$prefix}--radio-tile__wrapper--slug
446
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable
447
+ + .#{$prefix}--slug {
409
448
  inset-inline-end: $spacing-08;
410
449
  }
411
450
 
412
451
  .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio
413
452
  > .#{$prefix}--tile--inner-decorator
414
453
  > *,
454
+ .#{$prefix}--radio-tile__wrapper--decorator
455
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio
456
+ + .#{$prefix}--tile--inner-decorator
457
+ > *,
415
458
  .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio
416
459
  > .#{$prefix}--ai-label,
417
460
  .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio
418
- > .#{$prefix}--slug {
461
+ > .#{$prefix}--slug,
462
+ .#{$prefix}--radio-tile__wrapper--slug
463
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio
464
+ + .#{$prefix}--ai-label,
465
+ .#{$prefix}--radio-tile__wrapper--slug
466
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio
467
+ + .#{$prefix}--slug {
419
468
  inset-inline-end: $spacing-05;
420
469
  transition: inset-inline-end $duration-fast-02 motion(standard, productive);
421
470
 
@@ -431,25 +480,39 @@ $-icon-container-size: calc(#{layout.density('padding-inline')} * 2 + 1rem);
431
480
  .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio.#{$prefix}--tile--is-selected
432
481
  > .#{$prefix}--tile--inner-decorator
433
482
  > *,
483
+ .#{$prefix}--radio-tile__wrapper--decorator
484
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio.#{$prefix}--tile--is-selected
485
+ + .#{$prefix}--tile--inner-decorator
486
+ > *,
434
487
  .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio.#{$prefix}--tile--is-selected
435
488
  > .#{$prefix}--ai-label,
436
489
  .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio.#{$prefix}--tile--is-selected
437
- > .#{$prefix}--slug {
490
+ > .#{$prefix}--slug,
491
+ .#{$prefix}--radio-tile__wrapper--slug
492
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio.#{$prefix}--tile--is-selected
493
+ + .#{$prefix}--ai-label,
494
+ .#{$prefix}--radio-tile__wrapper--slug
495
+ > .#{$prefix}--tile.#{$prefix}--tile--selectable.#{$prefix}--tile--radio.#{$prefix}--tile--is-selected
496
+ + .#{$prefix}--slug {
438
497
  inset-inline-end: $spacing-08;
439
498
  }
440
499
 
441
- .#{$prefix}--tile.#{$prefix}--tile--clickable
442
- > .#{$prefix}--tile--inner-decorator
443
- > *,
444
- .#{$prefix}--tile.#{$prefix}--tile--clickable > .#{$prefix}--ai-label,
445
- .#{$prefix}--tile.#{$prefix}--tile--clickable > .#{$prefix}--slug {
446
- pointer-events: none;
447
- }
448
-
449
500
  .#{$prefix}--tile--decorator:has(
450
501
  .#{$prefix}--tile--ai-label-icon
451
502
  ).#{$prefix}--tile,
452
503
  .#{$prefix}--tile--decorator:has(.#{$prefix}--ai-label).#{$prefix}--tile,
504
+ .#{$prefix}--clickable-tile__wrapper
505
+ > .#{$prefix}--tile--decorator:has(
506
+ + .#{$prefix}--tile--inner-decorator .#{$prefix}--ai-label
507
+ ).#{$prefix}--tile,
508
+ .#{$prefix}--selectable-tile__wrapper--decorator
509
+ > .#{$prefix}--tile--decorator:has(
510
+ + .#{$prefix}--tile--inner-decorator .#{$prefix}--ai-label
511
+ ).#{$prefix}--tile,
512
+ .#{$prefix}--radio-tile__wrapper--decorator
513
+ > .#{$prefix}--tile--decorator:has(
514
+ + .#{$prefix}--tile--inner-decorator .#{$prefix}--ai-label
515
+ ).#{$prefix}--tile,
453
516
  .#{$prefix}--tile--slug.#{$prefix}--tile {
454
517
  @include ai-popover-gradient('default', 0, 'layer');
455
518
 
@@ -486,9 +549,21 @@ $-icon-container-size: calc(#{layout.density('padding-inline')} * 2 + 1rem);
486
549
  .#{$prefix}--tile--decorator:has(
487
550
  .#{$prefix}--ai-label
488
551
  ).#{$prefix}--tile--selectable::before,
552
+ .#{$prefix}--selectable-tile__wrapper--decorator
553
+ > .#{$prefix}--tile--decorator:has(
554
+ + .#{$prefix}--tile--inner-decorator .#{$prefix}--ai-label
555
+ ).#{$prefix}--tile--selectable::before,
556
+ .#{$prefix}--radio-tile__wrapper--decorator
557
+ > .#{$prefix}--tile--decorator:has(
558
+ + .#{$prefix}--tile--inner-decorator .#{$prefix}--ai-label
559
+ ).#{$prefix}--tile--selectable::before,
489
560
  .#{$prefix}--tile--decorator:has(
490
561
  .#{$prefix}--ai-label
491
562
  ).#{$prefix}--tile--clickable::before,
563
+ .#{$prefix}--clickable-tile__wrapper
564
+ > .#{$prefix}--tile--decorator:has(
565
+ + .#{$prefix}--tile--inner-decorator .#{$prefix}--ai-label
566
+ ).#{$prefix}--tile--clickable::before,
492
567
  .#{$prefix}--tile--decorator:has(
493
568
  .#{$prefix}--tile--ai-label-icon
494
569
  ).#{$prefix}--tile--clickable::before,
@@ -520,6 +595,14 @@ $-icon-container-size: calc(#{layout.density('padding-inline')} * 2 + 1rem);
520
595
  .#{$prefix}--tile--decorator:has(
521
596
  .#{$prefix}--tile--inner-decorator .#{$prefix}--ai-label
522
597
  ).#{$prefix}--tile--selectable::after,
598
+ .#{$prefix}--selectable-tile__wrapper--decorator
599
+ > .#{$prefix}--tile--decorator:has(
600
+ + .#{$prefix}--tile--inner-decorator .#{$prefix}--ai-label
601
+ ).#{$prefix}--tile--selectable::after,
602
+ .#{$prefix}--radio-tile__wrapper--decorator
603
+ > .#{$prefix}--tile--decorator:has(
604
+ + .#{$prefix}--tile--inner-decorator .#{$prefix}--ai-label
605
+ ).#{$prefix}--tile--selectable::after,
523
606
  .#{$prefix}--tile--slug.#{$prefix}--tile--selectable::after {
524
607
  @include ai-popover-gradient('selected', 0, 'layer');
525
608
 
@@ -541,6 +624,14 @@ $-icon-container-size: calc(#{layout.density('padding-inline')} * 2 + 1rem);
541
624
  .#{$prefix}--tile--decorator:has(
542
625
  .#{$prefix}--tile--inner-decorator
543
626
  ).#{$prefix}--tile--is-selected,
627
+ .#{$prefix}--selectable-tile__wrapper--decorator
628
+ > .#{$prefix}--tile--decorator:has(
629
+ + .#{$prefix}--tile--inner-decorator
630
+ ).#{$prefix}--tile.#{$prefix}--tile--is-selected,
631
+ .#{$prefix}--radio-tile__wrapper--decorator
632
+ > .#{$prefix}--tile--decorator:has(
633
+ + .#{$prefix}--tile--inner-decorator
634
+ ).#{$prefix}--tile.#{$prefix}--tile--is-selected,
544
635
  .#{$prefix}--tile--slug.#{$prefix}--tile--is-selected {
545
636
  border-color: $border-inverse;
546
637
  }
@@ -561,6 +652,10 @@ $-icon-container-size: calc(#{layout.density('padding-inline')} * 2 + 1rem);
561
652
  .#{$prefix}--tile-content,
562
653
  .#{$prefix}--tile--decorator.#{$prefix}--tile--clickable
563
654
  .#{$prefix}--tile-content,
655
+ .#{$prefix}--clickable-tile__wrapper > .#{$prefix}--tile--inner-decorator > *,
656
+ .#{$prefix}--selectable-tile__wrapper--decorator
657
+ > .#{$prefix}--tile--inner-decorator
658
+ > *,
564
659
  .#{$prefix}--tile--decorator.#{$prefix}--tile--selectable
565
660
  > .#{$prefix}--tile__checkmark,
566
661
  .#{$prefix}--tile--decorator.#{$prefix}--tile--is-selected
@@ -579,20 +674,43 @@ $-icon-container-size: calc(#{layout.density('padding-inline')} * 2 + 1rem);
579
674
  .#{$prefix}--tile--decorator.#{$prefix}--tile--selectable
580
675
  .#{$prefix}--tile--inner-decorator
581
676
  > *:has(> .#{$prefix}--popover--open),
677
+ .#{$prefix}--clickable-tile__wrapper
678
+ > .#{$prefix}--tile--inner-decorator
679
+ > *:has(> .#{$prefix}--popover--open),
680
+ .#{$prefix}--selectable-tile__wrapper--decorator
681
+ > .#{$prefix}--tile--inner-decorator
682
+ > *:has(> .#{$prefix}--popover--open),
683
+ .#{$prefix}--radio-tile__wrapper--decorator
684
+ > .#{$prefix}--tile--inner-decorator
685
+ > *:has(> .#{$prefix}--popover--open),
582
686
  .#{$prefix}--tile--slug.#{$prefix}--tile--selectable
583
687
  .#{$prefix}--ai-label:has(> .#{$prefix}--popover--open),
584
688
  .#{$prefix}--tile--slug.#{$prefix}--tile--selectable
585
- .#{$prefix}--slug:has(> .#{$prefix}--popover--open) {
689
+ .#{$prefix}--slug:has(> .#{$prefix}--popover--open),
690
+ .#{$prefix}--selectable-tile__wrapper--slug
691
+ > .#{$prefix}--ai-label:has(> .#{$prefix}--popover--open),
692
+ .#{$prefix}--selectable-tile__wrapper--slug
693
+ > .#{$prefix}--slug:has(> .#{$prefix}--popover--open) {
586
694
  z-index: 2;
587
695
  }
588
696
 
589
697
  .#{$prefix}--tile--decorator.#{$prefix}--tile--selectable
590
698
  > .#{$prefix}--tile--inner-decorator
591
699
  > *,
700
+ .#{$prefix}--selectable-tile__wrapper--decorator
701
+ > .#{$prefix}--tile--inner-decorator
702
+ > *,
703
+ .#{$prefix}--radio-tile__wrapper--decorator
704
+ > .#{$prefix}--tile--inner-decorator
705
+ > *,
592
706
  .#{$prefix}--tile--decorator.#{$prefix}--tile--selectable
593
707
  > .#{$prefix}--tile__checkmark,
594
708
  .#{$prefix}--tile--slug.#{$prefix}--tile--selectable > .#{$prefix}--ai-label,
595
709
  .#{$prefix}--tile--slug.#{$prefix}--tile--selectable > .#{$prefix}--slug,
710
+ .#{$prefix}--selectable-tile__wrapper--slug > .#{$prefix}--ai-label,
711
+ .#{$prefix}--selectable-tile__wrapper--slug > .#{$prefix}--slug,
712
+ .#{$prefix}--radio-tile__wrapper--slug > .#{$prefix}--ai-label,
713
+ .#{$prefix}--radio-tile__wrapper--slug > .#{$prefix}--slug,
596
714
  .#{$prefix}--tile--slug.#{$prefix}--tile--selectable
597
715
  > .#{$prefix}--tile__checkmark {
598
716
  z-index: 1;
@@ -1,5 +1,5 @@
1
1
  //
2
- // Copyright IBM Corp. 2021
2
+ // Copyright IBM Corp. 2021, 2026
3
3
  //
4
4
  // This source code is licensed under the Apache-2.0 license found in the
5
5
  // LICENSE file in the root directory of this source tree.
@@ -8,6 +8,7 @@
8
8
  @use 'keyframes';
9
9
  @use '../theme' as *;
10
10
  @use '../config' as *;
11
+ @use '../feature-flags' as *;
11
12
  @use '../utilities/high-contrast-mode' as *;
12
13
 
13
14
  /// Skeleton loading animation
@@ -22,6 +23,11 @@
22
23
  box-shadow: none;
23
24
  pointer-events: none;
24
25
 
26
+ @if enabled('enable-v12-release') {
27
+ overflow: hidden;
28
+ border-radius: 4px;
29
+ }
30
+
25
31
  &:hover,
26
32
  &:focus,
27
33
  &:active {