@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.
package/dist/wwt-bsds.css CHANGED
@@ -1557,6 +1557,10 @@ a.bs-circle-button {
1557
1557
  overflow-y: auto;
1558
1558
  padding-block: 0.5rem;
1559
1559
  padding-left: 0;
1560
+ position: relative;
1561
+ }
1562
+ .bs-dropdown-options:focus-visible {
1563
+ outline: none;
1560
1564
  }
1561
1565
  /* Stabilize scrollbar gutter for Firefox (https://bugzilla.mozilla.org/show_bug.cgi?id=764076) */
1562
1566
  @media (min-width: 752px) {
@@ -1662,28 +1666,20 @@ a.bs-circle-button {
1662
1666
  .bs-dropdown-options :where(li[data-variant~="negative"][data-variant~="3-col"][data-variant~="description"][data-selected] > :nth-child(4)) {
1663
1667
  color: var(--bs-red-500);
1664
1668
  }
1665
- /* List option mouse click focus (do not show) */
1666
- .bs-dropdown-options :where(li:focus:not(:focus-visible)){
1667
- outline: none;
1668
- }
1669
- /* data-variant="negative" list option mouse click focus (do not show) */
1670
- .bs-dropdown-options :where(li[data-variant~="negative"]:focus:not(:focus-visible)) {
1671
- outline: none;
1672
- }
1673
1669
  /* List option keyboard navigation focus */
1674
- .bs-dropdown-options :where(li:focus-visible) {
1670
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-active]) {
1675
1671
  --focus-border-color: var(--bs-blue-base);
1676
1672
  border: 2px solid var(--focus-border-color);
1677
1673
  outline: none;
1678
1674
  padding-left: 1.375rem;
1679
1675
  }
1680
1676
  /* Navigation focus on a selected element should preserve 4px left border */
1681
- .bs-dropdown-options :where(li[data-selected]:focus-visible) {
1677
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-selected][data-active]) {
1682
1678
  border-left: 4px solid var(--focus-border-color);
1683
1679
  padding-left: 1.25rem;
1684
1680
  }
1685
1681
  /* data-variant="negative" list option keyboard navigation focus */
1686
- .bs-dropdown-options :where(li[data-variant~="negative"]:focus-visible) {
1682
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-variant~="negative"][data-active]) {
1687
1683
  --focus-border-color: var(--bs-red-200);
1688
1684
  }
1689
1685
  /* Multi-select divider */
@@ -1732,10 +1728,10 @@ a.bs-circle-button {
1732
1728
  .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options) :where(li[role="separator"]) {
1733
1729
  padding-right: 0.625rem;
1734
1730
  }
1735
- .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options) :where(li:focus-visible) {
1731
+ .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options:focus-visible) :where(li[data-active]) {
1736
1732
  padding-left: 0.625rem;
1737
1733
  }
