@tylertech/forge 3.4.1 → 3.5.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 (93) hide show
  1. package/custom-elements.json +1163 -134
  2. package/dist/avatar/forge-avatar.css +0 -1
  3. package/dist/dialog/forge-dialog.css +0 -1
  4. package/dist/divider/forge-divider.css +0 -1
  5. package/dist/label-value/forge-label-value.css +2 -0
  6. package/dist/lib.js +174 -1
  7. package/dist/lib.js.map +4 -4
  8. package/dist/vscode.css-custom-data.json +164 -3
  9. package/dist/vscode.html-custom-data.json +144 -2
  10. package/esm/app-bar/search/app-bar-search.js +1 -1
  11. package/esm/autocomplete/autocomplete-core.js +4 -2
  12. package/esm/autocomplete/autocomplete.js +1 -5
  13. package/esm/avatar/avatar.js +1 -1
  14. package/esm/backdrop/backdrop.js +1 -1
  15. package/esm/button-toggle/button-toggle/button-toggle-core.js +0 -1
  16. package/esm/chips/chip/chip.js +1 -1
  17. package/esm/core/utils/a11y-utils.d.ts +20 -1
  18. package/esm/core/utils/a11y-utils.js +26 -1
  19. package/esm/divider/divider.js +1 -1
  20. package/esm/drawer/drawer/drawer.js +1 -1
  21. package/esm/drawer/mini-drawer/mini-drawer.d.ts +1 -0
  22. package/esm/drawer/mini-drawer/mini-drawer.js +2 -1
  23. package/esm/file-picker/file-picker-adapter.d.ts +2 -0
  24. package/esm/file-picker/file-picker-adapter.js +6 -0
  25. package/esm/file-picker/file-picker-core.js +1 -0
  26. package/esm/icon-button/icon-button.js +1 -1
  27. package/esm/index.d.ts +2 -0
  28. package/esm/index.js +8 -0
  29. package/esm/key/index.d.ts +7 -0
  30. package/esm/key/index.js +7 -0
  31. package/esm/key/key/index.d.ts +7 -0
  32. package/esm/key/key/index.js +11 -0
  33. package/esm/key/key/key.d.ts +30 -0
  34. package/esm/key/key/key.js +43 -0
  35. package/esm/key/key-item/index.d.ts +7 -0
  36. package/esm/key/key-item/index.js +11 -0
  37. package/esm/key/key-item/key-item.d.ts +47 -0
  38. package/esm/key/key-item/key-item.js +86 -0
  39. package/esm/label-value/label-value.js +1 -1
  40. package/esm/linear-progress/linear-progress.js +1 -1
  41. package/esm/list-dropdown/list-dropdown-aware.d.ts +1 -0
  42. package/esm/list-dropdown/list-dropdown-aware.js +11 -0
  43. package/esm/meter/index.d.ts +7 -0
  44. package/esm/meter/index.js +7 -0
  45. package/esm/meter/meter/index.d.ts +7 -0
  46. package/esm/meter/meter/index.js +11 -0
  47. package/esm/meter/meter/meter.d.ts +187 -0
  48. package/esm/meter/meter/meter.js +359 -0
  49. package/esm/meter/meter-group/index.d.ts +7 -0
  50. package/esm/meter/meter-group/index.js +11 -0
  51. package/esm/meter/meter-group/meter-group.d.ts +108 -0
  52. package/esm/meter/meter-group/meter-group.js +198 -0
  53. package/esm/select/select/select.d.ts +3 -1
  54. package/esm/split-view/split-view/split-view.js +1 -1
  55. package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
  56. package/esm/toolbar/toolbar.d.ts +2 -2
  57. package/esm/toolbar/toolbar.js +3 -3
  58. package/package.json +2 -1
  59. package/sass/avatar/_core.scss +0 -2
  60. package/sass/backdrop/_core.scss +0 -1
  61. package/sass/core/styles/tokens/app-bar/search/_tokens.scss +1 -1
  62. package/sass/core/styles/tokens/drawer/mini/_tokens.scss +1 -0
  63. package/sass/core/styles/tokens/key/key/_tokens.scss +17 -0
  64. package/sass/core/styles/tokens/key/key-item/_tokens.scss +22 -0
  65. package/sass/core/styles/tokens/meter/meter/_tokens.scss +30 -0
  66. package/sass/core/styles/tokens/meter/meter-group/_tokens.scss +26 -0
  67. package/sass/core/styles/typography/index.scss +1 -1
  68. package/sass/divider/_core.scss +0 -1
  69. package/sass/drawer/base/_core.scss +1 -2
  70. package/sass/drawer/drawer/drawer.scss +3 -9
  71. package/sass/drawer/mini-drawer/_core.scss +1 -0
  72. package/sass/icon-button/icon-button.scss +20 -1
  73. package/sass/key/key/_core.scss +20 -0
  74. package/sass/key/key/_token-utils.scss +30 -0
  75. package/sass/key/key/index.scss +6 -0
  76. package/sass/key/key/key.scss +26 -0
  77. package/sass/key/key-item/_core.scss +69 -0
  78. package/sass/key/key-item/_token-utils.scss +30 -0
  79. package/sass/key/key-item/index.scss +6 -0
  80. package/sass/key/key-item/key-item.scss +60 -0
  81. package/sass/label-value/_core.scss +2 -0
  82. package/sass/linear-progress/_core.scss +4 -1
  83. package/sass/meter/meter/_core.scss +206 -0
  84. package/sass/meter/meter/_token-utils.scss +30 -0
  85. package/sass/meter/meter/index.scss +6 -0
  86. package/sass/meter/meter/meter.scss +218 -0
  87. package/sass/meter/meter-group/_core.scss +83 -0
  88. package/sass/meter/meter-group/_token-utils.scss +30 -0
  89. package/sass/meter/meter-group/index.scss +6 -0
  90. package/sass/meter/meter-group/meter-group.scss +111 -0
  91. package/sass/split-view/split-view/_mixins.scss +0 -1
  92. package/sass/split-view/split-view-panel/_mixins.scss +2 -2
  93. package/sass/toolbar/_core.scss +0 -1
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @license
3
+ * Copyright Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ @use '../../core/styles/theme';
7
+ @use '../../core/styles/typography';
8
+ @use '../../icon';
9
+ @use './token-utils' as *;
10
+
11
+ @forward './token-utils';
12
+
13
+ @mixin host {
14
+ display: inline;
15
+ }
16
+
17
+ @mixin base {
18
+ @include typography.style(label1);
19
+
20
+ box-sizing: border-box;
21
+ display: grid;
22
+ grid-template:
23
+ 'icon label'
24
+ 'icon value';
25
+ column-gap: #{token(gap)};
26
+ inline-size: fit-content;
27
+ line-height: normal;
28
+ }
29
+
30
+ @mixin icon {
31
+ @include icon.provide-theme(
32
+ (
33
+ size: #{token(icon-size)}
34
+ )
35
+ );
36
+
37
+ grid-area: icon;
38
+ color: #{token(icon-color)};
39
+ }
40
+
41
+ @mixin label {
42
+ grid-area: label;
43
+ color: #{token(label-color)};
44
+ }
45
+
46
+ @mixin value {
47
+ grid-area: value;
48
+ color: #{token(value-color)};
49
+ }
50
+
51
+ @mixin default-icon {
52
+ // Subtract a pixel from the default icon's size to better match the size of a slotted icon
53
+ block-size: calc(#{token(icon-size)} - 1px);
54
+ inline-size: calc(#{token(icon-size)} - 1px);
55
+ border-radius: 50%;
56
+ background: currentColor;
57
+ }
58
+
59
+ @mixin inline {
60
+ grid-template: 'icon label value';
61
+ grid-template-columns: auto 1fr auto;
62
+ align-items: center;
63
+ inline-size: auto;
64
+ }
65
+
66
+ @mixin no-value {
67
+ grid-template: 'icon label';
68
+ align-items: center;
69
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ @use '../../core/styles/tokens/key/key-item/tokens';
7
+ @use '../../core/styles/tokens/token-utils';
8
+
9
+ $_module: key-item;
10
+ $_tokens: tokens.$tokens;
11
+
12
+ @mixin provide-theme($theme) {
13
+ @include token-utils.provide-theme($_module, $_tokens, $theme);
14
+ }
15
+
16
+ @function token($name, $type: token) {
17
+ @return token-utils.token($_module, $_tokens, $name, $type);
18
+ }
19
+
20
+ @function declare($token) {
21
+ @return token-utils.declare($_module, $token);
22
+ }
23
+
24
+ @mixin override($token, $token-or-value, $type: token) {
25
+ @include token-utils.override($_module, $_tokens, $token, $token-or-value, $type);
26
+ }
27
+
28
+ @mixin tokens($includes: null, $excludes: null) {
29
+ @include token-utils.tokens($_module, $_tokens, $includes, $excludes);
30
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ @forward './core';
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @license
3
+ * Copyright Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ @use './core';
7
+
8
+ //
9
+ // Host
10
+ //
11
+
12
+ :host {
13
+ @include core.host;
14
+ }
15
+
16
+ //
17
+ // Base
18
+ //
19
+
20
+ .forge-key-item {
21
+ @include core.tokens;
22
+ }
23
+
24
+ .forge-key-item {
25
+ @include core.base;
26
+
27
+ &.inline {
28
+ @include core.inline;
29
+ }
30
+
31
+ &.no-value {
32
+ @include core.no-value;
33
+
34
+ .value {
35
+ display: none;
36
+ }
37
+ }
38
+
39
+ &:not(.inline, .no-value) {
40
+ .label {
41
+ padding-block-start: 1px;
42
+ }
43
+ }
44
+ }
45
+
46
+ .icon {
47
+ @include core.icon;
48
+ }
49
+
50
+ .label {
51
+ @include core.label;
52
+ }
53
+
54
+ .value {
55
+ @include core.value;
56
+ }
57
+
58
+ .default-icon {
59
+ @include core.default-icon;
60
+ }
@@ -42,6 +42,7 @@
42
42
 
43
43
  line-height: normal;
44
44
  text-align: #{token(align)};
45
+ overflow-wrap: anywhere;
45
46
 
46
47
  color: #{token(label-color)};
47
48
  }
@@ -56,6 +57,7 @@
56
57
 
57
58
  line-height: normal;
58
59
  text-align: #{token(align)};
60
+ overflow-wrap: anywhere;
59
61
  }
60
62
 
61
63
  @mixin value-empty {
@@ -13,8 +13,11 @@
13
13
  position: relative;
14
14
  min-inline-size: 80px;
15
15
  block-size: #{token(track-height)};
16
- content-visibility: auto;
16
+
17
+ // `contain` and `content-visibility` are performance optimizations important here because progress indicators
18
+ // are often used when a CPU=intensive task is underway so it's especially important to minimize their CPU consumption.
17
19
  contain: strict;
20
+ content-visibility: auto;
18
21
  }
19
22
 
20
23
  @mixin progress {
@@ -0,0 +1,206 @@
1
+ /**
2
+ * @license
3
+ * Copyright Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ @use '../../core/styles/spacing';
7
+ @use '../../core/styles/theme';
8
+ @use '../../core/styles/typography';
9
+ @use '../meter-group/token-utils' as meter-group;
10
+ @use './token-utils' as *;
11
+
12
+ @forward './token-utils';
13
+
14
+ @mixin host {
15
+ display: inline;
16
+ }
17
+
18
+ @mixin vertical-host {
19
+ display: block;
20
+ }
21
+
22
+ @mixin base {
23
+ box-sizing: border-box;
24
+ }
25
+
26
+ @mixin vertical-base {
27
+ display: flex;
28
+ flex-direction: row-reverse;
29
+ align-items: end;
30
+ width: fit-content;
31
+ height: 100%;
32
+ max-width: 100%;
33
+ }
34
+
35
+ @mixin heading {
36
+ @include typography.style(label1);
37
+
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: space-between;
41
+ line-height: normal;
42
+ }
43
+
44
+ @mixin vertical-heading {
45
+ flex-direction: column;
46
+ align-items: start;
47
+ }
48
+
49
+ @mixin heading-with-content {
50
+ margin-bottom: #{spacing.variable(xxsmall)};
51
+ }
52
+
53
+ @mixin vertical-heading-with-content {
54
+ margin-bottom: 0;
55
+ margin-left: #{spacing.variable(xsmall)};
56
+ }
57
+
58
+ @mixin label {
59
+ white-space: nowrap;
60
+ overflow: hidden;
61
+ text-overflow: ellipsis;
62
+ }
63
+
64
+ @mixin value {
65
+ color: #{theme.variable(text-medium)};
66
+ }
67
+
68
+ @mixin track {
69
+ position: relative;
70
+ block-size: #{token(height)};
71
+ border-radius: #{token(shape)};
72
+ overflow: hidden;
73
+ background: #{token(background)};
74
+ }
75
+
76
+ @mixin vertical-track {
77
+ width: #{token(height)};
78
+ height: 100%;
79
+ }
80
+
81
+ @mixin bar {
82
+ position: absolute;
83
+ left: -100%;
84
+ width: 100%;
85
+ height: 100%;
86
+ border-radius: #{token(inner-shape)};
87
+ box-shadow: #{token(inner-elevation)};
88
+ background: #{token(color)};
89
+ translate: #{token(percentage, custom)} 0;
90
+ }
91
+
92
+ @mixin vertical-bar {
93
+ left: initial;
94
+ top: 100%;
95
+ translate: 0 calc(-1 * #{token(percentage, custom)});
96
+ }
97
+
98
+ @mixin theme($theme, $muted: false) {
99
+ $background: "#{$theme}-container-#{if($muted, 'minimum', 'low')}";
100
+ $color: "#{$theme}#{if($muted, '-container-high', '')}";
101
+
102
+ @include override(background, #{theme.variable($background)}, value);
103
+ @include override(color, #{theme.variable($color)}, value);
104
+ }
105
+
106
+ @mixin lowest {
107
+ @include override(inner-elevation, 0, value);
108
+ }
109
+
110
+ @function tickmarks-background($count, $color, $secondary-color: null, $vertical: false) {
111
+ $transparent-start: if($secondary-color, 2px, 1px);
112
+ @return repeating-linear-gradient(
113
+ if($vertical, 0, 90deg),
114
+ $color 0px,
115
+ $color 1px,
116
+ if($secondary-color, #{$secondary-color} + ' 1px,', null) if($secondary-color, #{$secondary-color} + ' 2px,', null) transparent $transparent-start,
117
+ transparent calc(100% / ($count + 1) + 0px)
118
+ );
119
+ }
120
+
121
+ @mixin tickmarks {
122
+ // We add an inline margin and offset the background to hide tickmarks right at the edge of the meter
123
+ $background-offset: 2px;
124
+
125
+ content: '';
126
+ position: relative;
127
+ display: block;
128
+ width: 100%;
129
+ height: 100%;
130
+ margin-left: $background-offset;
131
+ background: tickmarks-background(token(tickmarks), token(color), token(background));
132
+ background-position-x: -$background-offset;
133
+ opacity: #{token(tickmark-opacity)};
134
+ pointer-events: none;
135
+ }
136
+
137
+ @mixin vertical-tickmarks {
138
+ // Use a background offset same as the horizontal mixin but in the block direction
139
+ $background-offset: 2px;
140
+
141
+ margin-top: -$background-offset;
142
+ margin-left: 0;
143
+ background: tickmarks-background(token(tickmarks), token(color), token(background), true);
144
+ background-position-x: 0;
145
+ background-position-y: $background-offset;
146
+ }
147
+
148
+ @mixin bar-animation {
149
+ transition-property: translate, box-shadow;
150
+ transition-duration: #{token(transition-duration)};
151
+ transition-timing-function: #{token(transition-timing)};
152
+ }
153
+
154
+ @mixin segmented-animation {
155
+ transition-property: background;
156
+ transition-duration: #{token(transition-duration)};
157
+ transition-timing-function: #{token(transition-timing)};
158
+ }
159
+
160
+ @mixin segmented-bar-animation {
161
+ transition-property: translate, box-shadow, background;
162
+ transition-duration: #{token(transition-duration)};
163
+ transition-timing-function: #{token(transition-timing)};
164
+ }
165
+
166
+ @mixin tickmarks-animation {
167
+ transition-property: background;
168
+ transition-duration: #{token(transition-duration)};
169
+ transition-timing-function: #{token(transition-timing)};
170
+ }
171
+
172
+ /* stylelint-disable custom-property-pattern */
173
+ // Manually reference the height of the meter group to avoid a circular dependency. Use half the
174
+ // meter group's height to extend the meter behind the radius of the preceding meter.
175
+ $leading: calc(#{meter-group.token(height)} * 0.5);
176
+ /* stylelint-enable custom-property-pattern */
177
+
178
+ @mixin grouped {
179
+ display: block;
180
+ position: absolute;
181
+ z-index: #{token(z-index, custom)};
182
+ top: 0;
183
+ left: #{token(inset, custom)};
184
+ width: calc(#{token(percentage, custom)} + $leading);
185
+ height: 100%;
186
+ border-radius: #{token(inner-shape)};
187
+ border-top-left-radius: 0;
188
+ border-bottom-left-radius: 0;
189
+ margin-left: calc(-1 * $leading);
190
+ background: #{token(color)};
191
+ box-shadow: #{token(inner-elevation)};
192
+ }
193
+
194
+ @mixin vertical-grouped {
195
+ display: block;
196
+ top: calc(100% - #{token(percentage, custom)} - #{token(inset, custom)});
197
+ left: 0;
198
+ width: 100%;
199
+ height: calc(#{token(percentage, custom)} + $leading);
200
+ max-width: initial;
201
+ border-radius: #{token(inner-shape)};
202
+ border-bottom-left-radius: 0;
203
+ border-bottom-right-radius: 0;
204
+ margin-left: 0;
205
+ margin-bottom: calc(-1 * $leading);
206
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ @use '../../core/styles/tokens/meter/meter/tokens';
7
+ @use '../../core/styles/tokens/token-utils';
8
+
9
+ $_module: meter;
10
+ $_tokens: tokens.$tokens;
11
+
12
+ @mixin provide-theme($theme) {
13
+ @include token-utils.provide-theme($_module, $_tokens, $theme);
14
+ }
15
+
16
+ @function token($name, $type: token) {
17
+ @return token-utils.token($_module, $_tokens, $name, $type);
18
+ }
19
+
20
+ @function declare($token) {
21
+ @return token-utils.declare($_module, $token);
22
+ }
23
+
24
+ @mixin override($token, $token-or-value, $type: token) {
25
+ @include token-utils.override($_module, $_tokens, $token, $token-or-value, $type);
26
+ }
27
+
28
+ @mixin tokens($includes: null, $excludes: null) {
29
+ @include token-utils.tokens($_module, $_tokens, $includes, $excludes);
30
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ @forward './core';
@@ -0,0 +1,218 @@
1
+ /**
2
+ * @license
3
+ * Copyright Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ @use '../../core/styles/shape';
7
+ @use '../../core/styles/spacing';
8
+ @use '../../core/styles/theme';
9
+ @use './core';
10
+
11
+ //
12
+ // Host
13
+ //
14
+
15
+ :host {
16
+ @include core.host;
17
+ }
18
+
19
+ //
20
+ // Base
21
+ //
22
+
23
+ .forge-meter {
24
+ @include core.tokens;
25
+ }
26
+
27
+ .forge-meter {
28
+ @include core.base;
29
+
30
+ .heading {
31
+ @include core.heading;
32
+
33
+ &.not-empty {
34
+ @include core.heading-with-content;
35
+ }
36
+ }
37
+
38
+ .label {
39
+ @include core.label;
40
+ }
41
+
42
+ .value {
43
+ @include core.value;
44
+ }
45
+
46
+ .track {
47
+ @include core.track;
48
+
49
+ &.segmented {
50
+ @include core.theme(warning);
51
+ @include core.segmented-animation;
52
+
53
+ &.least-optimal {
54
+ @include core.theme(error);
55
+ }
56
+
57
+ &.optimal {
58
+ @include core.theme(success);
59
+ }
60
+
61
+ .bar {
62
+ @include core.segmented-bar-animation;
63
+ }
64
+ }
65
+
66
+ &.lowest {
67
+ @include core.lowest;
68
+ }
69
+
70
+ &.tickmarks::after {
71
+ @include core.tickmarks;
72
+ @include core.tickmarks-animation;
73
+ }
74
+ }
75
+
76
+ .bar {
77
+ @include core.bar;
78
+ @include core.bar-animation;
79
+ }
80
+
81
+ &.grouped {
82
+ @include core.grouped;
83
+
84
+ &.muted {
85
+ @include core.override(color, #{theme.variable(tertiary-container-high)}, value);
86
+ }
87
+ }
88
+
89
+ @each $key, $value in ('small': 'xsmall', 'medium': 'medium', 'large': 'large') {
90
+ &.density--#{$key} {
91
+ @include core.override(height, spacing.variable($value), value);
92
+ }
93
+ }
94
+
95
+ @each $key, $value in ('default': shape.variable(medium), 'rounded': shape.variable(full), 'squared': 0) {
96
+ &.shape--#{$key} {
97
+ @include core.override(shape, $value, value);
98
+ }
99
+ }
100
+
101
+ &.inner-shape--inherit {
102
+ @include core.override(inner-shape, shape);
103
+ }
104
+
105
+ &.muted {
106
+ .track {
107
+ @include core.theme(tertiary, $muted: true);
108
+
109
+ &.segmented {
110
+ @include core.theme(warning, $muted: true);
111
+
112
+ &.least-optimal {
113
+ @include core.theme(error, $muted: true);
114
+ }
115
+
116
+ &.optimal {
117
+ @include core.theme(success, $muted: true);
118
+ }
119
+ }
120
+ }
121
+ }
122
+ }
123
+
124
+ //
125
+ // Vertical
126
+ //
127
+
128
+ :host(:is(:state(vertical), :--vertical)) {
129
+ @include core.vertical-host;
130
+
131
+ .forge-meter {
132
+ @include core.vertical-base;
133
+
134
+ .heading {
135
+ @include core.vertical-heading;
136
+
137
+ &.not-empty {
138
+ @include core.vertical-heading-with-content;
139
+ }
140
+ }
141
+
142
+ .track {
143
+ @include core.vertical-track;
144
+
145
+ &.tickmarks::after {
146
+ @include core.vertical-tickmarks;
147
+ }
148
+ }
149
+
150
+ .bar {
151
+ @include core.vertical-bar;
152
+ }
153
+
154
+ &.grouped {
155
+ @include core.vertical-grouped;
156
+ }
157
+ }
158
+ }
159
+
160
+ //
161
+ // Theme
162
+ //
163
+
164
+ @each $value in ('primary', 'secondary', 'tertiary', 'success', 'warning', 'error', 'info') {
165
+ .theme--#{$value} {
166
+ &:not(.muted) {
167
+ .track:not(.segmented) {
168
+ @include core.theme($value);
169
+ }
170
+
171
+ &.grouped {
172
+ @include core.theme($value);
173
+ }
174
+ }
175
+
176
+ &.muted {
177
+ .track:not(.segmented) {
178
+ @include core.theme($value, $muted: true);
179
+ }
180
+
181
+ .grouped {
182
+ @include core.theme($value, $muted: true);
183
+ }
184
+ }
185
+ }
186
+ }
187
+
188
+ //
189
+ // Media
190
+ //
191
+
192
+ @media (prefers-reduced-motion: reduce) {
193
+ .track {
194
+ @include core.override(transition-duration, 0, value);
195
+ }
196
+ }
197
+
198
+ @media (forced-colors: active) {
199
+ .track {
200
+ border: 1px solid CanvasText;
201
+
202
+ .bar {
203
+ background: CanvasText;
204
+ }
205
+ }
206
+
207
+ .grouped {
208
+ border-inline-end: 1px solid Canvas !important;
209
+ background: CanvasText !important;
210
+ }
211
+
212
+ :host(:is(:state(vertical), :--vertical)) {
213
+ .grouped {
214
+ border-block-start: 1px solid CanvasText !important;
215
+ border-inline-end: initial !important;
216
+ }
217
+ }
218
+ }