@innovaccer/design-system 4.23.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 (76) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/README.md +3 -3
  3. package/css/dist/index.css +1226 -325
  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 +5 -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 +187 -18
  12. package/css/src/components/calendar.module.css +49 -0
  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 +34 -0
  17. package/css/src/components/dropdown.module.css +7 -0
  18. package/css/src/components/dropzone.module.css +36 -0
  19. package/css/src/components/grid.module.css +29 -12
  20. package/css/src/components/horizontalNav.module.css +15 -0
  21. package/css/src/components/link.module.css +59 -6
  22. package/css/src/components/linkButton.module.css +82 -10
  23. package/css/src/components/listbox.module.css +85 -1
  24. package/css/src/components/metricInput.module.css +89 -35
  25. package/css/src/components/modal.module.css +8 -0
  26. package/css/src/components/segmentedControl.module.css +1 -1
  27. package/css/src/components/select.module.css +7 -0
  28. package/css/src/components/selectionCard.module.css +38 -0
  29. package/css/src/components/sidesheet.module.css +8 -0
  30. package/css/src/components/slider.module.css +21 -0
  31. package/css/src/components/switch.module.css +39 -0
  32. package/css/src/components/table.module.css +32 -1
  33. package/css/src/components/tabs.module.css +20 -0
  34. package/css/src/components/timePicker.module.css +4 -0
  35. package/css/src/components/toast.module.css +10 -0
  36. package/css/src/components/tooltip.module.css +1 -0
  37. package/css/src/tokens/index.css +156 -156
  38. package/css/src/utils/utility.css +4 -0
  39. package/css/src/variables/index.css +116 -1
  40. package/dist/brotli/index.js +1 -1
  41. package/dist/brotli/index.js.br +0 -0
  42. package/dist/cjs/index.js +1 -1
  43. package/dist/core/components/atoms/link/Link.d.ts +4 -2
  44. package/dist/core/components/atoms/linkButton/LinkButton.d.ts +1 -0
  45. package/dist/core/components/atoms/message/Message.d.ts +1 -0
  46. package/dist/core/components/atoms/outsideClick/OutsideClick.d.ts +1 -0
  47. package/dist/core/components/atoms/popperWrapper/PopperWrapper.d.ts +1 -0
  48. package/dist/core/components/atoms/progressBar/ProgressBar.d.ts +2 -0
  49. package/dist/core/components/atoms/progressRing/ProgressRing.d.ts +3 -0
  50. package/dist/core/components/atoms/segmentedControl/SegmentedControl.d.ts +2 -0
  51. package/dist/core/components/atoms/toast/Toast.d.ts +3 -0
  52. package/dist/core/components/molecules/chat/Chat.d.ts +3 -0
  53. package/dist/core/components/molecules/chat/chatBubble/IncomingBubble.d.ts +1 -0
  54. package/dist/core/components/molecules/chat/chatBubble/OutgoingBubble.d.ts +1 -0
  55. package/dist/core/components/molecules/chat/chatInput/ChatInput.d.ts +1 -0
  56. package/dist/core/components/molecules/chat/unreadMessage/UnreadMessage.d.ts +3 -0
  57. package/dist/core/components/molecules/dropzone/Dropzone.d.ts +1 -0
  58. package/dist/core/components/molecules/editableInput/EditableInput.d.ts +4 -0
  59. package/dist/core/components/molecules/inputMask/InputMask.d.ts +1 -0
  60. package/dist/core/components/molecules/popover/Popover.d.ts +1 -0
  61. package/dist/core/components/organisms/grid/Grid.d.ts +1 -0
  62. package/dist/core/components/organisms/grid/GridContext.d.ts +1 -0
  63. package/dist/core/components/organisms/grid/VirtualList.d.ts +1 -0
  64. package/dist/core/components/organisms/listbox/reorderList/Draggable.d.ts +11 -0
  65. package/dist/core/components/organisms/menu/SubMenuContext.d.ts +1 -0
  66. package/dist/core/components/organisms/textField/TextFieldCommon.d.ts +1 -0
  67. package/dist/core/components/organisms/verticalNav/VerticalNav.d.ts +2 -0
  68. package/dist/esm/index.js +1695 -709
  69. package/dist/gzip/index.js +1 -1
  70. package/dist/gzip/index.js.gz +0 -0
  71. package/dist/index.js +1536 -570
  72. package/dist/index.js.map +1 -1
  73. package/dist/index.umd.css +1216 -315
  74. package/dist/index.umd.js +1 -1
  75. package/dist/types/tsconfig.type.tsbuildinfo +152 -114
  76. package/package.json +1 -1
@@ -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
  }
@@ -95,3 +95,11 @@
95
95
  .Modal-header [tabindex='-1']:focus {
96
96
  outline: none;
97
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
+ }
@@ -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);
@@ -198,3 +198,10 @@
198
198
  .Select-trigger--error {
199
199
  border: var(--border-width-2-5) solid var(--alert) !important;
200
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
+ }
@@ -116,3 +116,11 @@
116
116
  .Sidesheet-header [tabindex='-1']:focus {
117
117
  outline: none;
118
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
+ }
@@ -196,3 +196,13 @@
196
196
  background: var(--warning-darker);
197
197
  color: var(--text-white);
198
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
  }