@carbon/styles 1.82.0-rc.0 → 1.83.0-rc.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 (50) hide show
  1. package/css/styles.css +686 -328
  2. package/css/styles.min.css +1 -1
  3. package/package.json +9 -9
  4. package/scss/__tests__/theme-test.js +4 -0
  5. package/scss/_layer.scss +7 -0
  6. package/scss/_reset.scss +2 -1
  7. package/scss/_theme.scss +49 -0
  8. package/scss/_zone.scss +3 -1
  9. package/scss/components/accordion/_accordion.scss +0 -7
  10. package/scss/components/breadcrumb/_breadcrumb.scss +1 -1
  11. package/scss/components/button/_button.scss +0 -9
  12. package/scss/components/checkbox/_checkbox.scss +17 -0
  13. package/scss/components/code-snippet/_code-snippet.scss +0 -5
  14. package/scss/components/content-switcher/_content-switcher.scss +424 -54
  15. package/scss/components/content-switcher/_index.scss +6 -1
  16. package/scss/components/content-switcher/_tokens.scss +110 -0
  17. package/scss/components/data-table/_data-table.scss +2 -1
  18. package/scss/components/data-table/expandable/_data-table-expandable.scss +0 -4
  19. package/scss/components/data-table/sort/_data-table-sort.scss +0 -7
  20. package/scss/components/date-picker/_date-picker.scss +0 -7
  21. package/scss/components/date-picker/_flatpickr.scss +0 -2
  22. package/scss/components/dialog/_dialog.scss +160 -13
  23. package/scss/components/dropdown/_dropdown.scss +0 -4
  24. package/scss/components/file-uploader/_file-uploader.scss +1 -5
  25. package/scss/components/fluid-number-input/_fluid-number-input.scss +103 -5
  26. package/scss/components/form/_form.scss +3 -1
  27. package/scss/components/list-box/_list-box.scss +0 -6
  28. package/scss/components/modal/_modal.scss +0 -5
  29. package/scss/components/notification/_actionable-notification.scss +0 -7
  30. package/scss/components/notification/_inline-notification.scss +0 -8
  31. package/scss/components/notification/_toast-notification.scss +0 -6
  32. package/scss/components/number-input/_number-input.scss +87 -18
  33. package/scss/components/overflow-menu/_overflow-menu.scss +0 -4
  34. package/scss/components/page-header/_page-header.scss +60 -19
  35. package/scss/components/pagination-nav/_pagination-nav.scss +0 -1
  36. package/scss/components/popover/_popover.scss +0 -1
  37. package/scss/components/radio-button/_radio-button.scss +1 -1
  38. package/scss/components/search/_search.scss +0 -7
  39. package/scss/components/select/_select.scss +0 -7
  40. package/scss/components/structured-list/_structured-list.scss +0 -8
  41. package/scss/components/tabs/_tabs.scss +6 -4
  42. package/scss/components/tag/_tag.scss +0 -5
  43. package/scss/components/text-input/_text-input.scss +0 -18
  44. package/scss/components/tile/_tile.scss +0 -22
  45. package/scss/components/ui-shell/side-nav/_side-nav.scss +0 -13
  46. package/scss/layer/_layer-sets.scss +5 -0
  47. package/scss/theme/_theme.scss +1 -0
  48. package/scss/utilities/_high-contrast-mode.scss +0 -4
  49. package/scss/utilities/_layout.scss +2 -1
  50. package/scss/utilities/_update_fields_on_layer.scss +1 -0
