@wwtdev/bsds-css 2.3.4 → 2.4.1

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.
@@ -11,6 +11,11 @@
11
11
  overflow-y: auto;
12
12
  padding-block: 0.5rem;
13
13
  padding-left: 0;
14
+ position: relative;
15
+ }
16
+
17
+ .bs-dropdown-options:focus-visible {
18
+ outline: none;
14
19
  }
15
20
 
16
21
  /* Stabilize scrollbar gutter for Firefox (https://bugzilla.mozilla.org/show_bug.cgi?id=764076) */
@@ -127,18 +132,8 @@
127
132
  color: var(--bs-red-500);
128
133
  }
129
134
 
130
- /* List option mouse click focus (do not show) */
131
- .bs-dropdown-options :where(li:focus:not(:focus-visible)){
132
- outline: none;
133
- }
134
-
135
- /* data-variant="negative" list option mouse click focus (do not show) */
136
- .bs-dropdown-options :where(li[data-variant~="negative"]:focus:not(:focus-visible)) {
137
- outline: none;
138
- }
139
-
140
135
  /* List option keyboard navigation focus */
141
- .bs-dropdown-options :where(li:focus-visible) {
136
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-active]) {
142
137
  --focus-border-color: var(--bs-blue-base);
143
138
  border: 2px solid var(--focus-border-color);
144
139
  outline: none;
@@ -146,13 +141,13 @@
146
141
  }
147
142
 
148
143
  /* Navigation focus on a selected element should preserve 4px left border */
149
- .bs-dropdown-options :where(li[data-selected]:focus-visible) {
144
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-selected][data-active]) {
150
145
  border-left: 4px solid var(--focus-border-color);
151
146
  padding-left: 1.25rem;
152
147
  }
153
148
 
154
149
  /* data-variant="negative" list option keyboard navigation focus */
155
- .bs-dropdown-options :where(li[data-variant~="negative"]:focus-visible) {
150
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-variant~="negative"][data-active]) {
156
151
  --focus-border-color: var(--bs-red-200);
157
152
  }
158
153
 
@@ -210,11 +205,11 @@
210
205
  padding-right: 0.625rem;
211
206
  }
212
207
 
213
- .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options) :where(li:focus-visible) {
208
+ .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options:focus-visible) :where(li[data-active]) {
214
209
  padding-left: 0.625rem;
215
210
  }
216
211
 
217
- .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options) :where(li[data-selected]:focus-visible) {
212
+ .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options:focus-visible) :where(li[data-selected][data-active]) {
218
213
  padding-left: 0.5rem;
219
214
  }
220
215
 
@@ -228,11 +223,11 @@
228
223
  padding-right: 0.625rem;
229
224
  }
230
225
 
231
- .bs-dropdown-options :where(li:focus-visible) {
226
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-active]) {
232
227
  padding-left: 0.625rem;
233
228
  }
234
229
 
235
- .bs-dropdown-options :where(li[data-selected]:focus-visible) {
230
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-selected][data-active]) {
236
231
  padding-left: 0.5rem;
237
232
  }
238
233
  }
@@ -12,25 +12,32 @@ custom properties:
12
12
 
13
13
  button:where(.bs-filter-button) {
14
14
  flex-shrink: 0;
15
+ position: relative;
15
16
  }
16
17
 
17
18
  .bs-filter-button {
18
19
  align-items: center;
19
- border-radius: 0.25rem;
20
20
  color: var(--filterbtn-color, var(--bs-ink-blue));
21
21
  column-gap: 0.5rem;
22
22
  cursor: pointer;
23
23
  display: inline-flex;
24
24
  font-size: var(--filterbtn-text-size, var(--bs-text-base));
25
25
  font-weight: var(--filterbtn-weight, 400);
26
- height: var(--filterbtn-height, 2rem);
26
+ height: var(--filterbtn-height, 1.5rem);
27
27
  line-height: 1.5;
28
- outline: solid var(--filterbtn-focus-color, transparent) .125rem;
29
- outline-offset: -.125rem;
30
- padding-inline: .5rem;
31
28
  transition: outline-color 100ms ease-in-out;
32
29
  width: max-content;
33
30
  }
