@innovaccer/design-system 4.22.0 → 4.24.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 (128) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/README.md +35 -27
  3. package/css/dist/index.css +1570 -434
  4. package/css/dist/index.css.map +1 -1
  5. package/css/src/ai-components/button.module.css +4 -24
  6. package/css/src/ai-components/chip.module.css +12 -30
  7. package/css/src/ai-components/iconButton.module.css +2 -12
  8. package/css/src/components/avatarGroup.module.css +7 -0
  9. package/css/src/components/avatarSelection.module.css +22 -0
  10. package/css/src/components/badge.module.css +3 -3
  11. package/css/src/components/button.module.css +196 -27
  12. package/css/src/components/calendar.module.css +61 -20
  13. package/css/src/components/card.module.css +14 -0
  14. package/css/src/components/chatBubble.module.css +6 -1
  15. package/css/src/components/chatInput.module.css +14 -3
  16. package/css/src/components/chip.module.css +39 -4
  17. package/css/src/components/chipInput.module.css +19 -17
  18. package/css/src/components/dropdown.module.css +50 -14
  19. package/css/src/components/dropdownButton.module.css +5 -3
  20. package/css/src/components/dropzone.module.css +36 -0
  21. package/css/src/components/editableChipInput.module.css +48 -1
  22. package/css/src/components/editableDropdown.module.css +53 -0
  23. package/css/src/components/editableInput.module.css +31 -0
  24. package/css/src/components/grid.module.css +33 -13
  25. package/css/src/components/horizontalNav.module.css +16 -1
  26. package/css/src/components/input.module.css +0 -1
  27. package/css/src/components/label.module.css +12 -0
  28. package/css/src/components/link.module.css +69 -6
  29. package/css/src/components/linkButton.module.css +82 -10
  30. package/css/src/components/listbox.module.css +110 -6
  31. package/css/src/components/metricInput.module.css +89 -35
  32. package/css/src/components/modal.module.css +16 -0
  33. package/css/src/components/navigation.module.css +16 -0
  34. package/css/src/components/segmentedControl.module.css +1 -1
  35. package/css/src/components/select.module.css +11 -3
  36. package/css/src/components/selectionCard.module.css +38 -0
  37. package/css/src/components/sidesheet.module.css +16 -0
  38. package/css/src/components/slider.module.css +21 -0
  39. package/css/src/components/switch.module.css +39 -0
  40. package/css/src/components/table.module.css +32 -1
  41. package/css/src/components/tabs.module.css +20 -0
  42. package/css/src/components/timePicker.module.css +4 -0
  43. package/css/src/components/toast.module.css +19 -0
  44. package/css/src/components/tooltip.module.css +1 -0
  45. package/css/src/components/verticalNav.module.css +13 -5
  46. package/css/src/core/utilities.css +0 -23
  47. package/css/src/tokens/index.css +156 -156
  48. package/css/src/utils/utility.css +4 -0
  49. package/css/src/variables/index.css +116 -1
  50. package/dist/brotli/index.js +1 -1
  51. package/dist/brotli/index.js.br +0 -0
  52. package/dist/cjs/index.js +1 -1
  53. package/dist/core/accessibility/utils/useAccessibilityProps.d.ts +99 -16
  54. package/dist/core/components/atoms/_chip/index.d.ts +2 -0
  55. package/dist/core/components/atoms/_text/index.d.ts +2 -1
  56. package/dist/core/components/atoms/caption/Caption.d.ts +2 -2
  57. package/dist/core/components/atoms/chip/Chip.d.ts +2 -0
  58. package/dist/core/components/atoms/divider/Divider.d.ts +1 -0
  59. package/dist/core/components/atoms/dropdown/DropdownList.d.ts +2 -1
  60. package/dist/core/components/atoms/dropdown/option/index.d.ts +13 -4
  61. package/dist/core/components/atoms/helpText/HelpText.d.ts +1 -0
  62. package/dist/core/components/atoms/icon/Icon.d.ts +2 -3
  63. package/dist/core/components/atoms/link/Link.d.ts +4 -2
  64. package/dist/core/components/atoms/linkButton/LinkButton.d.ts +2 -1
  65. package/dist/core/components/atoms/message/Message.d.ts +1 -0
  66. package/dist/core/components/atoms/multiSlider/Handle.d.ts +1 -0
  67. package/dist/core/components/atoms/multiSlider/index.d.ts +2 -0
  68. package/dist/core/components/atoms/outsideClick/OutsideClick.d.ts +1 -0
  69. package/dist/core/components/atoms/popperWrapper/PopperWrapper.d.ts +51 -50
  70. package/dist/core/components/atoms/progressBar/ProgressBar.d.ts +3 -0
  71. package/dist/core/components/atoms/progressRing/ProgressRing.d.ts +3 -0
  72. package/dist/core/components/atoms/segmentedControl/SegmentedControl.d.ts +2 -0
  73. package/dist/core/components/atoms/spinner/Spinner.d.ts +1 -0
  74. package/dist/core/components/atoms/statusHint/StatusHint.d.ts +2 -2
  75. package/dist/core/components/atoms/toast/Toast.d.ts +3 -0
  76. package/dist/core/components/molecules/chat/Chat.d.ts +3 -0
  77. package/dist/core/components/molecules/chat/chatBubble/IncomingBubble.d.ts +1 -0
  78. package/dist/core/components/molecules/chat/chatBubble/OutgoingBubble.d.ts +1 -0
  79. package/dist/core/components/molecules/chat/chatInput/ChatInput.d.ts +1 -0
  80. package/dist/core/components/molecules/chat/unreadMessage/UnreadMessage.d.ts +3 -0
  81. package/dist/core/components/molecules/chipInput/ChipInput.d.ts +1 -1
  82. package/dist/core/components/molecules/chipInput/utils.d.ts +2 -0
  83. package/dist/core/components/molecules/dropzone/Dropzone.d.ts +1 -0
  84. package/dist/core/components/molecules/editableInput/EditableInput.d.ts +4 -0
  85. package/dist/core/components/molecules/fileUploader/FileUploaderButton.d.ts +2 -0
  86. package/dist/core/components/molecules/inputMask/InputMask.d.ts +1 -0
  87. package/dist/core/components/molecules/modal/Modal.d.ts +1 -0
  88. package/dist/core/components/molecules/popover/Popover.d.ts +1 -0
  89. package/dist/core/components/molecules/sidesheet/Sidesheet.d.ts +2 -1
  90. package/dist/core/components/molecules/stepper/Step.d.ts +1 -0
  91. package/dist/core/components/organisms/calendar/Calendar.d.ts +4 -3
  92. package/dist/core/components/organisms/calendar/utils.d.ts +6 -5
  93. package/dist/core/components/organisms/combobox/Combobox.d.ts +2 -0
  94. package/dist/core/components/organisms/combobox/ComboboxList.d.ts +1 -0
  95. package/dist/core/components/organisms/combobox/trigger/ComboboxTrigger.d.ts +2 -0
  96. package/dist/core/components/organisms/combobox/trigger/MultiselectTrigger.d.ts +1 -0
  97. package/dist/core/components/organisms/grid/Grid.d.ts +1 -0
  98. package/dist/core/components/organisms/grid/GridContext.d.ts +1 -0
  99. package/dist/core/components/organisms/grid/VirtualList.d.ts +1 -0
  100. package/dist/core/components/organisms/inlineMessage/InlineMessage.d.ts +3 -2
  101. package/dist/core/components/organisms/listbox/Listbox.d.ts +9 -1
  102. package/dist/core/components/organisms/listbox/listboxItem/ListBody.d.ts +1 -1
  103. package/dist/core/components/organisms/listbox/listboxItem/ListboxItem.d.ts +2 -0
  104. package/dist/core/components/organisms/listbox/nestedList/NestedList.d.ts +2 -0
  105. package/dist/core/components/organisms/listbox/reorderList/Draggable.d.ts +12 -0
  106. package/dist/core/components/organisms/listbox/reorderList/DraggableList.d.ts +2 -2
  107. package/dist/core/components/organisms/listbox/reorderList/types.d.ts +2 -0
  108. package/dist/core/components/organisms/listbox/utils.d.ts +3 -0
  109. package/dist/core/components/organisms/menu/MenuContext.d.ts +1 -0
  110. package/dist/core/components/organisms/menu/SubMenuContext.d.ts +1 -0
  111. package/dist/core/components/organisms/select/Select.d.ts +4 -1
  112. package/dist/core/components/organisms/select/SelectContext.d.ts +3 -1
  113. package/dist/core/components/organisms/select/SelectOption.d.ts +1 -0
  114. package/dist/core/components/organisms/select/SelectTrigger.d.ts +4 -0
  115. package/dist/core/components/organisms/select/utils.d.ts +7 -2
  116. package/dist/core/components/organisms/textField/TextFieldCommon.d.ts +1 -0
  117. package/dist/core/components/organisms/verticalNav/VerticalNav.d.ts +2 -0
  118. package/dist/core/utils/overlayHelper.d.ts +3 -2
  119. package/dist/esm/index.js +4343 -1784
  120. package/dist/gzip/index.js +1 -1
  121. package/dist/gzip/index.js.gz +0 -0
  122. package/dist/index.js +4139 -1734
  123. package/dist/index.js.map +1 -1
  124. package/dist/index.umd.css +1558 -422
  125. package/dist/index.umd.js +1 -1
  126. package/dist/scripts/setupTest.d.ts +1 -0
  127. package/dist/types/tsconfig.type.tsbuildinfo +399 -243
  128. package/package.json +8 -13