@@ -0,0 +1,110 @@
1
+ //
2
+ // Copyright IBM Corp. 2025
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
+ @use 'sass:color';
9
+ @use 'sass:map';
10
+ @use '../../config';
11
+ @use '../../colors';
12
+ @use '../../themes';
13
+ @use '../../theme' as *;
14
+ @use '../../utilities/component-tokens';
15
+ @use '@carbon/themes/scss/component-tokens' as content-switcher;
16
+
17
+ // content-switcher-background
18
+ $content-switcher-background: (
19
+ fallback: map.get(content-switcher.$content-switcher-background, white-theme),
20
+ values: (
21
+ (
22
+ theme: themes.$white,
23
+ value: map.get(content-switcher.$content-switcher-background, white-theme),
24
+ ),
25
+ (
26
+ theme: themes.$g10,
27
+ value: map.get(content-switcher.$content-switcher-background, g-10),
28
+ ),
29
+ (
30
+ theme: themes.$g90,
31
+ value: map.get(content-switcher.$content-switcher-background, g-90),
32
+ ),
33
+ (
34
+ theme: themes.$g100,
35
+ value: map.get(content-switcher.$content-switcher-background, g-100),
36
+ ),
37
+ ),
38
+ ) !default;
39
+
40
+ // content-switcher-background-hover
41
+ $content-switcher-background-hover: (
42
+ fallback:
43
+ map.get(content-switcher.$content-switcher-background-hover, white-theme),
44
+ values: (
45
+ (
46
+ theme: themes.$white,
47
+ value:
48
+ map.get(
49
+ content-switcher.$content-switcher-background-hover,
50
+ white-theme
51
+ ),
52
+ ),
53
+ (
54
+ theme: themes.$g10,
55
+ value: map.get(content-switcher.$content-switcher-background-hover, g-10),
56
+ ),
57
+ (
58
+ theme: themes.$g90,
59
+ value: map.get(content-switcher.$content-switcher-background-hover, g-90),
60
+ ),
61
+ (
62
+ theme: themes.$g100,
63
+ value: map.get(content-switcher.$content-switcher-background-hover, g-100),
64
+ ),
65
+ ),
66
+ ) !default;
67
+
68
+ // content-switcher-selected
69
+ $content-switcher-selected: (
70
+ fallback: map.get(content-switcher.$content-switcher-selected, white-theme),
71
+ values: (
72
+ (
73
+ theme: themes.$white,
74
+ value: map.get(content-switcher.$content-switcher-selected, white-theme),
75
+ ),
76
+ (
77
+ theme: themes.$g10,
78
+ value: map.get(content-switcher.$content-switcher-selected, g-10),
79
+ ),
80
+ (
81
+ theme: themes.$g90,
82
+ value: map.get(content-switcher.$content-switcher-selected, g-90),
83
+ ),
84
+ (
85
+ theme: themes.$g100,
86
+ value: map.get(content-switcher.$content-switcher-selected, g-100),
87
+ ),
88
+ ),
89
+ ) !default;
90
+
91
+ // Add to $content-switcher-tokens map
92
+ $content-switcher-tokens: (
93
+ content-switcher-background: $content-switcher-background,
94
+ content-switcher-background-hover: $content-switcher-background-hover,
95
+ content-switcher-selected: $content-switcher-selected,
96
+ );
97
+
98
+ // Generate CSS custom properties for each token
99
+ $content-switcher-background: component-tokens.get-var(
100
+ $content-switcher-background,
101
+ 'content-switcher-background'
102
+ );
103
+ $content-switcher-background-hover: component-tokens.get-var(
104
+ $content-switcher-background-hover,
105
+ 'content-switcher-background-hover'
106
+ );
107
+ $content-switcher-selected: component-tokens.get-var(
108
+ $content-switcher-selected,
109
+ 'content-switcher-selected'
110
+ );
@@ -239,6 +239,7 @@
239
239
  .#{$prefix}--data-table .#{$prefix}--dropdown,
240
240
  .#{$prefix}--data-table .#{$prefix}--list-box,
241
241
  .#{$prefix}--data-table .#{$prefix}--number input[type='number'],
242
+ .#{$prefix}--data-table .#{$prefix}--number input[type='text'],
242
243
  .#{$prefix}--data-table .#{$prefix}--number__control-btn::before,
243
244
  .#{$prefix}--data-table .#{$prefix}--number__control-btn::after,
244
245
  .#{$prefix}--data-table .#{$prefix}--text-input,
@@ -1133,7 +1134,7 @@
1133
1134
  td.#{$prefix}--table-cell--column-slug,
1134
1135
 
1135
1136
  // Windows HCM fix