1738
- .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options) :where(li[data-selected]:focus-visible) {
1734
+ .bs-dropdown:where([data-no-mobile="true"]) :where(.bs-dropdown-options:focus-visible) :where(li[data-selected][data-active]) {
1739
1735
  padding-left: 0.5rem;
1740
1736
  }
1741
1737
  @media (min-width: 752px) {
@@ -1748,11 +1744,11 @@ a.bs-circle-button {
1748
1744
  padding-right: 0.625rem;
1749
1745
  }
1750
1746
 
1751
- .bs-dropdown-options :where(li:focus-visible) {
1747
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-active]) {
1752
1748
  padding-left: 0.625rem;
1753
1749
  }
1754
1750
 
1755
- .bs-dropdown-options :where(li[data-selected]:focus-visible) {
1751
+ .bs-dropdown-options:where(:focus-visible) :where(li[data-selected][data-active]) {
1756
1752
  padding-left: 0.5rem;
1757
1753
  }
1758
1754
  }
@@ -1768,10 +1764,10 @@ custom properties:
1768
1764
  */
1769
1765
  button:where(.bs-filter-button) {
1770
1766
  flex-shrink: 0;
1767
+ position: relative;
1771
1768
  }
1772
1769
  .bs-filter-button {
1773
1770
  align-items: center;
1774
- border-radius: 0.25rem;
1775
1771
  color: var(--filterbtn-color, var(--bs-ink-blue));
1776
1772
  -moz-column-gap: 0.5rem;
1777
1773
  column-gap: 0.5rem;
@@ -1779,15 +1775,22 @@ button:where(.bs-filter-button) {
1779
1775
  display: inline-flex;
1780
1776
  font-size: var(--filterbtn-text-size, var(--bs-text-base));
1781
1777
  font-weight: var(--filterbtn-weight, 400);
1782
- height: var(--filterbtn-height, 2rem);
1778
+ height: var(--filterbtn-height, 1.5rem);
1783
1779
  line-height: 1.5;
1784
- outline: solid var(--filterbtn-focus-color, transparent) .125rem;
1785
- outline-offset: -.125rem;
1786
- padding-inline: .5rem;
1787
1780
  transition: outline-color 100ms ease-in-out;
1788
1781
  width: -moz-max-content;
1789
1782
  width: max-content;
1790
1783
  }
1784
+ .bs-filter-button::after {
1785
+ border: solid var(--filterbtn-focus-color, transparent) 2px;
1786
+ border-radius: 0.25rem;
1787
+ content: '';
1788
+ display: block;
1789
+ height: 100%;
1790
+ position: absolute;
1791
+ transform: scale(1.25);
1792
+ width: 100%;
1793
+ }
1791
1794
  .bs-filter-button :where(.bs-icon),
1792
1795
  .bs-filter-button :where(span:has(svg:only-child)) {
1793
1796
  display: block;
@@ -1799,7 +1802,7 @@ button:where(.bs-filter-button) {
1799
1802
  width: var(--filterbtn-caret-size, 1rem);
1800
1803
  }
1801
1804
  .bs-filter-button:where([data-size="sm"],[data-size="xs"]) {
1802
- --filterbtn-height: 1.75rem;
1805
+
1803
1806
  --filterbtn-text-size: var(--bs-text-sm);
1804
1807
  --filterbtn-caret-size: .75rem;
1805
1808
  }
@@ -1816,6 +1819,7 @@ button:where(.bs-filter-button) {
1816
1819
  }
1817
1820
  /* Focus state */
1818
1821
  .bs-filter-button:where(:focus-visible) {
1822
+ outline: none;
1819
1823
  --filterbtn-focus-color: var(--bs-blue-base);
1820
1824
  }
1821
1825
  /* Filter open state */
@@ -3216,6 +3220,85 @@ a.bs-profile:where([data-layout]) {
3216
3220
  a.bs-profile:where([data-layout]):hover {
3217
3221
  --profile-name-decoration: underline;
3218
3222
  }
3223
+ :where(.bs-spinner) {
3224
+ display: block;
3225
+ }
3226
+ /* ------------ Sizes ------------ */
3227
+ .bs-spinner {
3228
+ aspect-ratio: 1;
3229
+ fill: none;
3230
+ height: var(--spinner-size, 2rem);
3231
+ width: var(--spinner-size, 2rem);
3232
+ }
3233
+ .bs-spinner:where([data-size="sm"]) {
3234
+ --spinner-size: 1rem;
3235
+ }
3236
+ .bs-spinner:where([data-size="md"]) {
3237
+ --spinner-size: 2rem;
3238
+ }
3239
+ .bs-spinner:where([data-size="lg"]) {
3240
+ --spinner-size: 3rem;
3241
+ }
3242
+ /* ------------ Color Variants ------------ */
3243
+ .bs-spinner :where(circle) {
3244
+ animation: bs-spin 1s linear infinite;
3245
+ stroke-linecap: round;
3246
+ stroke-width: 10%;
3247
+ transition: all 1s ease-in-out;
3248
+ }
3249
+ .bs-spinner:where(:not([data-variant="gradient"])) :where(circle) {
3250
+ animation: bs-spin 1s linear infinite, bs-stroke-change 2s linear infinite;
3251
+ }
3252
+ .bs-spinner :where(circle) {
3253
+ --bs-spinner-color-1: var(--bs-blue-400);
3254
+ --bs-spinner-color-2: var(--bs-blue-200);
3255
+ }
3256
+ .bs-spinner:where([data-variant="white"]) :where(circle) {
3257
+ --bs-spinner-color-1: white;
3258
+ --bs-spinner-color-2: white;
3259
+ }
3260
+ :where(#bs-spinner-gradient stop) {
3261
+ stop-color: var(--bs-plum-400);
3262
+ }
3263
+ :where(#bs-spinner-gradient stop:first-child) {
3264
+ stop-color: var(--bs-blue-400);
3265
+ }
3266
+ :where(#bs-spinner-gradient stop:last-child) {
3267
+ stop-color: var(--bs-red-400);
3268
+ }
3269
+ @keyframes bs-spin {
3270
+ 0% {
3271
+ stroke-dasharray: 0 100;
3272
+ stroke-dashoffset: 0;
3273
+ }
3274
+ 25% {
3275
+ stroke-dasharray: 33 67;
3276
+ stroke-dashoffset: -40;
3277
+ }
3278
+ 70% {
3279
+ stroke-dasharray: 33 67;
3280
+ stroke-dashoffset: -60;
3281
+ }
3282
+ 85% {
3283
+ stroke-dasharray: 17 83;
3284
+ stroke-dashoffset: -77;
3285
+ }
3286
+ 100% {
3287
+ stroke-dasharray: 0 100;
3288
+ stroke-dashoffset: -100;
3289
+ }
3290
+ }
3291
+ @keyframes bs-stroke-change {
3292
+ 0% {
3293
+ stroke: var(--bs-spinner-color-1);
3294
+ }
3295
+ 33% {
3296
+ stroke: var(--bs-spinner-color-2, var(--bs-spinner-color-1));
3297
+ }
3298
+ 100% {
3299
+ stroke: var(--bs-spinner-color-1);
3300
+ }
3301
+ }
3219
3302
  :is(.bs-tab-list, bs-tab-list) {
3220
3303
  --active-line-offset: 0;
3221
3304
  --active-line-max-width: 0;
@@ -3392,6 +3475,87 @@ table:where([data-sticky^="left"]) :is(td:first-child, th:first-child) {
3392
3475
  left: 0;
3393
3476
  z-index: 2;
3394
3477
  }
3478
+ .bs-progress-bar, .bs-timeline {
3479
+ background-color: var(--bs-bg-base);
3480
+ display: flex;
3481
+ position: relative;
3482
+ }
3483
+ .bs-progress-bar {
3484
+ gap: .25rem;
3485
+ }
3486
+ /* ------------ Step Item ------------ */
3487
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item) {
3488
+ background-color: var(--step-bg, inherit);
3489
+ flex-grow: 1;
3490
+ flex-shrink: 0;
3491
+ position: relative;
3492
+ }
3493
+ /* -- Step Items in Timeline -- */
3494
+ .bs-timeline :where(.bs-step-item) {
3495
+ align-items: center;
3496
+ color: var(--step-color, var(--bs-ink-disabled));
3497
+ display: flex;
3498
+ flex-direction: column;
3499
+ padding-inline: 1rem;
3500
+ row-gap: 0.5rem;
3501
+ }
3502
+ .bs-timeline :where(.bs-step-item *) {
3503
+ text-wrap: nowrap;
3504
+ }
3505
+ .bs-timeline :where(.bs-step-item .bs-step-icon) {
3506
+ background-color: inherit;
3507
+ height: 1.5rem;
3508
+ text-align: center;
3509
+ width: 1.5rem;
3510
+ z-index: 10;
3511
+ }
3512
+ .bs-timeline :where(.bs-step-item)::after {
3513
+ border-top: 0.125rem solid var(--bs-border-base);
3514
+ content: '';
3515
+ display: block;
3516
+ position: absolute;
3517
+ top: 0.75rem;
3518
+ width: 100%;
3519
+ }
3520
+ /* -- Step Items in Progress Bar -- */
3521
+ .bs-progress-bar :where(.bs-step-item) {
3522
+ --step-bg: var(--progress-step-bg, var(--bs-bg-disabled));
3523
+ height: .25rem;
3524
+ }
3525
+ .bs-progress-bar :where(.bs-step-item > *) {
3526
+ border: 0;
3527
+ clip: rect(0 0 0 0);
3528
+ height: 1px;
3529
+ margin: 0;
3530
+ overflow: hidden;
3531
+ padding: 0;
3532
+ position: absolute;
3533
+ white-space: nowrap;
3534
+ width: 1px;
3535
+ }
3536
+ /* ------------ Status colors ------------ */
3537
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="in-progress"]) {
3538
+ --step-color: var(--bs-ink-base);
3539
+ --progress-step-bg: var(--bs-purple-light);
3540
+ }
3541
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="complete"]),
3542
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="paused"]),
3543
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="ongoing"]) {
3544
+ --step-color: var(--bs-ink-purple);
3545
+ --progress-step-bg: var(--bs-purple-medium);
3546
+ }
3547
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="base"]) {
3548
+ --progress-step-bg: var(--bs-purple-base);
3549
+ }
3550
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="warning"]) {
3551
+ --step-color: var(--bs-ink-orange);
3552
+ --progress-step-bg: var(--bs-orange-base);
3553
+ }
3554
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="error"]),
3555
+ :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="cancelled"]) {
3556
+ --step-color: var(--bs-ink-red);
3557
+ --progress-step-bg: var(--bs-red-base);
3558
+ }
3395
3559
  /* Base Toast Styles */
3396
3560
  .bs-toast {
3397
3561
  background-color: var(--bs-bg-base-elevated);