31
+ .bs-filter-button::after {
32
+ border: solid var(--filterbtn-focus-color, transparent) 2px;
33
+ border-radius: 0.25rem;
34
+ content: '';
35
+ display: block;
36
+ height: 100%;
37
+ position: absolute;
38
+ transform: scale(1.25);
39
+ width: 100%;
40
+ }
34
41
 
35
42
  .bs-filter-button :where(.bs-icon),
36
43
  .bs-filter-button :where(span:has(svg:only-child)) {
@@ -44,7 +51,7 @@ button:where(.bs-filter-button) {
44
51
  }
45
52
 
46
53
  .bs-filter-button:where([data-size="sm"],[data-size="xs"]) {
47
- --filterbtn-height: 1.75rem;
54
+
48
55
  --filterbtn-text-size: var(--bs-text-sm);
49
56
  --filterbtn-caret-size: .75rem;
50
57
  }
@@ -65,6 +72,7 @@ button:where(.bs-filter-button) {
65
72
 
66
73
  /* Focus state */
67
74
  .bs-filter-button:where(:focus-visible) {
75
+ outline: none;
68
76
  --filterbtn-focus-color: var(--bs-blue-base);
69
77
  }
70
78
 
@@ -0,0 +1,95 @@
1
+ @mixin spinner() {
2
+ :where(.bs-spinner) {
3
+ display: block;
4
+ }
5
+
6
+ /* ------------ Sizes ------------ */
7
+ .bs-spinner {
8
+ aspect-ratio: 1;
9
+ fill: none;
10
+ height: var(--spinner-size, 2rem);
11
+ width: var(--spinner-size, 2rem);
12
+ }
13
+
14
+ .bs-spinner:where([data-size="sm"]) {
15
+ --spinner-size: 1rem;
16
+ }
17
+
18
+ .bs-spinner:where([data-size="md"]) {
19
+ --spinner-size: 2rem;
20
+ }
21
+
22
+ .bs-spinner:where([data-size="lg"]) {
23
+ --spinner-size: 3rem;
24
+ }
25
+
26
+ /* ------------ Color Variants ------------ */
27
+
28
+ .bs-spinner :where(circle) {
29
+ animation: bs-spin 1s linear infinite;
30
+ stroke-linecap: round;
31
+ stroke-width: 10%;
32
+ transition: all 1s ease-in-out;
33
+ }
34
+
35
+ .bs-spinner:where(:not([data-variant="gradient"])) :where(circle) {
36
+ animation: bs-spin 1s linear infinite, bs-stroke-change 2s linear infinite;
37
+ }
38
+
39
+ .bs-spinner :where(circle) {
40
+ --bs-spinner-color-1: var(--bs-blue-400);
41
+ --bs-spinner-color-2: var(--bs-blue-200);
42
+ }
43
+
44
+ .bs-spinner:where([data-variant="white"]) :where(circle) {
45
+ --bs-spinner-color-1: white;
46
+ --bs-spinner-color-2: white;
47
+ }
48
+
49
+ :where(#bs-spinner-gradient stop) {
50
+ stop-color: var(--bs-plum-400);
51
+ }
52
+ :where(#bs-spinner-gradient stop:first-child) {
53
+ stop-color: var(--bs-blue-400);
54
+ }
55
+ :where(#bs-spinner-gradient stop:last-child) {
56
+ stop-color: var(--bs-red-400);
57
+ }
58
+
59
+ @keyframes bs-spin {
60
+ 0% {
61
+ stroke-dasharray: 0 100;
62
+ stroke-dashoffset: 0;
63
+ }
64
+ 25% {
65
+ stroke-dasharray: 33 67;
66
+ stroke-dashoffset: -40;
67
+ }
68
+ 70% {
69
+ stroke-dasharray: 33 67;
70
+ stroke-dashoffset: -60;
71
+ }
72
+ 85% {
73
+ stroke-dasharray: 17 83;
74
+ stroke-dashoffset: -77;
75
+ }
76
+ 100% {
77
+ stroke-dasharray: 0 100;
78
+ stroke-dashoffset: -100;
79
+ }
80
+ }
81
+
82
+ @keyframes bs-stroke-change {
83
+ 0% {
84
+ stroke: var(--bs-spinner-color-1);
85
+ }
86
+ 33% {
87
+ stroke: var(--bs-spinner-color-2, var(--bs-spinner-color-1));
88
+ }
89
+ 100% {
90
+ stroke: var(--bs-spinner-color-1);
91
+ }
92
+ }
93
+
94
+ }
95
+
@@ -0,0 +1,104 @@
1
+ @mixin timeline() {
2
+ .bs-progress-bar, .bs-timeline {
3
+ background-color: var(--bs-bg-base);
4
+ display: flex;
5
+ position: relative;
6
+ }
7
+
8
+ .bs-progress-bar {
9
+ gap: .25rem;
10
+ }
11
+
12
+ /* ------------ Step Item ------------ */
13
+
14
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item) {
15
+ background-color: var(--step-bg, inherit);
16
+ flex-grow: 1;
17
+ flex-shrink: 0;
18
+ position: relative;
19
+ }
20
+
21
+ /* -- Step Items in Timeline -- */
22
+
23
+ .bs-timeline :where(.bs-step-item) {
24
+ align-items: center;
25
+ color: var(--step-color, var(--bs-ink-disabled));
26
+ display: flex;
27
+ flex-direction: column;
28
+ padding-inline: 1rem;
29
+ row-gap: 0.5rem;
30
+ }
31
+
32
+ .bs-timeline :where(.bs-step-item *) {
33
+ text-wrap: nowrap;
34
+ }
35
+
36
+ .bs-timeline :where(.bs-step-item .bs-step-icon) {
37
+ background-color: inherit;
38
+ height: 1.5rem;
39
+ text-align: center;
40
+ width: 1.5rem;
41
+ z-index: 10;
42
+ }
43
+
44
+ .bs-timeline :where(.bs-step-item)::after {
45
+ border-top: 0.125rem solid var(--bs-border-base);
46
+ content: '';
47
+ display: block;
48
+ position: absolute;
49
+ top: 0.75rem;
50
+ width: 100%;
51
+ }
52
+
53
+ /* -- Step Items in Progress Bar -- */
54
+
55
+ .bs-progress-bar :where(.bs-step-item) {
56
+ --step-bg: var(--progress-step-bg, var(--bs-bg-disabled));
57
+ height: .25rem;
58
+ }
59
+
60
+ .bs-progress-bar :where(.bs-step-item > *) {
61
+ border: 0;
62
+ clip: rect(0 0 0 0);
63
+ height: 1px;
64
+ margin: 0;
65
+ overflow: hidden;
66
+ padding: 0;
67
+ position: absolute;
68
+ white-space: nowrap;
69
+ width: 1px;
70
+ }
71
+
72
+
73
+
74
+ /* ------------ Status colors ------------ */
75
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="in-progress"]) {
76
+ --step-color: var(--bs-ink-base);
77
+ --progress-step-bg: var(--bs-purple-light);
78
+ }
79
+
80
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="complete"]),
81
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="paused"]),
82
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="ongoing"]) {
83
+ --step-color: var(--bs-ink-purple);
84
+ --progress-step-bg: var(--bs-purple-medium);
85
+ }
86
+
87
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="base"]) {
88
+ --progress-step-bg: var(--bs-purple-base);
89
+ }
90
+
91
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="warning"]) {
92
+ --step-color: var(--bs-ink-orange);
93
+ --progress-step-bg: var(--bs-orange-base);
94
+ }
95
+
96
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="error"]),
97
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="cancelled"]) {
98
+ --step-color: var(--bs-ink-red);
99
+ --progress-step-bg: var(--bs-red-base);
100
+ }
101
+
102
+
103
+ }
104
+
@@ -10,6 +10,11 @@
10
10
  overflow-y: auto;