1136
-
1137
+
1137
1138
  .#{$prefix}--data-table-content {
1138
1139
  @include high-contrast-mode('outline');
1139
1140
  }
@@ -481,8 +481,4 @@
481
481
  .#{$prefix}--table-expand__button:focus .#{$prefix}--table-expand__svg {
482
482
  @include high-contrast-mode('focus');
483
483
  }
484
-
485
- .#{$prefix}--table-expand__svg {
486
- @include high-contrast-mode('icon-fill');
487
- }
488
484
  }
@@ -12,7 +12,6 @@
12
12
  @use '../../../utilities/button-reset';
13
13
  @use '../../../utilities/convert';
14
14
  @use '../../../utilities/focus-outline' as *;
15
- @use '../../../utilities/high-contrast-mode' as *;
16
15
 
17
16
  /// Data table sort styles
18
17
  /// @access public
@@ -270,10 +269,4 @@
270
269
  display: block;
271
270
  margin-inline-end: convert.to-rem(8px);
272
271
  }
273
-
274
- // Windows HCM fix
275
- .#{$prefix}--table-sort__icon,
276
- .#{$prefix}--table-sort__icon-unsorted {
277
- @include high-contrast-mode('icon-fill');
278
- }
279
272
  }
@@ -17,7 +17,6 @@
17
17
  @use '../../utilities/component-reset';
18
18
  @use '../../utilities/convert';
19
19
  @use '../../utilities/focus-outline' as *;
20
- @use '../../utilities/high-contrast-mode' as *;
21
20
  @use '../../utilities/placeholder-colors' as *;
22
21
  @use '../../utilities/skeleton' as *;
23
22
 
@@ -262,10 +261,4 @@
262
261
  block-size: convert.to-rem(14px);
263
262
  inline-size: convert.to-rem(75px);
264
263
  }
265
-
266
- // Windows HCM fix
267
-
268
- .#{$prefix}--date-picker__icon {
269
- @include high-contrast-mode('icon-fill');
270
- }
271
264
  }
@@ -231,8 +231,6 @@
231
231
  transform: scale(1, 1) #{'/*rtl: scale(-1,1)*/'};
232
232
  transition: background-color $duration-fast-01 motion(standard, productive);
233
233
  user-select: none;
234
- // Windows HCM fix
235
- @include high-contrast-mode('icon-fill');
236
234
 
