@tui/design-system 1.6.0 → 1.8.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 (49) hide show
  1. package/CHANGELOG.md +186 -1
  2. package/dist/themes/crystalski/index.css +38 -1
  3. package/dist/themes/crystalski/index.css.map +1 -1
  4. package/dist/themes/firstchoice/index.css +38 -1
  5. package/dist/themes/firstchoice/index.css.map +1 -1
  6. package/dist/themes/tui/index.css +40 -3
  7. package/dist/themes/tui/index.css.map +1 -1
  8. package/package.json +11 -10
  9. package/scss/lib/accordion/_mixins.scss +13 -6
  10. package/scss/lib/active-tag/_mixins.scss +16 -4
  11. package/scss/lib/cards/carousel/_index.scss +3 -0
  12. package/scss/lib/cards/carousel/_mixins.scss +164 -0
  13. package/scss/lib/cards/carousel/_variables.scss +13 -0
  14. package/scss/lib/cards/promotion/_index.scss +3 -0
  15. package/scss/lib/cards/promotion/_mixins.scss +275 -0
  16. package/scss/lib/cards/promotion/_variables.scss +14 -0
  17. package/scss/lib/cards/selectable/_mixins.scss +1 -1
  18. package/scss/lib/flyout-dropdown/_variables.scss +0 -1
  19. package/scss/lib/forms/input-switch/_mixins.scss +12 -6
  20. package/scss/lib/highlight-panel/_index.scss +2 -0
  21. package/scss/lib/highlight-panel/_mixins.scss +244 -0
  22. package/scss/lib/highlight-panel/_variables.scss +21 -0
  23. package/scss/lib/list/_mixins.scss +140 -70
  24. package/scss/lib/list/_variables.scss +2 -0
  25. package/scss/lib/modal/_variables.scss +1 -4
  26. package/scss/lib/patterns/review-card/_index.scss +3 -0
  27. package/scss/lib/patterns/review-card/_mixins.scss +283 -0
  28. package/scss/lib/patterns/review-card/_variables.scss +3 -0
  29. package/scss/lib/ratings-reviews/range-icons/_mixins.scss +16 -2
  30. package/scss/lib/ratings-reviews/range-icons/_variables.scss +2 -0
  31. package/scss/lib/skeleton/_variables.scss +2 -6
  32. package/scss/lib/tabs/_mixins.scss +117 -60
  33. package/scss/lib/tabs/anchor/_mixins.scss +36 -0
  34. package/scss/lib/tabs/in-page/_mixins.scss +82 -29
  35. package/scss/lib/tooltip/_mixins.scss +2 -0
  36. package/scss/mixins.scss +4 -0
  37. package/scss/themes/crystalski/_overrides.scss +27 -0
  38. package/scss/themes/crystalski/index.scss +9 -0
  39. package/scss/themes/crystalski/theme.json +14 -0
  40. package/scss/themes/firstchoice/_overrides.scss +29 -0
  41. package/scss/themes/firstchoice/index.scss +9 -0
  42. package/scss/themes/firstchoice/theme.json +20 -0
  43. package/scss/themes/tui/_overrides.scss +19 -0
  44. package/scss/themes/tui/index.scss +9 -0
  45. package/scss/themes/tui/theme.json +8 -0
  46. package/scss/variables/_primitives.scss +3 -0
  47. package/scss/variables/base-theme.json +234 -1
  48. package/scss/variables.scss +6 -0
  49. package/types/components.ts +39 -2
@@ -4,6 +4,7 @@
4
4
  @use '../icon/mixins' as *;
5
5
 
6
6
  $uilib-active-tag-included: false !default;
7
+ $uilib-active-tag-group-included: false !default;
7
8
 
8
9
  // Builds active tag
9
10
  @mixin uilib-active-tag() {
@@ -15,6 +16,16 @@ $uilib-active-tag-included: false !default;
15
16
  }
16
17
  }
17
18
 
19
+ @mixin uilib-active-tag-group() {
20
+ @if not $uilib-active-tag-group-included {
21
+ $uilib-active-tag-group-included: true !global;
22
+
23
+ @include uilib-icon;
24
+ @include uilib-link;
25
+ @include uilib-active-tag-group-master;
26
+ }
27
+ }
28
+
18
29
  @mixin uilib-active-tag-master() {
19
30
  .uilib-active-tag {
20
31
  display: flex;
@@ -73,16 +84,17 @@ $uilib-active-tag-included: false !default;
73
84
  }
74
85
  }