11
11
  padding-block: 0.5rem;
12
12
  padding-left: 0;
13
+ position: relative;
14
+ }
15
+
16
+ .bs-dropdown-options:focus-visible {
17
+ outline: none;
13
18
  }
14
19
 
15
20
  /* Stabilize scrollbar gutter for Firefox (https://bugzilla.mozilla.org/show_bug.cgi?id=764076) */
@@ -126,18 +131,8 @@
126
131
  color: var(--bs-red-500);
127
132
  }
128
133
 
129
- /* List option mouse click focus (do not show) */
130
- .bs-dropdown-options :where(li:focus:not(:focus-visible)){
131
- outline: none;
132
- }
133
-
134
- /* data-variant="negative" list option mouse click focus (do not show) */
135
- .bs-dropdown-options :where(li[data-variant~="negative"]:focus:not(:focus-visible)) {
136
- outline: none;
137
- }
138
-
139
134
  /* List option keyboard navigation focus */
140
- .bs-dropdown-options :where(li:focus-visible) {
135
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-active]) {
141
136
  --focus-border-color: var(--bs-blue-base);
142
137
  border: 2px solid var(--focus-border-color);
143
138
  outline: none;
@@ -145,13 +140,13 @@
145
140
  }
146
141
 
147
142
  /* Navigation focus on a selected element should preserve 4px left border */