237
235
  @media screen and (prefers-reduced-motion: reduce) {
238
236
  transition: none;
@@ -1,5 +1,5 @@
1
1
  //
2
- // Copyright IBM Corp. 2014, 2024
2
+ // Copyright IBM Corp. 2014, 2025
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.
@@ -17,24 +17,23 @@
17
17
  @use '../../utilities/convert';
18
18
  @use '../../utilities/component-reset';
19
19
  @use '../../utilities/focus-outline' as *;
20
- @use '../../utilities/high-contrast-mode' as *;
21
20
 
22
21
  /// Dialog styles
23
22
  /// @access public
24
23
  /// @group dialog
25
24
  @mixin dialog {
26
25
  .#{$prefix}--dialog {
26
+ position: fixed;
27
27
  padding: 0;
28
28
  border: none;
29
+ margin: auto;
29
30
  background-color: $layer;
30
- block-size: fit-content;
31
31
  color: $text-primary;
32
32
  inline-size: 48rem;
33
- max-block-size: 50%;
34
- max-inline-size: 100%;
33
+ inset: 0;
34
+ max-block-size: 100%;
35
35
  opacity: 0;
36
36
  transform: translateY(calc(-1 * #{$spacing-06}));
37
-
38
37
  /** opening and closing is used in as allow-discrete is not currently supported wide enough
39
38
  * https://caniuse.com/mdn-css_properties_display_is_transitionable
40
39
  */
@@ -52,13 +51,10 @@
52
51
  max-inline-size: 84%;
53
52
  }
54
53
  @include breakpoint(lg) {
55
- max-inline-size: 72%;
56
- }
57
- @include breakpoint(xlg) {
58
- max-inline-size: 64%;
54
+ max-inline-size: 60%;
59
55
  }
60
56
  @include breakpoint(xlg) {
61
- max-inline-size: 60%;
57
+ max-inline-size: 48%;
62
58
  }
63
59
 
64
60
  &[open] {
@@ -95,9 +91,12 @@
95
91
 
96
92
  .#{$prefix}--dialog__header {
97
93
  position: relative;
98
- overflow: visible;
94
+ grid-area: header;
99
95
  inline-size: 100%;
96
+ margin-block-end: $spacing-03;
100
97
  min-block-size: $spacing-09;
98
+ padding-block-start: $spacing-05;
99
+ padding-inline: $spacing-05 $spacing-09;
101
100
  }
102
101
 
103
102
  /* Transition the :backdrop when the dialog modal is promoted to the top layer */
@@ -118,7 +117,6 @@
118
117
 
119
118
  .#{$prefix}--dialog[open]::backdrop {
120
119
  opacity: 1;
121
-
122
120
  transition:
123
121
  background-color $duration-moderate-02 motion(exit, expressive),
124
122
  opacity $duration-moderate-02 motion(exit, expressive);
@@ -145,4 +143,153 @@ because the nesting selector cannot represent pseudo-elements. */
145
143
  inset-block-start: 0;
146
144
  inset-inline-end: 0;
147
145
  }
146
+
147
+ .#{$prefix}--dialog-header__label {
148
+ @include component-reset.reset;
149
+
150
+ @include type-style('label-01');
151
+
152
+ color: $text-secondary;
153
+ margin-block-end: $spacing-02;
154
+ }
155
+
156
+ .#{$prefix}--dialog-header__heading {
157
+ @include component-reset.reset;
158
+
159
+ @include type-style('heading-03');
160
+
161
+ margin: 0;
162
+ color: $text-primary;
163
+
164
+ padding-inline-end: calc(20% - $spacing-09);
165
+ }
166
+
167
+ .#{$prefix}--dialog-container {
168
+ display: grid;
169
+ background-color: $layer;
170
+ grid-template-areas:
171
+ 'header'
172
+ 'content'
173
+ 'footer';
174
+ grid-template-columns: 100%;
175
+ grid-template-rows: auto minmax(0, 1fr) auto;
176
+ inline-size: 100%;
177
+
178
+ @include breakpoint(md) {
179
+ max-block-size: 90vh;
180
+ }
181
+
182
+ @include breakpoint(lg) {
183
+ max-block-size: 84vh;
184
+ }
185
+ }
186
+
187
+ .#{$prefix}--dialog-content {
188
+ position: relative;
189
+ grid-area: content;
190
+ overflow-y: auto;
191
+ padding-block: $spacing-03 $spacing-09;
192
+ padding-inline: $spacing-05 $spacing-05;
193
+
194
+ &:focus {
195
+ @include focus-outline('outline');
196
+ }
197
+ }
198
+
199
+ .#{$prefix}--dialog-scroll-content {
200
+ border-block-end: $spacing-01 solid transparent;
201
+ mask-image: linear-gradient(
202
+ to bottom,
203
+ $layer calc(100% - $spacing-11),
204
+ transparent calc(100% - $spacing-09),
205
+ transparent 100%
206
+ ),
207
+ linear-gradient(to left, $layer 0, $spacing-05, transparent $spacing-05),
208
+ linear-gradient(to right, $layer 0, $spacing-01, transparent $spacing-01),
209
+ linear-gradient(to top, $layer 0, $spacing-01, transparent $spacing-01);
210
+ }
211
+
212
+ .#{$prefix}--dialog-scroll-content > *:last-child {
213
+ margin-block-end: $spacing-06;
214
+ }
215
+
216
+ .#{$prefix}--dialog-scroll-content:has(.#{$prefix}--autoalign) {
217
+ mask-image: none;
218
+ }
219
+
220
+ .#{$prefix}--dialog-footer {
221
+ display: flex;
222
+ align-items: center;
223
+ justify-content: flex-end;
224
+ block-size: $spacing-10;
225
+ grid-area: footer;
226
+ }
227
+
228
+ .#{$prefix}--dialog-footer .#{$prefix}--btn {
229
+ flex: 0 1 50%;
230
+ align-items: baseline;
231
+ margin: 0;
232
+ block-size: $spacing-10;
233
+ max-inline-size: none;
234
+ }
235
+
236
+ .#{$prefix}--dialog-footer--three-button .#{$prefix}--btn {
237
+ flex: 0 1 25%;
238
+ align-items: flex-start;
239
+ }
240
+
241
+ .#{$prefix}--dialog--danger {
242
+ background-color: $ai-overlay;
243
+ }
244
+
245
+ .#{$prefix}--dialog--danger .#{$prefix}--dialog-container {
246
+ @include ai-popover-gradient('default', 0, 'layer');
247
+
248
+ border: 1px solid transparent;
249
+ background-color: $layer;
250
+ box-shadow:
251
+ inset 0 -80px 70px -65px $ai-inner-shadow,
252
+ 0 24px 40px -24px $ai-drop-shadow;
253
+ }
254
+
255
+ .#{$prefix}--dialog--danger
256
+ .#{$prefix}--dialog-container:has(.#{$prefix}--dialog-footer) {
257
+ @include ai-popover-gradient('default', $spacing-10, 'layer');
258
+
259
+ box-shadow:
260
+ inset 0 -80px 0 -16px $layer,
261
+ inset 0 -160px 70px -65px $ai-inner-shadow,
262
+ 0 24px 40px -24px $ai-drop-shadow;
263
+ }
264
+
265
+ .#{$prefix}--dialog--danger
266
+ .#{$prefix}--dialog-content.#{$prefix}--dialog-scroll-content {
267
+ mask-image: linear-gradient(
268
+ to bottom,
269
+ $layer calc(100% - $spacing-11),
270
+ transparent calc(100% - $spacing-09),
271
+ transparent 100%
272
+ ),
273
+ linear-gradient(to left, $layer 0, $spacing-05, transparent $spacing-05),
274
+ linear-gradient(to right, $layer 0, $spacing-01, transparent $spacing-01),
275
+ linear-gradient(to top, $layer 0, $spacing-01, transparent $spacing-01);
276
+ }
277
+ .#{$prefix}--dialog__close {
278
+ padding: convert.to-rem(12px);
279
+ border: 2px solid transparent;
280
+ background-color: transparent;
281
+ block-size: 3rem;
282
+ cursor: pointer;
283
+ inline-size: 3rem;
284
+ transition: background-color $duration-fast-02 motion(standard, productive);
285
+
286
+ &:hover {
287
+ background-color: $layer-hover;
288
+ }
289
+
290
+ &:focus {
291
+ border-color: $focus;
292
+ outline: none;
293
+ }
294
+ }
148
295
  }