75
86
 
76
- @mixin uilib-active-tag-group() {
77
- @include uilib-icon;
78
- @include uilib-link;
79
-
87
+ @mixin uilib-active-tag-group-master() {
80
88
  .uilib-active-tag-group {
81
89
  display: flex;
82
90
  flex-wrap: wrap;
83
91
  gap: var(--uilib-spacing-200);
84
92
  align-items: center;
85
93
 
94
+ &__visually-hidden {
95
+ @include uilib-visually-hidden;
96
+ }
97
+
86
98
  &__list {
87
99
  display: flex;
88
100
  flex-wrap: wrap;
@@ -0,0 +1,3 @@
1
+ // Carousel / index
2
+ @use 'mixins' as *;
3
+ @include uilib-carousel;
@@ -0,0 +1,164 @@
1
+ // Carousel / _mixins
2
+ @use 'sass:map';
3
+ @use 'variables' as *;
4
+ @use '../../utility/mixins' as *;
5
+ @use '../../icon-button/mixins' as *;
6
+
7
+ $uilib-carousel-included: false !default;
8
+
9
+ @mixin uilib-carousel() {
10
+ @if not $uilib-carousel-included {
11
+ $uilib-carousel-included: true !global;
12
+
13
+ @include uilib-icon-button;
14
+ @include uilib-carousel-master;
15
+ }
16
+ }
17
+
18
+ @mixin uilib-carousel-master() {
19
+ .uilib-carousel {
20
+ position: relative;
21
+
22
+ display: block;
23
+
24
+ margin: var(--uilib-spacing-400) 0;
25
+ }
26
+
27
+ .uilib-carousel__viewport {
28
+ // `overflow-x: auto` forces `overflow-y` to `auto`, clipping card shadows and
29
+ // focus rings. The block padding (+ matching negative margin) gives shadow/focus
30
+ // room without changing height.
31
+ margin-block: calc(-1 * var(--uilib-carousel-viewport-padding));
32
+ padding-block: var(--uilib-carousel-viewport-padding);
33
+
34
+ overflow-x: auto;
35
+ overscroll-behavior-x: contain;
36
+
37
+ // Sizes `.uilib-carousel__slide` via `cqw` against the visible frame, not the
38
+ // track's own (overflowing) intrinsic width.
39
+ container-type: inline-size;
40
+ }
41
+
42
+ // Once enhanced, the prev/next controls and drag/swipe are wired up as a replacement
43
+ // for native scrolling, so the native scrollbar is hidden. Before that (no-JS or
44
+ // init-failure fallback) the scrollbar stays visible — it's the only affordance that
45
+ // the content scrolls, since the controls don't work without the behaviour.
46
+ .uilib-carousel--enhanced .uilib-carousel__viewport {
47
+ // Embla drives movement via a transform, so native scrolling is disabled: a leftover
48
+ // `scrollLeft` after a resize would combine with the transform and reveal slivers of
49
+ // adjacent cards. `clip` (not `hidden`) keeps `overflow-y` visible for shadows.
50
+ overflow-x: clip;
51
+
52
+ scrollbar-width: none;
53
+
54
+ &::-webkit-scrollbar {
55
+ display: none;
56
+ }
57
+ }
58
+
59
+ .uilib-carousel__track {
60
+ display: flex;
61
+
62
+ // Slides carry their own spacing via padding (see __slide) — a track `gap` here
63
+ // would be mismeasured by Embla and clip the trailing slide.
64
+ gap: 0;
65
+
66
+ @media (prefers-reduced-motion: no-preference) {
67
+ transition: transform var(--uilib-carousel-motion-duration) var(--uilib-carousel-motion-easing);
68
+ }
69
+ }
70
+
71
+ // One item per slide, always — the behaviour never re-parents consumer content; grouping
72
+ // N slides into one page (page variant) is done via Embla's `slidesToScroll`, not DOM
73
+ // wrapping. Each slide fills 1/N of the frame (`--uilib-carousel-visible`, set by the
74
+ // behaviour; 1 without JS), so N whole, equal-width cards are always shown.
75
+ .uilib-carousel__slide {
76
+ display: flex;
77
+ flex: 0 0 calc(100cqw / var(--uilib-carousel-visible, 1));
78
+
79
+ min-width: 0;
80
+ padding-inline: calc(var(--uilib-carousel-gap) / 2);
81
+ }
82
+
83
+ .uilib-carousel__item {
84
+ flex: 1;
85
+ }
86
+
87
+ .uilib-carousel__control--prev .uilib-icon {
88
+ -webkit-mask-image: var(--uilib-carousel-prev-icon);
89
+ mask-image: var(--uilib-carousel-prev-icon);
90
+ }
91
+
92
+ .uilib-carousel__control--next .uilib-icon {
93
+ -webkit-mask-image: var(--uilib-carousel-next-icon);
94
+ mask-image: var(--uilib-carousel-next-icon);
95
+ }
96
+
97
+ .uilib-carousel__counter {
98
+ color: var(--uilib-carousel-counter-color);
99
+ font: var(--uilib-carousel-counter-font);
100
+ white-space: nowrap;
101
+ }
102
+
103
+ .uilib-carousel--page,
104
+ .uilib-carousel--item {
105
+ display: flex;
106
+ flex-direction: column;
107
+ gap: var(--uilib-spacing-400);
108
+ }
109
+
110
+ // Bleeds the viewport back out by the slide's own inline padding (see __slide) so
111
+ // cards land flush with the grid edge. Width must grow by the same amount the margin
112
+ // pulls in to actually bleed on a flex item.
113
+ // `position: relative` is load-bearing for the page (loop) variant: Embla measures
114
+ // slide/container positions with `offsetLeft` (relative to the offsetParent). Without
115
+ // it, the offsetParent is the outer `.uilib-carousel` (position:relative), and the
116
+ // bleed offsets the track by -gap/2 relative to it. On init the track has no transform
117
+ // so slides share that offsetParent and Embla's snap is 0 (correct); after a resize
118
+ // reInit the track already carries Embla's transform, which makes the track itself the
119
+ // slides' offsetParent — so Embla re-reads the slides at 0 while the track is still at
120
+ // -gap/2, shifting every snap by -gap/2 and knocking the cards off the grid (revealing
121
+ // a sliver of the next card at the right edge). Making the viewport the offsetParent
122
+ // keeps that reference stable across init and reInit, so the snap stays 0 either way.
123
+ .uilib-carousel--page .uilib-carousel__viewport,
124
+ .uilib-carousel--item .uilib-carousel__viewport {
125
+ position: relative;
126
+
127
+ width: calc(100% + var(--uilib-carousel-gap));
128
+ margin-inline: calc(var(--uilib-carousel-gap) / -2);
129
+ }
130
+
131
+ .uilib-carousel--page {
132
+ align-items: center;
133
+ }
134
+
135
+ .uilib-carousel__controls {
136
+ display: flex;
137
+ gap: var(--uilib-spacing-400);
138
+ justify-content: center;
139
+ align-items: center;
140
+ }
141
+
142
+ // The viewport's negative inline margin already brings the cards back to the true
143
+ // grid edge (see __viewport), so the footer needs no inset of its own to stay aligned.
144
+ .uilib-carousel__footer {
145
+ display: flex;
146
+ gap: var(--uilib-spacing-400);
147
+ align-items: center;
148
+ }
149
+
150
+ .uilib-carousel--item .uilib-carousel__controls {
151
+ gap: var(--uilib-spacing-200);
152
+
153
+ margin-left: auto;
154
+ }
155
+
156
+ // Behaviour toggles this when everything fits (a single scroll snap): nothing to scroll.
157
+ .uilib-carousel--controls-hidden .uilib-carousel__controls {
158
+ display: none;
159
+ }
160
+
161
+ .uilib-carousel__announcement {
162
+ @include uilib-visually-hidden;
163
+ }
164
+ }
@@ -0,0 +1,13 @@
1
+ @use '../../../variables/env-variables' as *;
2
+
3
+ // Carousel specific variables to allow theming
4
+ $uilib-carousel-variables: (
5
+ gap: var(--uilib-spacing-400),
6
+ viewport-padding: var(--uilib-spacing-200),
7
+ prev-icon: url('#{$uilib-assets-base-url}v3/icons/tui/standard/chevron-left.svg'),
8
+ next-icon: url('#{$uilib-assets-base-url}v3/icons/tui/standard/chevron-right.svg'),
9
+ counter-color: var(--uilib-color-text-body),
10
+ counter-font: var(--uilib-typography-body-medium),
11
+ motion-duration: 300ms,
12
+ motion-easing: ease-out,
13
+ ) !default;
@@ -0,0 +1,3 @@
1
+ // card-promotion / index
2
+ @use 'mixins' as *;
3
+ @include uilib-card-promotion;
@@ -0,0 +1,275 @@
1
+ // Promo Banner / _mixins
2
+ @use '../../button/mixins' as *;
3
+ @use '../../divider/mixins' as *;
4
+ @use '../../icon/mixins' as *;
5
+ @use '../../info-tag/mixins' as *;
6
+ @use '../../link/mixins' as *;
7
+ @use '../../utility/mixins' as *;
8
+
9
+ $uilib-card-promotion-included: false !default;
10
+ $uilib-card-promotion-horizontal: 36rem;
11
+
12
+ @mixin uilib-card-promotion() {
13
+ @if not $uilib-card-promotion-included {
14
+ $uilib-card-promotion-included: true !global;
15
+
16
+ @include uilib-button;
17
+ @include uilib-divider;
18
+ @include uilib-icon;
19
+ @include uilib-info-tag;
20
+ @include uilib-link;
21
+ @include uilib-card-promotion-master;
22
+ }
23
+ }
24
+
25
+ @mixin uilib-card-promotion-master() {
26
+ .uilib-card-promotion {
27
+ container-name: uilib-card-promotion;
28
+ container-type: inline-size;
29
+
30
+ display: block;
31
+
32
+ width: 100%;
33
+ min-width: 0;
34
+ max-width: 100%;
35
+ box-sizing: border-box;
36
+
37
+ &--condensed {
38
+ .uilib-card-promotion__main-content,
39
+ .uilib-card-promotion__code-section {
40
+ gap: var(--uilib-spacing-200);
41
+
42
+ padding: var(--uilib-spacing-200);
43
+ }
44
+
45
+ .uilib-card-promotion__main-content {
46
+ row-gap: 0;
47
+ }
48
+
49
+ .uilib-card-promotion__code-container {
50
+ gap: var(--uilib-spacing-200);
51
+ }
52
+
53
+ .uilib-card-promotion__subcopy {
54
+ grid-column: 2;
55
+
56
+ display: block;
57
+
58
+ @container uilib-card-promotion (max-width: #{$uilib-card-promotion-horizontal}) {
59
+ display: flex;
60
+ flex-flow: column nowrap;
61
+ gap: 0;
62
+ align-items: flex-start;
63
+ }
64
+ }
65
+ }
66
+
67
+ &__inner {
68
+ display: flex;
69
+ flex-flow: column nowrap;
70
+
71
+ @container uilib-card-promotion (min-width: #{$uilib-card-promotion-horizontal}) {
72
+ flex-flow: row nowrap;
73
+ align-items: stretch;
74
+ }
75
+ }
76
+
77
+ &__main-content,
78
+ &__code-section {
79
+ position: relative;
80
+ z-index: 1;
81
+
82
+ width: 100%;
83
+ min-width: 0;
84
+ padding: var(--uilib-spacing-400);
85
+
86
+ &::before {
87
+ position: absolute;
88
+ inset: 0;
89
+ content: '';
90
+ z-index: -1;
91
+
92
+ display: block;
93
+
94
+ border-radius: var(--uilib-card-promotion-radius);
95
+
96
+ background: var(--uilib-card-promotion-bg-color);
97
+
98
+ box-shadow: var(--uilib-card-promotion-elevation);
99
+ }
100
+ }
101
+
102
+ &__main-content {
103
+ display: grid;
104
+ grid-template-columns: auto 1fr;
105
+ gap: var(--uilib-spacing-200) var(--uilib-spacing-400);
106
+ align-items: start;
107
+
108
+ @container uilib-card-promotion (min-width: #{$uilib-card-promotion-horizontal}) {
109
+ flex: 1 1 0;
110
+
111
+ width: auto;
112
+ }
113
+ }
114
+
115
+ &__code-section {
116
+ display: flex;
117
+ flex-flow: row nowrap;
118
+ gap: var(--uilib-spacing-400);
119
+ justify-content: flex-end;
120
+ align-items: center;
121
+
122
+ @container uilib-card-promotion (min-width: 36rem) {
123
+ flex: 0 0 auto;
124
+ justify-content: center;
125
+ align-self: stretch;
126
+
127
+ width: auto;
128
+ min-width: 17.4375rem; /* 279 / 16 */
129
+ }
130
+ }
131
+
132
+ &__divider {
133
+ position: relative;
134
+ z-index: 2;
135
+
136
+ width: auto;
137
+ margin: 0 var(--uilib-spacing-300);
138
+
139
+ background: var(--uilib-card-promotion-bg-color);
140
+
141
+ @container uilib-card-promotion (min-width: 36rem) {
142
+ margin: var(--uilib-spacing-300) 0;
143
+
144
+ border-top-width: 0;
145
+ border-right-width: var(--uilib-stroke-size-025);
146
+ }
147
+ }
148
+
149
+ &__code-container {
150
+ display: inline-flex;
151
+ flex-wrap: wrap;
152
+ gap: var(--uilib-spacing-400);
153
+ justify-content: center;
154
+ align-items: center;
155
+
156
+ width: 100%;
157
+ }
158
+
159
+ &__code {
160
+ flex: 0 1 auto;
161
+
162
+ min-width: 0;
163
+
164
+ color: var(--uilib-card-promotion-code-color);
165
+ font: var(--uilib-typography-label-medium-strong);
166
+ text-align: center;
167
+ text-transform: uppercase;
168
+
169
+ @container uilib-card-promotion (min-width: 36rem) {
170
+ flex: 1;
171
+ }
172
+ }
173
+
174
+ &__cta {
175
+ display: inline-grid;
176
+ flex-shrink: 0;
177
+
178
+ // Both labels share one grid cell, so the wrapper always sizes to the wider of
179
+ // "Copy code" / "Code copied" — no JS measurement, immune to font/mount timing.
180
+ .uilib-card-promotion__cta-copy,
181
+ .uilib-card-promotion__cta-copied {
182
+ grid-area: 1 / 1;
183
+
184
+ white-space: nowrap;
185
+ }
186
+
187
+ .uilib-button__content {
188
+ white-space: nowrap;
189
+ }
190
+
191
+ .uilib-card-promotion__cta-copied {
192
+ visibility: hidden;
193
+ }
194
+
195
+ &.copied {
196
+ .uilib-card-promotion__cta-copy {
197
+ visibility: hidden;
198
+ }
199
+
200
+ .uilib-card-promotion__cta-copied {
201
+ visibility: visible;
202
+ }
203
+ }
204
+ }
205
+
206
+ &__icon {
207
+ grid-row: 1 / span 2;
208
+
209
+ flex-shrink: 0;
210
+ align-self: flex-start;
211
+
212
+ @container uilib-card-promotion (max-width: #{$uilib-card-promotion-horizontal}) {
213
+ grid-row: auto;
214
+ }
215
+
216
+ &-copied {
217
+ -webkit-mask-image: var(--uilib-card-promotion-cta-copied-icon);
218
+ mask-image: var(--uilib-card-promotion-cta-copied-icon);
219
+ }
220
+
221
+ &-copy {
222
+ -webkit-mask-image: var(--uilib-card-promotion-cta-copy-icon);
223
+ mask-image: var(--uilib-card-promotion-cta-copy-icon);
224
+ }
225
+ }
226
+
227
+ &__headline-row {
228
+ display: flex;
229
+ flex-flow: column nowrap;
230
+ gap: var(--uilib-spacing-200);
231
+ align-items: flex-start;
232
+
233
+ min-width: 0;
234
+
235
+ @container uilib-card-promotion (min-width: 36rem) {
236
+ flex-flow: row wrap;
237
+ }
238
+ }
239
+
240
+ &__headline {
241
+ flex: 1 0 0;
242
+
243
+ margin: 0;
244
+
245
+ color: var(--uilib-card-promotion-headline-color);
246
+ font: var(--uilib-typography-component-heading-large-strong);
247
+ }
248
+
249
+ &__subcopy {
250
+ grid-column: 2;
251
+
252
+ margin: 0;
253
+
254
+ color: var(--uilib-card-promotion-subcopy-color);
255
+ font: var(--uilib-typography-body-medium);
256
+
257
+ @container uilib-card-promotion (max-width: #{$uilib-card-promotion-horizontal}) {
258
+ grid-column: 1 / -1;
259
+
260
+ display: flex;
261
+ flex-flow: column nowrap;
262
+ gap: var(--uilib-spacing-200);
263
+ align-items: flex-start;
264
+ }
265
+
266
+ a {
267
+ color: var(--uilib-card-promotion-subcopy-link-color);
268
+ }
269
+ }
270
+
271
+ &__announcement {
272
+ @include uilib-visually-hidden;
273
+ }
274
+ }
275
+ }
@@ -0,0 +1,14 @@
1
+ @use '../../../variables/env-variables' as *;
2
+
3
+ // Promo Banner – variables
4
+ $uilib-card-promotion-variables: (
5
+ elevation: var(--uilib-elevation-100),
6
+ radius: var(--uilib-border-radius-400),
7
+ bg-color: var(--uilib-color-core-neutral),
8
+ headline-color: var(--uilib-color-text-strong),
9
+ subcopy-color: var(--uilib-color-text-body),
10
+ subcopy-link-color: var(--uilib-color-text-link),
11
+ code-color: var(--uilib-color-text-strong),
12
+ cta-copy-icon: url('#{$uilib-assets-base-url}v3/icons/tui/standard/copy.svg'),
13
+ cta-copied-icon: url('#{$uilib-assets-base-url}v3/icons/tui/standard/checkmark-circled-filled.svg'),
14
+ ) !default;
@@ -1,6 +1,6 @@
1
1
  // Card Selectable / _mixins
2
2
  @use 'variables' as *;
3
- @use '../..//utility/mixins' as *;
3
+ @use '../../utility/mixins' as *;
4
4
  @use '../card/mixins' as *;
5
5
  @use '../../forms/form-row/mixins' as *;
6
6
  @use '../../forms/input-radio/mixins' as *;
@@ -1,5 +1,4 @@
1
1
  @use '../../variables/env-variables' as *;
2
- @use 'sass:map';
3
2
 
4
3
  // flyout dropdown specific variables to allow themeing
5
4
  $uilib-flyout-dropdown-variables: (
@@ -25,7 +25,7 @@ $uilib-input-switch-included: false !default;
25
25
  margin-bottom: var(--uilib-spacing-200);
26
26
  }
27
27
 
28
- &__input {
28
+ &--input-switch &__input {
29
29
  margin-top: 0;
30
30
  }
31
31
  }
@@ -49,11 +49,13 @@ $uilib-input-switch-included: false !default;
49
49
  font: var(--uilib-form-row-label-font);
50
50
  }
51
51
 
52
- &:has(.uilib-input-switch__input[disabled]) {
52
+ &:has(.uilib-input-switch__input:disabled),
53
+ &-input:disabled + .uilib-input-switch {
53
54
  cursor: auto;
54
55
  }
55
56
 
56
- &:has(.uilib-input-switch__input:focus-visible) {
57
+ &:has(.uilib-input-switch__input:focus-visible),
58
+ &-input:focus-visible + .uilib-input-switch {
57
59
  @include uilib-focus;
58
60
 
59
61
  &::before {
@@ -61,7 +63,8 @@ $uilib-input-switch-included: false !default;
61
63
  }
62
64
  }
63
65
 
64
- &__input {
66
+ &__input,
67
+ &-input {
65
68
  position: absolute;
66
69
 
67
70
  width: 0;
@@ -71,7 +74,8 @@ $uilib-input-switch-included: false !default;
71
74
 
72
75
  opacity: 0;
73
76
 
74
- &:checked + .uilib-input-switch__track {
77
+ &:checked + .uilib-input-switch__track,
78
+ &:checked + .uilib-input-switch .uilib-input-switch__track {
75
79
  border-color: var(--uilib-input-switch-track-selected-border-color);
76
80
 
77
81
  background-color: var(--uilib-input-switch-track-selected-color);
@@ -83,7 +87,9 @@ $uilib-input-switch-included: false !default;
83
87
  }
84
88
  }
85
89
 
86
- &[disabled] + .uilib-input-switch__track {
90
+ /* stylelint-disable-next-line order/order */
91
+ &:disabled + .uilib-input-switch__track,
92
+ &:disabled + .uilib-input-switch .uilib-input-switch__track {
87
93
  border-color: var(--uilib-input-switch-track-disabled-border-color);
88
94
 
89
95
  background-color: var(--uilib-input-switch-track-color-disabled);
@@ -0,0 +1,2 @@
1
+ @use 'mixins' as *;
2
+ @include uilib-highlight-panel;