148
- .bs-dropdown-options :where(li[data-selected]:focus-visible) {
143
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-selected][data-active]) {
149
144
  border-left: 4px solid var(--focus-border-color);
150
145
  padding-left: 1.25rem;
151
146
  }
152
147
 
153
148
  /* data-variant="negative" list option keyboard navigation focus */
154
- .bs-dropdown-options :where(li[data-variant~="negative"]:focus-visible) {
149
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-variant~="negative"][data-active]) {
155
150
  --focus-border-color: var(--bs-red-200);
156
151
  }
157
152
 
@@ -209,11 +204,11 @@
209
204
  padding-right: 0.625rem;
210
205
  }
211
206
 
212
- .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options) :where(li:focus-visible) {
207
+ .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options:focus-visible) :where(li[data-active]) {
213
208
  padding-left: 0.625rem;
214
209
  }
215
210
 
216
- .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options) :where(li[data-selected]:focus-visible) {
211
+ .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options:focus-visible) :where(li[data-selected][data-active]) {
217
212
  padding-left: 0.5rem;
218
213
  }
219
214
 
@@ -227,11 +222,11 @@
227
222
  padding-right: 0.625rem;
228
223
  }
229
224
 
230
- .bs-dropdown-options :where(li:focus-visible) {
225
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-active]) {
231
226
  padding-left: 0.625rem;
232
227
  }
233
228
 
234
- .bs-dropdown-options :where(li[data-selected]:focus-visible) {
229
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-selected][data-active]) {
235
230
  padding-left: 0.5rem;
236
231
  }
237
232
  }
@@ -11,25 +11,32 @@ custom properties:
11
11
 
12
12
  button:where(.bs-filter-button) {
13
13
  flex-shrink: 0;
14
+ position: relative;
14
15
  }
15
16
 
16
17
  .bs-filter-button {
17
18
  align-items: center;
18
- border-radius: 0.25rem;
19
19
  color: var(--filterbtn-color, var(--bs-ink-blue));
20
20
  column-gap: 0.5rem;
21
21
  cursor: pointer;
22
22
  display: inline-flex;
23
23
  font-size: var(--filterbtn-text-size, var(--bs-text-base));
24
24
  font-weight: var(--filterbtn-weight, 400);
25
- height: var(--filterbtn-height, 2rem);
25
+ height: var(--filterbtn-height, 1.5rem);
26
26
  line-height: 1.5;
27
- outline: solid var(--filterbtn-focus-color, transparent) .125rem;
28
- outline-offset: -.125rem;
29
- padding-inline: .5rem;
30
27
  transition: outline-color 100ms ease-in-out;
31
28
  width: max-content;
32
29
  }