@@ -481,10 +481,6 @@
481
481
  }
482
482
  }
483
483
 
484
- .#{$prefix}--list-box__menu-item__selected-icon {
485
- @include high-contrast-mode('icon-fill');
486
- }
487
-
488
484
  // readonly
489
485
  .#{$prefix}--dropdown--readonly,
490
486
  .#{$prefix}--dropdown--readonly:hover {
@@ -347,6 +347,7 @@
347
347
  }
348
348
 
349
349
  .#{$prefix}--file__state-container .#{$prefix}--file-complete {
350
+ // TODO: Should this be $icon-interactive instead?
350
351
  fill: $interactive;
351
352
  inline-size: $spacing-06;
352
353
 
@@ -412,12 +413,7 @@
412
413
  }
413
414
 
414
415
  // Windows HCM fix
415
-
416
416
  .#{$prefix}--file__selected-file {
417
417
  @include high-contrast-mode('outline');
418
418
  }
419
-
420
- .#{$prefix}--file__state-container .#{$prefix}--file-close svg path {
421
- @include high-contrast-mode('icon-fill');
422
- }
423
419
  }
@@ -58,7 +58,8 @@
58
58
  position: initial;
59
59
  }
60
60
 
61
- .#{$prefix}--number-input--fluid input[type='number'] {
61
+ .#{$prefix}--number-input--fluid input[type='number'],
62
+ .#{$prefix}--number-input--fluid input[type='text'] {
62
63
  padding: convert.to-rem(32px) convert.to-rem(80px) convert.to-rem(13px)