@@ -9,25 +9,21 @@
9
9
  align-items: center;
10
10
  box-sizing: border-box;
11
11
  border-radius: var(--border-radius-10);
12
- border: var(--border);
12
+ box-shadow: inset 0 0 0 var(--border-width-2-5) var(--secondary);
13
13
  background: var(--white);
14
- overflow: hidden;
15
14
  transition: var(--duration--fast-01) var(--standard-productive-curve);
16
15
  }
17
16
 
18
17
  .MetricInput--regular {
19
18
  height: var(--spacing-80);
20
- padding-left: var(--spacing-30);
21
19
  }
22
20
 
23
21
  .MetricInput--large {
24
22
  height: 40px;
25
- padding-left: var(--spacing-40);
26
23
  }
27
24
 
28
25
  .MetricInput--small {
29
26
  height: var(--spacing-60);
30
- padding-left: var(--spacing-20);
31
27
  }
32
28
 
33
29
  .MetricInput:hover {
@@ -37,9 +33,12 @@
37
33
 
38
34
  .MetricInput:focus-within {
39
35
  background: var(--white);
40
- border-color: var(--secondary);
36
+ box-shadow: inset 0 0 0 var(--border-width-2-5) var(--secondary);
37
+ }
38
+
39
+ .MetricInput:focus-within:not(:has(.MetricInput-arrowButton:focus-visible)) {
41
40
  outline: var(--border-width-05) solid var(--primary-focus);
42
- outline-offset: var(--spacing-2-5);
41
+ outline-offset: var(--spacing-05);
43
42
  }
44
43
 
45
44
  .MetricInput:focus-within .MetricInput-icon {
@@ -48,13 +47,13 @@
48
47
 
49
48
  .MetricInput--disabled {
50
49
  background: var(--secondary-lightest);
51
- border-color: var(--secondary-light);
50
+ box-shadow: inset 0 0 0 var(--border-width-2-5) var(--secondary-light);
52
51
  pointer-events: none;
53
52
  }
54
53
 
55
54
  .MetricInput--readOnly {
56
55
  background: var(--secondary-lightest);
57
- border-color: var(--secondary);
56
+ box-shadow: inset 0 0 0 var(--border-width-2-5) var(--secondary);
58
57
  pointer-events: none;
59
58
  }
60
59
 
@@ -65,19 +64,46 @@
65
64
  .MetricInput--error,
66
65
  .MetricInput--error:hover {
67
66
  background: var(--white);
68
- border-color: var(--alert);
67
+ box-shadow: inset 0 0 0 var(--border-width-2-5) var(--alert);
69
68
  }
70
69
 
71
70
  .MetricInput--error:focus-within {
72
- border-color: var(--secondary);
71
+ box-shadow: inset 0 0 0 var(--border-width-2-5) var(--secondary);
72
+ }
73
+
74
+ .MetricInput--error:focus-within:not(:has(.MetricInput-arrowButton:focus-visible)) {
73
75
  outline: var(--border-width-05) solid var(--alert);
74
- outline-offset: var(--spacing-2-5);
76
+ outline-offset: var(--spacing-05);
75
77
  }
76
78
 
77
79
  .MetricInput--error:focus-within .MetricInput-icon {
78
80
  color: var(--alert);
79
81
  }
80
82
 
83
+ /* Content wrapper — holds icon, prefix, input, suffix */
84
+ .MetricInput-content {
85
+ flex: 1;
86
+ display: flex;
87
+ align-items: center;
88
+ min-width: 0;
89
+ overflow: hidden;
90
+ }
91
+
92
+ .MetricInput-content--regular {
93
+ padding: var(--spacing-15) var(--spacing-15);
94
+ gap: var(--spacing-05);
95
+ }
96
+
97
+ .MetricInput-content--large {
98
+ padding: var(--spacing-20) var(--spacing-15);
99
+ gap: var(--spacing-15);
100
+ }
101
+
102
+ .MetricInput-content--small {
103
+ padding: var(--spacing-10) var(--spacing-15);
104
+ gap: var(--spacing-05);
105
+ }
106
+
81
107
  .MetricInput-input {
82
108
  display: flex;
83
109
  width: 100%;
@@ -141,23 +167,14 @@
141
167
  margin: 0;
142
168
  }
143
169
 
144
- .MetricInput-arrowIcons {
145
- border-left: var(--border);
146
- box-sizing: border-box;
147
- border-radius: 0;
148
- background: transparent;
149
- display: flex;
150
- flex-direction: column;
151
- height: 100%;
152
- flex-shrink: 0;
153
- overflow: hidden;
154
- }
155
-
170
+ /* Arrow buttons (decrement on left, increment on right) */
156
171
  .MetricInput-arrowButton {
157
- height: 50%;
158
- border: none;
172
+ flex-shrink: 0;
173
+ align-self: stretch;
174
+ width: var(--spacing-60);
159
175
  background: var(--secondary-light);
160
176
  color: var(--inverse);
177
+ border: none;
161
178
  cursor: pointer;
162
179
  display: flex;
163
180
  align-items: center;
@@ -165,7 +182,16 @@
165
182
  padding: 0;
166
183
  margin: 0;
167
184
  user-select: none;
168
- overflow: hidden;
185
+ }
186
+
187
+ .MetricInput-arrowButton--left {
188
+ border-right: var(--border);
189
+ border-radius: var(--border-radius-10) 0 0 var(--border-radius-10);
190
+ }
191
+
192
+ .MetricInput-arrowButton--right {
193
+ border-left: var(--border);
194
+ border-radius: 0 var(--border-radius-10) var(--border-radius-10) 0;
169
195
  }
170
196
 
171
197
  .MetricInput-arrowButton:hover {
@@ -178,14 +204,42 @@
178
204
 
179
205
  .MetricInput-arrowButton:focus {
180
206
  outline: 0;
181
- box-shadow: var(--shadow-spread) var(--secondary-shadow);
182
207
  }
183
208
 
184
- .MetricInput-arrowIcons--small,
185
- .MetricInput-arrowIcons--regular {
186
- width: 20px;
187
- }
188
-
189
- .MetricInput-arrowIcons--large {
190
- width: var(--spacing-60);
209
+ .MetricInput-arrowButton:focus-visible {
210
+ outline: var(--border-width-05) solid var(--primary-focus);
211
+ outline-offset: var(--spacing-05);
212
+ }
213
+
214
+ @media (forced-colors: active) {
215
+ /* box-shadow is stripped — restore a real border for the wrapper boundary */
216
+ .MetricInput {
217
+ border: var(--border-width-2-5) solid ButtonText;
218
+ box-shadow: none;
219
+ }
220
+
221
+ .MetricInput--disabled {
222
+ border-color: GrayText;
223
+ }
224
+
225
+ /* Wrapper focus rings */
226
+ .MetricInput:focus-within:not(:has(.MetricInput-arrowButton:focus-visible)) {
227
+ outline: var(--border-width-05) solid Highlight;
228
+ outline-offset: var(--spacing-05);
229
+ }
230
+
231
+ .MetricInput--error:focus-within:not(:has(.MetricInput-arrowButton:focus-visible)) {
232
+ outline: var(--border-width-05) solid Highlight;
233
+ outline-offset: var(--spacing-05);
234
+ }
235
+
236
+ /* Arrow button states */
237
+ .MetricInput-arrowButton:disabled {
238
+ color: GrayText;
239
+ }
240
+
241
+ .MetricInput-arrowButton:focus-visible {
242
+ outline: var(--border-width-05) solid Highlight;
243
+ outline-offset: var(--spacing-05);
244
+ }
191
245
  }
@@ -87,3 +87,19 @@
87
87
  .Modal-body--withPadding {
88
88
  padding-bottom: var(--spacing-40);
89
89
  }
90
+
91
+ .Modal:focus {
92
+ outline: none;
93
+ }
94
+
95
+ .Modal-header [tabindex='-1']:focus {
96
+ outline: none;
97
+ }
98
+
99
+ @media (forced-colors: active) {
100
+ /* box-shadow is the only visual boundary; add a real border so the modal is visible */
101
+ .Modal {
102
+ border: var(--border-width-2-5) solid ButtonText;
103
+ box-shadow: none;
104
+ }
105
+ }
@@ -115,6 +115,22 @@
115
115
  border-top: var(--border);
116
116
  }
117
117
 
118
+ .Navigation-footerButton {
119
+ display: flex;
120
+ align-items: center;
121
+ justify-content: center;
122
+ background: none;
123
+ border: none;
124
+ padding: 0;
125
+ cursor: pointer;
126
+ border-radius: 50%;
127
+ }
128
+
129
+ .Navigation-footerButton:focus-visible {
130
+ outline: var(--border-width-05) solid var(--primary-focus);
131
+ outline-offset: var(--spacing-05);
132
+ }
133
+
118
134
  .Navigation--collapsed .Navigation-menuIcon--footer {
119
135
  transform: rotate(180deg);
120
136
  }
@@ -97,7 +97,7 @@
97
97
  outline: none;
98
98
  }
99
99
 
100
- .SegmentedControl-segment:focus-visible:not(.SegmentedControl-segment--selected) {
100
+ .SegmentedControl-segment:focus-visible {
101
101
  outline: var(--border-width-05) solid var(--primary-focus);
102
102
  outline-offset: var(--spacing-05);
103
103
  border-radius: var(--border-radius-10);
@@ -49,7 +49,7 @@
49
49
  color: var(--text);
50
50
  }
51
51
 
52
- .Select-trigger--filled:focus {
52
+ .Select-trigger--filled:focus-visible {
53
53
  background-color: var(--secondary-light);
54
54
  }
55
55
 
@@ -152,10 +152,11 @@
152
152
  cursor: pointer;
153
153
  border-radius: var(--border-radius-full);
154
154
  padding: var(--spacing-05);
155
+ border: none;
156
+ background: transparent;
155
157
  }
156
158
 
157
- .Select-crossButton:focus-visible,
158
- .Select-crossButton:focus {
159
+ .Select-crossButton:focus-visible {
159
160
  outline: var(--spacing-05) solid var(--primary-focus);
160
161
  }
161
162
 
@@ -197,3 +198,10 @@
197
198
  .Select-trigger--error {
198
199
  border: var(--border-width-2-5) solid var(--alert) !important;
199
200
  }
201
+
202
+ @media (forced-colors: active) {
203
+ .Select-input:focus-within {
204
+ outline: var(--border-width-05) solid Highlight !important;
205
+ outline-offset: var(--spacing-05);
206
+ }
207
+ }
@@ -97,3 +97,41 @@
97
97
  background-color: var(--primary-lightest);
98
98
  opacity: var(--opacity-10);
99
99
  }
100
+
101
+ @media (forced-colors: active) {
102
+ /* All states use inset box-shadow as the sole border — replace with real borders */
103
+ .Selection-card--default,
104
+ .Selection-card--default:hover,
105
+ .Selection-card--default:active,
106
+ .Selection-card--default-disabled {
107
+ border: var(--border-width-2-5) solid ButtonText;
108
+ box-shadow: none;
109
+ }
110
+
111
+ /* Interactive selected states — use Highlight to signal selection */
112
+ .Selection-card--selected,
113
+ .Selection-card--selected:hover,
114
+ .Selection-card--selected:active {
115
+ border: var(--border-width-2-5) solid Highlight;
116
+ box-shadow: none;
117
+ }
118
+
119
+ .Selection-card--selected-disabled {
120
+ border: var(--border-width-2-5) solid GrayText;
121
+ box-shadow: none;
122
+ }
123
+
124
+ .Selection-card--default:focus,
125
+ .Selection-card--default:focus-visible,
126
+ .Selection-card--selected:focus,
127
+ .Selection-card--selected:focus-visible {
128
+ outline: var(--border-width-05) solid Highlight;
129
+ outline-offset: var(--spacing-05);
130
+ box-shadow: none;
131
+ }
132
+
133
+ /* Disabled: suppress the focus indicator */
134
+ .Selection-card--disabled {
135
+ outline: none;
136
+ }
137
+ }
@@ -108,3 +108,19 @@
108
108
  .Sidesheet-body--firstPage {
109
109
  animation: fadeIn var(--duration--fast-02) var(--standard-expressive-curve);
110
110
  }
111
+
112
+ .Sidesheet:focus {
113
+ outline: none;
114
+ }
115
+
116
+ .Sidesheet-header [tabindex='-1']:focus {
117
+ outline: none;
118
+ }
119
+
120
+ @media (forced-colors: active) {
121
+ /* box-shadow is the only visual boundary; add a real left border so the panel edge is visible */
122
+ .Sidesheet {
123
+ border-left: var(--border-width-2-5) solid ButtonText;
124
+ box-shadow: none;
125
+ }
126
+ }
@@ -134,3 +134,24 @@
134
134
  outline: none;
135
135
  box-shadow: none;
136
136
  }
137
+
138
+ @media (forced-colors: active) {
139
+ /* Handle elevation comes from box-shadow only — add a real border so it stays visible */
140
+ .Slider-handle {
141
+ border: var(--border-width-05) solid ButtonText;
142
+ box-shadow: none;
143
+ }
144
+
145
+ /* Restore focus ring on the handle (outline:none is set unconditionally) */
146
+ .Slider-handle:focus,
147
+ .Slider-handle:focus-visible {
148
+ outline: var(--border-width-05) solid Highlight;
149
+ outline-offset: var(--spacing-05);
150
+ }
151
+
152
+ /* Filled portion of the track */
153
+ .Slider-progress--inRange {
154
+ forced-color-adjust: none;
155
+ background: Highlight;
156
+ }
157
+ }
@@ -135,3 +135,42 @@
135
135
  .Switch-wrapper--checkedDisabled:before {
136
136
  border-color: transparent;
137
137
  }
138
+
139
+ @media (forced-colors: active) {
140
+ .Switch-wrapper {
141
+ outline: var(--border-width-2-5) solid ButtonText;
142
+ outline-offset: calc(-1 * var(--border-width-2-5));
143
+ box-shadow: none;
144
+ }
145
+
146
+ /* Checked (enabled) track: use Highlight to distinguish on-state */
147
+ .Switch-wrapper--checked:not(.Switch-wrapper--checkedDisabled) {
148
+ background-color: Highlight;
149
+ }
150
+
151
+ .Switch-wrapper--checkedDisabled {
152
+ background-color: ButtonFace;
153
+ outline-color: GrayText;
154
+ }
155
+
156
+ /* Thumb: box-shadow is removed in forced-colors mode — ensure the existing border is visible */
157
+ .Switch-wrapper:before {
158
+ box-shadow: none;
159
+ border-color: ButtonText;
160
+ }
161
+
162
+ /* In the checked (enabled) state the thumb border is transparent — make it contrast against the track */
163
+ .Switch-wrapper--checked:not(.Switch-wrapper--checkedDisabled):before {
164
+ border-color: HighlightText;
165
+ }
166
+
167
+ /* Checked-disabled thumb: use GrayText so it reads as disabled */
168
+ .Switch-wrapper--checkedDisabled:before {
169
+ border-color: GrayText;
170
+ }
171
+
172
+ /* Unchecked-disabled thumb */
173
+ .Switch-wrapper--disabled:before {
174
+ border-color: GrayText;
175
+ }
176
+ }
@@ -28,11 +28,42 @@
28
28
  }
29
29
 
30
30
  .Table-Header-Label--hide {
31
- animation: fadeOut var(--duration--fast-02) var(--exit-productive-curve);
31
+ animation: tableHeaderFadeOut var(--duration--fast-02) var(--exit-productive-curve);
32
32
  animation-fill-mode: forwards;
33
+ pointer-events: none;
33
34
  }
34
35
 
35
36
  .Table-Header-Label--show {
36
37
  animation: fadeIn var(--duration--moderate-01) var(--entrance-productive-curve);
37
38
  animation-fill-mode: forwards;
38
39
  }
40
+
41
+ @keyframes tableHeaderFadeOut {
42
+ from {
43
+ opacity: 1;
44
+ visibility: visible;
45
+ }
46
+ to {
47
+ opacity: 0;
48
+ visibility: hidden;
49
+ }
50
+ }
51
+
52
+ @media (prefers-reduced-motion: reduce) {
53
+ .Table-Header-Label--hide,
54
+ .Table-Header-Label--show {
55
+ animation-duration: 0.001ms;
56
+ }
57
+ }
58
+
59
+ .Table-srOnly {
60
+ position: absolute;
61
+ width: var(--spacing-2-5);
62
+ height: var(--spacing-2-5);
63
+ padding: 0;
64
+ margin: calc(-1 * var(--spacing-2-5));
65
+ overflow: hidden;
66
+ clip: rect(0, 0, 0, 0);
67
+ white-space: nowrap;
68
+ border: 0;
69
+ }
@@ -182,3 +182,23 @@
182
182
  display: flex;
183
183
  box-sizing: border-box;
184
184
  }
