@wwtdev/bsds-css 2.3.3 → 2.4.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.
@@ -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
+
package/dist/wwt-bsds.css CHANGED
@@ -1216,11 +1216,11 @@ a:where(.bs-link):where(:focus:not(:focus-visible)) {
1216
1216
  transform: none;
1217
1217
  }
1218
1218
  /* ------------ Button Sizes, Media-based Text Sizing -------------- */
1219
- /* Std button: Mobile text size, WM text size */
1219
+ /* Std button: Mobile text size, DT text size */
1220
1220
  .bs-button {
1221
1221
  --btn-text-size: 1rem;
1222
1222
  }
1223
- @media (min-width: 752px) {
1223
+ @media (min-width: 1166px) {
1224
1224
  .bs-button {
1225
1225
  --btn-text-size: 1.125rem;
1226
1226
  }
@@ -1494,7 +1494,7 @@ a.bs-circle-button {
1494
1494
  --dropdown-wscreen-width: 40rem;
1495
1495
  }
1496
1496
  .bs-dropdown:where([data-width="content"]) {
1497
- --dropdown-wscreen-width: auto;
1497
+ --dropdown-wscreen-width: max-content;
1498
1498
  }
1499
1499
  .bs-dropdown-parent:where([data-width="toggle"]) :where(.bs-dropdown),
1500
1500
  .bs-dropdown-parent:where([data-width="anchor"]) :where(.bs-dropdown) {
@@ -1558,6 +1558,31 @@ a.bs-circle-button {
1558
1558
  padding-block: 0.5rem;
1559
1559
  padding-left: 0;
1560
1560
  }
1561
+ /* Stabilize scrollbar gutter for Firefox (https://bugzilla.mozilla.org/show_bug.cgi?id=764076) */
1562
+ @media (min-width: 752px) {
1563
+ /* 5th or 8th child triggers overflow-y (depending on variant) */
1564
+ :where([data-width="content"]) > .bs-dropdown-options:where(:has([data-variant*="description"]:nth-child(5))),
1565
+ :where([data-width="content"]) > .bs-dropdown-options:where(:has(li:not([data-variant*="description"]):nth-child(8))) {
1566
+ scrollbar-gutter: stable;
1567
+ }
1568
+
1569
+ /* Fallback for older Firefox+ only if we're not setting data-overflow values */
1570
+ @supports not selector(:has(*)) {
1571
+ :where([data-width="content"]) > .bs-dropdown-options {
1572
+ scrollbar-gutter: stable;
1573
+ }
1574
+ }
1575
+
1576
+ /* Also allow this for js solutions if :has not available via data-overflow */
1577
+ /* Reset scrollbar gutter when data-overflow is used */
1578
+ :where([data-width="content"]) > .bs-dropdown-options:where([data-overflow]) {
1579
+ scrollbar-gutter: auto;
1580
+ }
1581
+
1582
+ :where([data-width="content"]) > .bs-dropdown-options:where([data-overflow="true"]) {
1583
+ scrollbar-gutter: stable;
1584
+ }
1585
+ }
1561
1586
  /* Option list item */
1562
1587
  .bs-dropdown-options :where(li) {
1563
1588
  align-items: center;
@@ -1743,10 +1768,10 @@ custom properties:
1743
1768
  */
1744
1769
  button:where(.bs-filter-button) {
1745
1770
  flex-shrink: 0;
1771
+ position: relative;
1746
1772
  }
1747
1773
  .bs-filter-button {
1748
1774
  align-items: center;
1749
- border-radius: 0.25rem;
1750
1775
  color: var(--filterbtn-color, var(--bs-ink-blue));
1751
1776
  -moz-column-gap: 0.5rem;
1752
1777
  column-gap: 0.5rem;
@@ -1754,15 +1779,22 @@ button:where(.bs-filter-button) {
1754
1779
  display: inline-flex;
1755
1780
  font-size: var(--filterbtn-text-size, var(--bs-text-base));
1756
1781
  font-weight: var(--filterbtn-weight, 400);
1757
- height: var(--filterbtn-height, 2rem);
1782
+ height: var(--filterbtn-height, 1.5rem);
1758
1783
  line-height: 1.5;
1759
- outline: solid var(--filterbtn-focus-color, transparent) .125rem;
1760
- outline-offset: -.125rem;
1761
- padding-inline: .5rem;
1762
1784
  transition: outline-color 100ms ease-in-out;
1763
1785
  width: -moz-max-content;
1764
1786
  width: max-content;
1765
1787
  }
1788
+ .bs-filter-button::after {
1789
+ border: solid var(--filterbtn-focus-color, transparent) 2px;
1790
+ border-radius: 0.25rem;
1791
+ content: '';
1792
+ display: block;
1793
+ height: 100%;
1794
+ position: absolute;
1795
+ transform: scale(1.25);
1796
+ width: 100%;
1797
+ }
1766
1798
  .bs-filter-button :where(.bs-icon),
1767
1799
  .bs-filter-button :where(span:has(svg:only-child)) {
1768
1800
  display: block;
@@ -1774,7 +1806,7 @@ button:where(.bs-filter-button) {
1774
1806
  width: var(--filterbtn-caret-size, 1rem);
1775
1807
  }
1776
1808
  .bs-filter-button:where([data-size="sm"],[data-size="xs"]) {
1777
- --filterbtn-height: 1.75rem;
1809
+
1778
1810
  --filterbtn-text-size: var(--bs-text-sm);
1779
1811
  --filterbtn-caret-size: .75rem;
1780
1812
  }
@@ -1791,6 +1823,7 @@ button:where(.bs-filter-button) {
1791
1823
  }
1792
1824
  /* Focus state */
1793
1825
  .bs-filter-button:where(:focus-visible) {
1826
+ outline: none;
1794
1827
  --filterbtn-focus-color: var(--bs-blue-base);
1795
1828
  }
1796
1829
  /* Filter open state */
@@ -3191,6 +3224,85 @@ a.bs-profile:where([data-layout]) {
3191
3224
  a.bs-profile:where([data-layout]):hover {
3192
3225
  --profile-name-decoration: underline;
3193
3226
  }
3227
+ :where(.bs-spinner) {
3228
+ display: block;
3229
+ }
3230
+ /* ------------ Sizes ------------ */
3231
+ .bs-spinner {
3232
+ aspect-ratio: 1;
3233
+ fill: none;
3234
+ height: var(--spinner-size, 2rem);
3235
+ width: var(--spinner-size, 2rem);
3236
+ }
3237
+ .bs-spinner:where([data-size="sm"]) {
3238
+ --spinner-size: 1rem;
3239
+ }
3240
+ .bs-spinner:where([data-size="md"]) {
3241
+ --spinner-size: 2rem;
3242
+ }
3243
+ .bs-spinner:where([data-size="lg"]) {
3244
+ --spinner-size: 3rem;
3245
+ }
3246
+ /* ------------ Color Variants ------------ */
3247
+ .bs-spinner :where(circle) {
3248
+ animation: bs-spin 1s linear infinite;
3249
+ stroke-linecap: round;
3250
+ stroke-width: 10%;
3251
+ transition: all 1s ease-in-out;
3252
+ }
3253
+ .bs-spinner:where(:not([data-variant="gradient"])) :where(circle) {
3254
+ animation: bs-spin 1s linear infinite, bs-stroke-change 2s linear infinite;
3255
+ }
3256
+ .bs-spinner :where(circle) {
3257
+ --bs-spinner-color-1: var(--bs-blue-400);
3258
+ --bs-spinner-color-2: var(--bs-blue-200);
3259
+ }
3260
+ .bs-spinner:where([data-variant="white"]) :where(circle) {
3261
+ --bs-spinner-color-1: white;
3262
+ --bs-spinner-color-2: white;
3263
+ }
3264
+ :where(#bs-spinner-gradient stop) {
3265
+ stop-color: var(--bs-plum-400);
3266
+ }
3267
+ :where(#bs-spinner-gradient stop:first-child) {
3268
+ stop-color: var(--bs-blue-400);
3269
+ }
3270
+ :where(#bs-spinner-gradient stop:last-child) {
3271
+ stop-color: var(--bs-red-400);
3272
+ }
3273
+ @keyframes bs-spin {
3274
+ 0% {
3275
+ stroke-dasharray: 0 100;
3276
+ stroke-dashoffset: 0;
3277
+ }
3278
+ 25% {
3279
+ stroke-dasharray: 33 67;
3280
+ stroke-dashoffset: -40;
3281
+ }
3282
+ 70% {
3283
+ stroke-dasharray: 33 67;
3284
+ stroke-dashoffset: -60;
3285
+ }
3286
+ 85% {
3287
+ stroke-dasharray: 17 83;
3288
+ stroke-dashoffset: -77;
3289
+ }
3290
+ 100% {
3291
+ stroke-dasharray: 0 100;
3292
+ stroke-dashoffset: -100;
3293
+ }
3294
+ }
3295
+ @keyframes bs-stroke-change {
3296
+ 0% {
3297
+ stroke: var(--bs-spinner-color-1);
3298
+ }
3299
+ 33% {
3300
+ stroke: var(--bs-spinner-color-2, var(--bs-spinner-color-1));
3301
+ }
3302
+ 100% {
3303
+ stroke: var(--bs-spinner-color-1);
3304
+ }
3305
+ }
3194
3306
  :is(.bs-tab-list, bs-tab-list) {
3195
3307
  --active-line-offset: 0;
3196
3308
  --active-line-max-width: 0;
@@ -3218,12 +3330,13 @@ a.bs-profile:where([data-layout]):hover {
3218
3330
  :is(.bs-tab-list, bs-tab-list):where([data-resizing]:not([data-resizing="false"])) {
3219
3331
  --tab-list-opacity: 0;
3220
3332
  }
3221
- @media (min-width: 752px) {
3333
+ @media (min-width: 1166px) {
3222
3334
  :is(.bs-tab-list, bs-tab-list) {
3223
3335
  --tab-justify: flex-start;
3224
3336
  --tab-text-size: var(--bs-text-base);
3225
3337
  }
3226
3338
  }
3339
+ /* ------------- Tabs and Toggle ------------- */
3227
3340
  :is(bs-tab-list, .bs-tab-list) :where([role="tab"], .bs-tab-list-toggle) {
3228
3341
  align-items: center;
3229
3342
  color: var(--tab-color, var(--bs-ink-light));
@@ -3231,11 +3344,13 @@ a.bs-profile:where([data-layout]):hover {
3231
3344
  column-gap: .5rem;
3232
3345
  cursor: var(--tab-cursor);
3233
3346
  display: var(--tab-display);
3234
- flex-grow: 0;
3235
- flex-shrink: 0;
3347
+ flex-basis: var(--tab-basis, content);
3348
+ flex-grow: var(--tab-grow, 1);
3349
+ flex-shrink: var(--tab-shrink, 0);
3236
3350
  font-size: inherit;
3237
3351
  font-weight: var(--tab-weight, var(--bs-font-normal));
3238
3352
  height: 2.5rem;
3353
+ justify-content: var(--tab-justify-self, center);
3239
3354
  padding: .5rem;
3240
3355
  outline-color: var(--bs-blue-base);
3241
3356
  outline-offset: -1px;
@@ -3252,13 +3367,22 @@ a.bs-profile:where([data-layout]):hover {
3252
3367
  --tab-color: var(--bs-ink-base);
3253
3368
  --tab-weight: var(--bs-font-bold);
3254
3369
  }
3255
- :where(.bs-tab-panel, bs-tab-panel):where([role="tabpanel"]) {
3256
- display: none;
3370
+ /* ---- always use DT styles when tabs have yet to be width-adapted (they're invisible during this time) ---- */
3371
+ :is(.bs-tab-list, bs-tab-list):where([data-resizing="true"]) {
3372
+ --tab-basis: auto;
3373
+ --tab-grow: 0;
3374
+ --tab-justify-self: flex-start;
3375
+ --tab-shrink: 0;
3257
3376
  }
3258
- :where(.bs-tab-panel, bs-tab-panel):where([role="tabpanel"][data-active]:not([data-active="false"])) {
3259
- display: block;
3377
+ @media (min-width: 1166px) {
3378
+ :is(.bs-tab-list, bs-tab-list) {
3379
+ --tab-basis: auto;
3380
+ --tab-grow: 0;
3381
+ --tab-justify-self: flex-start;
3382
+ --tab-shrink: 0;
3383
+ }
3260
3384
  }
3261
- /* Active line */
3385
+ /* ------------- Active line ------------- */
3262
3386
  :is(.bs-tab-list, bs-tab-list)::after {
3263
3387
  background-color: var(--bs-blue-base);
3264
3388
  bottom: 0;
@@ -3271,6 +3395,13 @@ a.bs-profile:where([data-layout]):hover {
3271
3395
  transition: transform var(--active-line-transition-duration) ease-in;
3272
3396
  width: 100%;
3273
3397
  }
3398
+ /* ------------- Tab Panels ------------- */
3399
+ :where(.bs-tab-panel, bs-tab-panel):where([role="tabpanel"]) {
3400
+ display: none;
3401
+ }
3402
+ :where(.bs-tab-panel, bs-tab-panel):where([role="tabpanel"][data-active]:not([data-active="false"])) {
3403
+ display: block;
3404
+ }
3274
3405
  table {
3275
3406
  border-collapse: collapse;
3276
3407
  border-spacing: 0;
@@ -3348,6 +3479,87 @@ table:where([data-sticky^="left"]) :is(td:first-child, th:first-child) {
3348
3479
  left: 0;
3349
3480
  z-index: 2;
3350
3481
  }
3482
+ .bs-progress-bar, .bs-timeline {
3483
+ background-color: var(--bs-bg-base);
3484
+ display: flex;
3485
+ position: relative;
3486
+ }
3487
+ .bs-progress-bar {
3488
+ gap: .25rem;
3489
+ }
3490
+ /* ------------ Step Item ------------ */
3491
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item) {
3492
+ background-color: var(--step-bg, inherit);
3493
+ flex-grow: 1;
3494
+ flex-shrink: 0;
3495
+ position: relative;
3496
+ }
3497
+ /* -- Step Items in Timeline -- */
3498
+ .bs-timeline :where(.bs-step-item) {
3499
+ align-items: center;
3500
+ color: var(--step-color, var(--bs-ink-disabled));
3501
+ display: flex;
3502
+ flex-direction: column;
3503
+ padding-inline: 1rem;
3504
+ row-gap: 0.5rem;
3505
+ }
3506
+ .bs-timeline :where(.bs-step-item *) {
3507
+ text-wrap: nowrap;
3508
+ }
3509
+ .bs-timeline :where(.bs-step-item .bs-step-icon) {
3510
+ background-color: inherit;
3511
+ height: 1.5rem;
3512
+ text-align: center;
3513
+ width: 1.5rem;
3514
+ z-index: 10;
3515
+ }
3516
+ .bs-timeline :where(.bs-step-item)::after {
3517
+ border-top: 0.125rem solid var(--bs-border-base);
3518
+ content: '';
3519
+ display: block;
3520
+ position: absolute;
3521
+ top: 0.75rem;
3522
+ width: 100%;
3523
+ }
3524
+ /* -- Step Items in Progress Bar -- */
3525
+ .bs-progress-bar :where(.bs-step-item) {
3526
+ --step-bg: var(--progress-step-bg, var(--bs-bg-disabled));
3527
+ height: .25rem;
3528
+ }
3529
+ .bs-progress-bar :where(.bs-step-item > *) {
3530
+ border: 0;
3531
+ clip: rect(0 0 0 0);
3532
+ height: 1px;
3533
+ margin: 0;
3534
+ overflow: hidden;
3535
+ padding: 0;
3536
+ position: absolute;
3537
+ white-space: nowrap;
3538
+ width: 1px;
3539
+ }
3540
+ /* ------------ Status colors ------------ */
3541
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="in-progress"]) {
3542
+ --step-color: var(--bs-ink-base);
3543
+ --progress-step-bg: var(--bs-purple-light);
3544
+ }
3545
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="complete"]),
3546
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="paused"]),
3547
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="ongoing"]) {
3548
+ --step-color: var(--bs-ink-purple);
3549
+ --progress-step-bg: var(--bs-purple-medium);
3550
+ }
3551
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="base"]) {
3552
+ --progress-step-bg: var(--bs-purple-base);
3553
+ }
3554
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="warning"]) {
3555
+ --step-color: var(--bs-ink-orange);
3556
+ --progress-step-bg: var(--bs-orange-base);
3557
+ }
3558
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="error"]),
3559
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="cancelled"]) {
3560
+ --step-color: var(--bs-ink-red);
3561
+ --progress-step-bg: var(--bs-red-base);
3562
+ }
3351
3563
  /* Base Toast Styles */
3352
3564
  .bs-toast {
3353
3565
  background-color: var(--bs-bg-base-elevated);