63
64
  $spacing-05;
64
65
  background: transparent;
@@ -75,6 +76,10 @@
75
76
  .#{$prefix}--number-input--fluid
76
77
  input[type='number']:focus
77
78
  ~ .#{$prefix}--number__controls
79
+ .#{$prefix}--number__control-btn,
80
+ .#{$prefix}--number-input--fluid
81
+ input[type='text']:focus
82
+ ~ .#{$prefix}--number__controls
78
83
  .#{$prefix}--number__control-btn {
79
84
  border-block-end-color: $focus;
80
85
  box-shadow: inset 0 -1px $focus;
@@ -83,6 +88,10 @@
83
88
  .#{$prefix}--number-input--fluid
84
89
  input[type='number']:focus
85
90
  ~ .#{$prefix}--number__controls
91
+ .#{$prefix}--number__control-btn:last-of-type,
92
+ .#{$prefix}--number-input--fluid
93
+ input[type='text']:focus
94
+ ~ .#{$prefix}--number__controls
86
95
  .#{$prefix}--number__control-btn:last-of-type {
87
96
  box-shadow:
88
97
  inset 0 -1px $focus,
@@ -97,6 +106,15 @@
97
106
  .#{$prefix}--number-input--fluid--invalid
98
107
  input[type='number']:focus
99
108
  ~ .#{$prefix}--number__controls
109
+ .#{$prefix}--number__control-btn,
110
+ .#{$prefix}--number-input--fluid
111
+ .#{$prefix}--number__input-wrapper--warning
112
+ input[type='text']:focus
113
+ ~ .#{$prefix}--number__controls
114
+ .#{$prefix}--number__control-btn,
115
+ .#{$prefix}--number-input--fluid--invalid
116
+ input[type='text']:focus
117
+ ~ .#{$prefix}--number__controls
100
118
  .#{$prefix}--number__control-btn {
101
119
  border-block-end-color: transparent;
102
120
  box-shadow: none;
@@ -110,6 +128,15 @@
110
128
  .#{$prefix}--number-input--fluid--invalid
111
129
  input[type='number'][data-invalid]:focus
112
130
  ~ .#{$prefix}--number__controls
131
+ .#{$prefix}--number__control-btn:last-of-type,
132
+ .#{$prefix}--number-input--fluid
133
+ .#{$prefix}--number__input-wrapper--warning
134
+ input[type='text']:focus
135
+ ~ .#{$prefix}--number__controls
136
+ .#{$prefix}--number__control-btn:last-of-type,
137
+ .#{$prefix}--number-input--fluid--invalid
138
+ input[type='text'][data-invalid]:focus
139
+ ~ .#{$prefix}--number__controls
113
140
  .#{$prefix}--number__control-btn:last-of-type {
114
141
  box-shadow: inset -2px 0 $focus;
115
142
  }
@@ -117,6 +144,10 @@
117
144
  .#{$prefix}--number-input--fluid--invalid
118
145
  input[type='number'][data-invalid]:not(:focus)
119
146
  ~ .#{$prefix}--number__controls
147
+ .#{$prefix}--number__control-btn:last-of-type:hover,
148
+ .#{$prefix}--number-input--fluid--invalid
149
+ input[type='text'][data-invalid]:not(:focus)
150
+ ~ .#{$prefix}--number__controls
120
151
  .#{$prefix}--number__control-btn:last-of-type:hover {
121
152
  box-shadow: inset -2px 0 $support-error;
122
153
  }
@@ -124,6 +155,10 @@
124
155
  .#{$prefix}--number-input--fluid--invalid
125
156
  input[type='number'][data-invalid]:not(:focus)
126
157
  ~ .#{$prefix}--number__controls