185
+
186
+ @media (forced-colors: active) {
187
+ /* Dismissible tab close icons have outline:none unconditionally — restore focus ring in forced-colors mode */
188
+ .DismissibleRegularTab-icon--right:focus-visible,
189
+ .DismissibleSmallTab-icon--right:focus-visible {
190
+ outline: var(--border-width-05) solid Highlight;
191
+ }
192
+
193
+ .Tab--active::after {
194
+ background-color: transparent;
195
+ border-top: var(--spacing-05) solid Highlight;
196
+ box-sizing: border-box;
197
+ }
198
+
199
+ /* Disabled tab pills use opacity — use GrayText instead */
200
+ .Tab-pills--disabled {
201
+ opacity: 1;
202
+ color: GrayText;
203
+ }
204
+ }
@@ -0,0 +1,4 @@
1
+ .TimePicker-trigger {
2
+ width: calc(var(--spacing-40) * 20);
3
+ min-width: calc(var(--spacing-40) * 16);
4
+ }
@@ -55,6 +55,8 @@
55
55
  padding-left: var(--spacing-10);
56
56
  height: var(--spacing-60);
57
57
  box-sizing: initial;
58
+ background: transparent;
59
+ border: none;
58
60
  }
59
61
 
60
62
  .Toast-icon--info,