30
+ .bs-filter-button::after {
31
+ border: solid var(--filterbtn-focus-color, transparent) 2px;
32
+ border-radius: 0.25rem;
33
+ content: '';
34
+ display: block;
35
+ height: 100%;
36
+ position: absolute;
37
+ transform: scale(1.25);
38
+ width: 100%;
39
+ }
33
40
 
34
41
  .bs-filter-button :where(.bs-icon),
35
42
  .bs-filter-button :where(span:has(svg:only-child)) {
@@ -43,7 +50,7 @@ button:where(.bs-filter-button) {
43
50
  }
44
51
 
45
52
  .bs-filter-button:where([data-size="sm"],[data-size="xs"]) {
46
- --filterbtn-height: 1.75rem;
53
+
47
54
  --filterbtn-text-size: var(--bs-text-sm);
48
55
  --filterbtn-caret-size: .75rem;
49
56
  }
@@ -64,6 +71,7 @@ button:where(.bs-filter-button) {
64
71
 
65
72
  /* Focus state */
66
73
  .bs-filter-button:where(:focus-visible) {
74
+ outline: none;
67
75
  --filterbtn-focus-color: var(--bs-blue-base);
68
76
  }
69
77
 
@@ -0,0 +1,91 @@
1
+ :where(.bs-spinner) {
2
+ display: block;
3
+ }
4
+
5
+ /* ------------ Sizes ------------ */
6
+ .bs-spinner {
7
+ aspect-ratio: 1;
8
+ fill: none;
9
+ height: var(--spinner-size, 2rem);
10
+ width: var(--spinner-size, 2rem);
11
+ }
12
+
13
+ .bs-spinner:where([data-size="sm"]) {
14
+ --spinner-size: 1rem;
15
+ }
16
+
17
+ .bs-spinner:where([data-size="md"]) {
18
+ --spinner-size: 2rem;
19
+ }
20
+
21
+ .bs-spinner:where([data-size="lg"]) {
22
+ --spinner-size: 3rem;
23
+ }
24
+
25
+ /* ------------ Color Variants ------------ */
26
+
27
+ .bs-spinner :where(circle) {
28
+ animation: bs-spin 1s linear infinite;
29
+ stroke-linecap: round;
30
+ stroke-width: 10%;
31
+ transition: all 1s ease-in-out;
32
+ }
33
+
34
+ .bs-spinner:where(:not([data-variant="gradient"])) :where(circle) {
35
+ animation: bs-spin 1s linear infinite, bs-stroke-change 2s linear infinite;
36
+ }
37
+
38
+ .bs-spinner :where(circle) {
39
+ --bs-spinner-color-1: var(--bs-blue-400);
40
+ --bs-spinner-color-2: var(--bs-blue-200);
41
+ }
42
+
43
+ .bs-spinner:where([data-variant="white"]) :where(circle) {
44
+ --bs-spinner-color-1: white;
45
+ --bs-spinner-color-2: white;
46
+ }
47
+
48
+ :where(#bs-spinner-gradient stop) {
49
+ stop-color: var(--bs-plum-400);
50
+ }
51
+ :where(#bs-spinner-gradient stop:first-child) {
52
+ stop-color: var(--bs-blue-400);
53
+ }
54
+ :where(#bs-spinner-gradient stop:last-child) {
55
+ stop-color: var(--bs-red-400);
56
+ }
57
+
58
+ @keyframes bs-spin {
59
+ 0% {
60
+ stroke-dasharray: 0 100;
61
+ stroke-dashoffset: 0;
62
+ }
63
+ 25% {
64
+ stroke-dasharray: 33 67;
65
+ stroke-dashoffset: -40;
66
+ }
67
+ 70% {
68
+ stroke-dasharray: 33 67;
69
+ stroke-dashoffset: -60;
70
+ }
71
+ 85% {
72
+ stroke-dasharray: 17 83;
73
+ stroke-dashoffset: -77;
74
+ }
75
+ 100% {
76
+ stroke-dasharray: 0 100;
77
+ stroke-dashoffset: -100;
78
+ }
79
+ }
80
+
81
+ @keyframes bs-stroke-change {
82
+ 0% {
83
+ stroke: var(--bs-spinner-color-1);
84
+ }
85
+ 33% {
86
+ stroke: var(--bs-spinner-color-2, var(--bs-spinner-color-1));
87
+ }
88
+ 100% {
89
+ stroke: var(--bs-spinner-color-1);
90
+ }
91
+ }
@@ -0,0 +1,100 @@
1
+ .bs-progress-bar, .bs-timeline {
2
+ background-color: var(--bs-bg-base);
3
+ display: flex;
4
+ position: relative;
5
+ }
6
+
7
+ .bs-progress-bar {
8
+ gap: .25rem;
9
+ }
10
+
11
+ /* ------------ Step Item ------------ */
12
+
13
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item) {
14
+ background-color: var(--step-bg, inherit);
15
+ flex-grow: 1;
16
+ flex-shrink: 0;
17
+ position: relative;
18
+ }
19
+
20
+ /* -- Step Items in Timeline -- */
21
+
22
+ .bs-timeline :where(.bs-step-item) {
23
+ align-items: center;
24
+ color: var(--step-color, var(--bs-ink-disabled));
25
+ display: flex;
26
+ flex-direction: column;
27
+ padding-inline: 1rem;
28
+ row-gap: 0.5rem;
29
+ }
30
+
31
+ .bs-timeline :where(.bs-step-item *) {
32
+ text-wrap: nowrap;
33
+ }
34
+
35
+ .bs-timeline :where(.bs-step-item .bs-step-icon) {
36
+ background-color: inherit;
37
+ height: 1.5rem;
38
+ text-align: center;
39
+ width: 1.5rem;
40
+ z-index: 10;
41
+ }
42
+
43
+ .bs-timeline :where(.bs-step-item)::after {
44
+ border-top: 0.125rem solid var(--bs-border-base);
45
+ content: '';
46
+ display: block;
47
+ position: absolute;
48
+ top: 0.75rem;
49
+ width: 100%;
50
+ }
51
+
52
+ /* -- Step Items in Progress Bar -- */
53
+
54
+ .bs-progress-bar :where(.bs-step-item) {
55
+ --step-bg: var(--progress-step-bg, var(--bs-bg-disabled));
56
+ height: .25rem;
57
+ }
58
+
59
+ .bs-progress-bar :where(.bs-step-item > *) {
60
+ border: 0;
61
+ clip: rect(0 0 0 0);
62
+ height: 1px;
63
+ margin: 0;
64
+ overflow: hidden;
65
+ padding: 0;
66
+ position: absolute;
67
+ white-space: nowrap;
68
+ width: 1px;
69
+ }
70
+
71
+
72
+
73
+ /* ------------ Status colors ------------ */
74
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="in-progress"]) {
75
+ --step-color: var(--bs-ink-base);
76
+ --progress-step-bg: var(--bs-purple-light);
77
+ }
78
+
79
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="complete"]),
80
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="paused"]),
81
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="ongoing"]) {
82
+ --step-color: var(--bs-ink-purple);
83
+ --progress-step-bg: var(--bs-purple-medium);
84
+ }
85
+
86
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="base"]) {
87
+ --progress-step-bg: var(--bs-purple-base);
88
+ }
89
+
90
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="warning"]) {
91
+ --step-color: var(--bs-ink-orange);
92
+ --progress-step-bg: var(--bs-orange-base);
93
+ }
94
+
95
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="error"]),
96
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="cancelled"]) {
97
+ --step-color: var(--bs-ink-red);
98
+ --progress-step-bg: var(--bs-red-base);
99
+ }
100
+
@@ -148,6 +148,7 @@ module.exports = {
148
148
  "base-to-light": "var(--bs-bg-base-to-light)",
149
149
  "base-to-medium": "var(--bs-bg-base-to-medium)",
150
150
  "light": "var(--bs-bg-light)",
151
+ "light-to-base": "var(--bs-bg-light-to-base)",
151
152
  "light-to-medium": "var(--bs-bg-light-to-medium)",
152
153
  "medium": "var(--bs-bg-medium)",
153
154
  "medium-to-light": "var(--bs-bg-medium-to-light)",