158
+ .#{$prefix}--number__control-btn:hover,
159
+ .#{$prefix}--number-input--fluid--invalid
160
+ input[type='text'][data-invalid]:not(:focus)
161
+ ~ .#{$prefix}--number__controls
127
162
  .#{$prefix}--number__control-btn:hover {
128
163
  box-shadow: none;
129
164
  }
@@ -141,6 +176,15 @@
141
176
  )
142
177
  input[type='number']:focus
143
178
  ~ .#{$prefix}--number__controls
179
+ .#{$prefix}--number__control-btn:hover,
180
+ .#{$prefix}--number-input--fluid:not(
181
+ .#{$prefix}--number-input--fluid--invalid
182
+ )
183
+ .#{$prefix}--number-input-wrapper:not(
184
+ .#{$prefix}--number-input-wrapper__warning
185
+ )
186
+ input[type='text']:focus
187
+ ~ .#{$prefix}--number__controls
144
188
  .#{$prefix}--number__control-btn:hover {
145
189
  border-block-end: 1px solid $focus;
146
190
  outline: none;
@@ -154,6 +198,15 @@
154
198
  .#{$prefix}--number
155
199
  input[type='number'][data-invalid]
156
200
  ~ .#{$prefix}--number__controls
201
+ .#{$prefix}--number__control-btn:focus:hover,
202
+ .#{$prefix}--number-input--fluid--invalid
203
+ input[type='text'][data-invalid]
204
+ ~ .#{$prefix}--number__controls
205
+ .#{$prefix}--number__control-btn:focus,
206
+ .#{$prefix}--number-input--fluid--invalid
207
+ .#{$prefix}--number
208
+ input[type='text'][data-invalid]
209
+ ~ .#{$prefix}--number__controls
157
210
  .#{$prefix}--number__control-btn:focus:hover {
158
211
  @include focus-outline('outline');
159
212
  }
@@ -177,13 +230,19 @@
177
230
 
178
231
  .#{$prefix}--number-input--fluid
179
232
  .#{$prefix}--number__input-wrapper--warning