@@ -68,6 +70,13 @@
68
70
  color: var(--warning-darker);
69
71
  }
70
72
 
73
+ .Toast-closeButton {
74
+ background: transparent;
75
+ border: none;
76
+ color: inherit;
77
+ padding: 0;
78
+ }
79
+
71
80
  .Toast-close-icon:focus,
72
81
  .Toast-close-icon:focus-visible {
73
82
  outline: none;
@@ -187,3 +196,13 @@
187
196
  background: var(--warning-darker);
188
197
  color: var(--text-white);
189
198
  }
199
+
200
+ @media (forced-colors: active) {
201
+ /* Close icon focus ring is conveyed via box-shadow only — replace with outline */
202
+ .Toast-close-icon:focus,
203
+ .Toast-close-icon:focus-visible {
204
+ outline: var(--border-width-05) solid Highlight;
205
+ outline-offset: var(--spacing-05);
206
+ box-shadow: none;
207
+ }
208
+ }
@@ -15,6 +15,7 @@
15
15
  }
16
16
 
17
17
  .Tooltip-text {
18
+ white-space: pre-wrap;
18
19
  word-break: break-word;
19
20
  hyphens: auto;
20
21
  }
@@ -74,20 +74,24 @@
74
74
  background: var(--secondary-dark);
75
75
  }
76
76
 
77
- .MenuItem:focus {
77
+ .MenuItem:focus-visible {
78
78
  outline: var(--border-width-05) solid var(--primary-focus);
79
79
  outline-offset: var(--spacing-05);
80
80
  }
81
81
 
82
- .MenuItem--expanded:focus {
82
+ .MenuItem:focus:not(:focus-visible) {
83
+ outline: none;
84
+ }
85
+
86
+ .MenuItem--expanded:focus-visible {
83
87
  clip-path: inset(-6px -6px -6px 0);
84
88
  }
85
89
 
86
- .MenuItem--expandedRounded:focus {
90
+ .MenuItem--expandedRounded:focus-visible {
87
91
  clip-path: inset(-6px);
88
92
  }
89
93
 
90
- .MenuItem--disabled:focus {
94
+ .MenuItem--disabled:focus-visible {
91
95
  outline: none;
92
96
  }
93
97
 
@@ -130,11 +134,15 @@
130
134
  color: var(--primary-darker);
131
135
  }
132
136
 
133
- .MenuItem--active:focus {
137
+ .MenuItem--active:focus-visible {
134
138
  outline: var(--border-width-05) solid var(--primary-focus);
135
139
  outline-offset: var(--spacing-05);
136
140
  }
137
141
 
142
+ .MenuItem--active:focus:not(:focus-visible) {
143
+ outline: none;
144
+ }
145
+
138
146
  .MenuItem--rounded {
139
147
  border-radius: var(--border-radius-40);
140
148
  }
@@ -18,26 +18,3 @@
18
18
  .Overlay-container--close {
19
19
  animation-timing-function: cubic-bezier(0.4, 0.14, 1, 1);
20
20
  }
21
-
22
- ::-webkit-scrollbar {
23
- width: 16px;
24
- }
25
-
26
- ::-webkit-scrollbar-thumb {
27
- background: var(--secondary-dark);
28
- border-radius: 8px;
29
- border: 2px solid transparent;
30
- background-clip: content-box;
31
- }
32
-
33
- ::-webkit-scrollbar-thumb:hover {
34
- background: var(--inverse-lightest);
35
- border: 2px solid transparent;
36
- background-clip: content-box;
37
- }
38
-
39
- ::-webkit-scrollbar-thumb:active {
40
- background: var(--inverse-lighter);
41
- border: 2px solid transparent;
42
- background-clip: content-box;
43
- }