180
- input[type='number'] {
233
+ input[type='number'],
234
+ .#{$prefix}--number-input--fluid
235
+ .#{$prefix}--number__input-wrapper--warning
236
+ input[type='text'] {
181
237
  border-block-end: 1px solid transparent;
182
238
  }
183
239
 
184
240
  .#{$prefix}--number-input--fluid
185
241
  .#{$prefix}--number__input-wrapper--warning
186
- input[type='number']:focus {
242
+ input[type='number']:focus,
243
+ .#{$prefix}--number-input--fluid
244
+ .#{$prefix}--number__input-wrapper--warning
245
+ input[type='text']:focus {
187
246
  outline: none;
188
247
  }
189
248
 
@@ -216,7 +275,10 @@
216
275
 
217
276
  .#{$prefix}--number-input--fluid--invalid
218
277
  .#{$prefix}--number[data-invalid]
219
- input[type='number'] {
278
+ input[type='number'],
279
+ .#{$prefix}--number-input--fluid--invalid
280
+ .#{$prefix}--number[data-invalid]
281
+ input[type='text'] {
220
282
  border-block-end: 1px solid transparent;
221
283
  }
222
284
 
@@ -232,6 +294,19 @@
232
294
  .#{$prefix}--number__input-wrapper--warning
233
295
  input[type='number']
234
296
  ~ .#{$prefix}--number__controls
297
+ .#{$prefix}--number__control-btn:hover:not(:focus),
298
+ .#{$prefix}--number-input--fluid--invalid
299
+ .#{$prefix}--number[data-invalid]
300
+ input[type='text'],
301
+ .#{$prefix}--number-input--fluid--invalid
302
+ .#{$prefix}--number
303
+ input[type='text'][data-invalid]
304
+ ~ .#{$prefix}--number__controls
305
+ .#{$prefix}--number__control-btn:hover,
306
+ .#{$prefix}--number-input--fluid
307
+ .#{$prefix}--number__input-wrapper--warning
308
+ input[type='text']
309
+ ~ .#{$prefix}--number__controls
235
310
  .#{$prefix}--number__control-btn:hover:not(:focus) {
236
311
  outline: none;
237
312
  }
@@ -245,6 +320,16 @@
245
320
  .#{$prefix}--number__input-wrapper--warning
246
321
  input[type='number']
247
322
  ~ .#{$prefix}--number__controls
323
+ .#{$prefix}--number__control-btn,
324
+ .#{$prefix}--number-input--fluid.#{$prefix}--number-input--invalid
325
+ .#{$prefix}--number__input-wrapper
326
+ input[type='text']
327
+ ~ .#{$prefix}--number__controls
328
+ .#{$prefix}--number__control-btn,
329
+ .#{$prefix}--number-input--fluid
330
+ .#{$prefix}--number__input-wrapper--warning
331
+ input[type='text']
332
+ ~ .#{$prefix}--number__controls
248
333
  .#{$prefix}--number__control-btn {
249
334
  border-block-end: none;
250
335
  }
@@ -258,6 +343,16 @@
258
343
  .#{$prefix}--number
259
344
  input[type='number']
260
345
  ~ .#{$prefix}--number__controls
346
+ .#{$prefix}--number__control-btn,
347
+ .#{$prefix}--number-input--fluid--invalid
348
+ .#{$prefix}--number
349
+ input[type='text'][data-invalid]
350
+ ~ .#{$prefix}--number__controls
351
+ .#{$prefix}--number__control-btn,
352
+ .#{$prefix}--number-input--fluid
353
+ .#{$prefix}--number
354
+ input[type='text']
355
+ ~ .#{$prefix}--number__controls
261
356
  .#{$prefix}--number__control-btn {
262
357
  border: initial;
263
358
  border-block-end-width: convert.to-rem(1px);
@@ -273,7 +368,10 @@
273
368
 
274
369
  .#{$prefix}--number-input--fluid--disabled.#{$prefix}--number-input--fluid--invalid
275
370
  .#{$prefix}--number
276
- input[type='number']:disabled {
371
+ input[type='number']:disabled,
372
+ .#{$prefix}--number-input--fluid--disabled.#{$prefix}--number-input--fluid--invalid
373
+ .#{$prefix}--number
374
+ input[type='text']:disabled {
277
375
  background-color: transparent;
278
376
  }
279
377
 
@@ -116,12 +116,14 @@ $input-label-weight: 400 !default;
116
116
  inline-size: convert.to-rem(75px);
117
117
  }
118
118
 
119
- input[type='number'] {
119
+ input[type='number'],
120
+ input[type='text'].#{$prefix}--number {
120
121
  font-family: font-family('sans');
121
122
  }
122
123
 
123
124
  input[data-invalid]:not(:focus),
124
125
  .#{$prefix}--number[data-invalid] input[type='number']:not(:focus),
126
+ .#{$prefix}--number[data-invalid] input[type='text']:not(:focus),
125
127
  .#{$prefix}--text-input__field-wrapper[data-invalid]
126
128
  > .#{$prefix}--text-input--invalid:not(:focus),
127
129
  .#{$prefix}--text-area__wrapper[data-invalid]
@@ -1145,12 +1145,6 @@ $list-box-menu-width: convert.to-rem(300px);
1145
1145
  @include high-contrast-mode('focus');
1146
1146
  }
1147
1147
 
1148
- .#{$prefix}--list-box__menu-icon > svg,
1149
- .#{$prefix}--list-box__selection > svg,
1150
- .#{$prefix}--list-box__selection--multi > svg {
1151
- @include high-contrast-mode('icon-fill');
1152
- }
1153
-
1154
1148
  .#{$prefix}--list-box__field:has(.#{$prefix}--list-box__menu-icon)
1155
1149
  .#{$prefix}--list-box__selection::after {
1156
1150
  position: absolute;
@@ -489,11 +489,6 @@
489
489
  }
490
490
 
491
491
  // Windows HCM fix
492
-
493
- .#{$prefix}--modal-close__icon {
494
- @include high-contrast-mode('icon-fill');
495
- }
496
-
497
492
  .#{$prefix}--modal-close:focus {
498
493
  @include high-contrast-mode('focus');
499
494
  }