@wwtdev/bsds-css 3.0.0-rc.46 → 3.0.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.
@@ -142,7 +142,7 @@
142
142
  }
143
143
  /* data-variant="negative" list option keyboard navigation focus */
144
144
  .bs-dropdown-options-deprecated:where(:focus-visible) :where(li[data-variant~="negative"][data-active]) {
145
- --focus-border-color: var(--bs-negative-light);
145
+ --focus-border-color: var(--bs-red-light);
146
146
  }
147
147
  /* Multi-select divider */
148
148
  .bs-dropdown-options-deprecated :where(li[role="separator"]) {
@@ -765,129 +765,125 @@ Custom properties:
765
765
  }
766
766
  /* Base Toast Styles */
767
767
  .bs-toast-deprecated {
768
- --toast-transform: translate(0, calc(100% + 1.5rem));
768
+ --toast-transform: translate(0, calc(100% + 1.5rem));
769
769
 
770
- background-color: var(--bs-bg-base-to-light);
771
- border-top: 4px solid var(--bs-primary-base);
772
- bottom: 1.5rem;
773
- box-shadow: var(--bs-shadow-contentMedium);
774
- left: 0;
775
- margin-left: 1.5rem;
776
- margin-right: 1.5rem;
777
- opacity: 0;
778
- position: fixed;
779
- right: 0;
780
- transform: var(--toast-transform);
781
- transition-duration: var(--bs-transition-medium);
782
- transition-property: transform, opacity;
783
- transition-timing-function: var(--bs-transition-ease);
784
- /* Clamp width for mobile -> full screen */
785
- width: clamp(17rem, calc(100vw - 3rem), 25rem);
786
- z-index: 999;
770
+ background-color: var(--bs-bg-base-elevated);
771
+ border-top: 4px solid var(--bs-primary-base);
772
+ bottom: 1.5rem;
773
+ box-shadow: var(--bs-shadow-contentMedium);
774
+ left: 0;
775
+ margin-left: 1.5rem;
776
+ margin-right: 1.5rem;
777
+ opacity: 0;
778
+ position: fixed;
779
+ right: 0;
780
+ transform: var(--toast-transform);
781
+ transition-duration: 200ms;
782
+ transition-property: transform, opacity;
783
+ transition-timing-function: ease;
784
+ /* Clamp width for mobile -> full screen */
785
+ width: clamp(17rem, calc(100vw - 3rem), 25rem);
786
+ z-index: 999;
787
787
  }
788
788
  .bs-toast-deprecated:where([data-stacked]:not([data-stacked="false"])) {
789
- bottom: auto;
790
- left: auto;
791
- position: static;
792
- right: auto;
793
- z-index: auto;
789
+ bottom: auto;
790
+ left: auto;
791
+ position: static;
792
+ right: auto;
793
+ z-index: auto;
794
794
  }
795
795
  /* Mobile - Toast comes up from bottom */
796
796
  .bs-toast-deprecated:where([data-shown]:not([data-shown="false"])) {
797
- opacity: 1;
798
- transform: translate(0, 0);
797
+ opacity: 1;
798
+ transform: translate(0, 0);
799
799
  }
800
800
  .bs-toast-header-deprecated {
801
- align-items: center;
802
- color: var(--bs-ink-base);
803
- display: flex;
804
- gap: 0.5rem;
805
- padding: 1rem;
801
+ align-items: center;
802
+ color: var(--bs-ink-base);
803
+ display: flex;
804
+ gap: 0.5rem;
805
+ padding: 1rem;
806
806
  }
807
- .bs-toast-header-deprecated :where(.bs-toast-header-icon-deprecated) {
808
- color: var(--bs-primary-base);
807
+ .bs-toast-header-deprecated :where(.bs-toast-header-deprecated-icon) {
808
+ color: var(--bs-primary-base);
809
809
  }
810
- .bs-toast-header-deprecated :where(h5) {
811
- font-weight: 400;
810
+ .bs-toast-header-deprecated :where(.bs-toast-header-deprecated-text) {
811
+ font-size: var(--bs-text-md);
812
+ font-weight: var(--bs-font-normal);
813
+ line-height: var(--bs-leading-lg);
812
814
  }
813
815
  .bs-toast-body-deprecated {
814
- border-bottom: 1px solid var(--bs-border-base);
815
- color: var(--bs-ink-light);
816
- padding-bottom: 1rem;
817
- padding-left: 1rem;
818
- padding-right: 1rem;
816
+ border-bottom: 1px solid var(--bs-border-base);
817
+ color: var(--bs-ink-light);
818
+ padding-bottom: 1rem;
819
+ padding-left: 1rem;
820
+ padding-right: 1rem;
819
821
  }
820
822
  .bs-toast-actions-deprecated {
821
- /* Mobile - Buttons will be stacked */
822
- display: flex;
823
- flex-direction: row;
824
- gap: 1rem;
825
- justify-content: flex-end;
826
- padding-bottom: 0.5rem;
827
- padding-left: 1rem;
828
- padding-right: 1rem;
829
- padding-top: 0.5rem;
823
+ /* Mobile - Buttons will be stacked */
824
+ display: flex;
825
+ flex-direction: row;
826
+ gap: 1rem;
827
+ justify-content: flex-end;
828
+ padding-bottom: 0.5rem;
829
+ padding-left: 1rem;
830
+ padding-right: 1rem;
831
+ padding-top: 0.5rem;
830
832
  }
831
833
  .bs-toast-actions-deprecated:where([data-stacked]:not([data-stacked="false"])) {
832
- flex-direction: column-reverse;
834
+ flex-direction: column-reverse;
833
835
  }
834
836
  /* Warning Toast Styles */
835
837
  .bs-toast-deprecated:where([data-variant^='warning']) {
836
- border-top: 4px solid var(--bs-warning-base);
838
+ border-top: 4px solid var(--bs-warning-base);
837
839
  }
838
- .bs-toast-deprecated:where([data-variant^='warning']) :where(.bs-toast-header-deprecated .bs-toast-header-icon-deprecated) {
839
- color: var(--bs-ink-warning);
840
+ .bs-toast-deprecated:where([data-variant^='warning']) :where(.bs-toast-header-deprecated .bs-toast-header-deprecated-icon) {
841
+ color: var(--bs-ink-warning);
840
842
  }
841
843
  /* Positive Toast Styles */
842
844
  .bs-toast-deprecated:where([data-variant^='positive']) {
843
- border-top: 4px solid var(--bs-positive-base);
844
- }
845
- .bs-toast-deprecated:where([data-variant^='positive']) :where(.bs-toast-header-deprecated .bs-toast-header-icon-deprecated) {
846
- color: var(--bs-ink-positive);
847
- }
848
- :where(.dark) .bs-toast-deprecated:where([data-variant^='positive']) {
849
- border-top: 4px solid var(--bs-positive-light);
845
+ border-top: 4px solid var(--bs-positive-base);
850
846
  }
851
- :where(.dark) .bs-toast-deprecated:where([data-variant^='positive']) :where(.bs-toast-header-deprecated .bs-toast-header-icon-deprecated) {
852
- color: var(--bs-positive-light);
847
+ .bs-toast-deprecated:where([data-variant^='positive']) :where(.bs-toast-header-deprecated .bs-toast-header-deprecated-icon) {
848
+ color: var(--bs-ink-positive);
853
849
  }
854
850
  /* Negative Toast Styles */
855
851
  .bs-toast-deprecated:where([data-variant^='negative']) {
856
- border-top: 4px solid var(--bs-negative-dark);
852
+ border-top: 4px solid var(--bs-negative-dark);
857
853
  }
858
- .bs-toast-deprecated:where([data-variant^='negative']) :where(.bs-toast-header-deprecated .bs-toast-header-icon-deprecated) {
859
- color: var(--bs-negative-dark);
854
+ .bs-toast-deprecated:where([data-variant^='negative']) :where(.bs-toast-header-deprecated .bs-toast-header-deprecated-icon) {
855
+ color: var(--bs-negative-dark);
860
856
  }
861
857
  @media (min-width: 440px) {
862
- .bs-toast-deprecated {
863
- --toast-transform: translate(calc(100% + 1.5rem), 0);
858
+ .bs-toast-deprecated {
859
+ --toast-transform: translate(calc(100% + 1.5rem), 0);
864
860
 
865
- left: auto;
866
- margin-left: 0;
867
- margin-right: 0;
868
- opacity: 0;
869
- right: 1.5rem;
870
- }
861
+ left: auto;
862
+ margin-left: 0;
863
+ margin-right: 0;
864
+ opacity: 0;
865
+ right: 1.5rem;
866
+ }
871
867
 
872
- .bs-toast-deprecated:where([data-shown]:not([data-shown="false"])) {
873
- opacity: 1;
874
- transform: translate(0, 0);
875
- }
868
+ .bs-toast-deprecated:where([data-shown]:not([data-shown="false"])) {
869
+ opacity: 1;
870
+ transform: translate(0, 0);
871
+ }
876
872
 
877
- .bs-toast-actions-deprecated:where([data-stacked]:not([data-stacked="false"])) {
878
- flex-direction: row;
879
- }
873
+ .bs-toast-actions-deprecated:where([data-stacked]:not([data-stacked="false"])) {
874
+ flex-direction: row;
875
+ }
880
876
  }
881
877
  /* Vue Transition Styles - Only used in Vue component */
882
- .bs-toast-deprecated:where(.bs-toast-enter-from),
883
- .bs-toast-deprecated:where(.bs-toast-leave-to) {
884
- opacity: 0;
885
- transform: var(--toast-transform);
878
+ .bs-toast-deprecated:where(.bs-toast-deprecated-enter-from),
879
+ .bs-toast-deprecated:where(.bs-toast-deprecated-leave-to) {
880
+ opacity: 0;
881
+ transform: var(--toast-transform);
886
882
  }
887
- .bs-toast-deprecated:where(.bs-toast-enter-to),
888
- .bs-toast-deprecated:where(.bs-toast-leave-from) {
889
- opacity: 1;
890
- transform: translate(0, 0);
883
+ .bs-toast-deprecated:where(.bs-toast-deprecated-enter-to),
884
+ .bs-toast-deprecated:where(.bs-toast-deprecated-leave-from) {
885
+ opacity: 1;
886
+ transform: translate(0, 0);
891
887
  }
892
888
  /* Container for holding all toasts that will be visible */
893
889
  .bs-toaster-deprecated {
@@ -1310,16 +1306,16 @@ This must go last to properly override the other classes
1310
1306
  -webkit-backdrop-filter: blur(4px);
1311
1307
  backdrop-filter: blur(4px);
1312
1308
  background: rgba(29, 30, 72, 0.05);
1313
- /*
1314
- Should be very rare, but below is an optional way for consumer to override z-index.
1315
- See note in popover.css for more info...most often (but still rare) the consumer
1316
- would override the --bs-popover-z-index instead, which would take care of this bs-backdrop too.
1317
- Should be a very very rare use case to need to override both independently to different values.
1318
- */
1319
- z-index: var(--bs-backdrop-z-index, var(--bs-popover-z-index));
1309
+ transition-property: opacity;
1310
+ transition-duration: var(--bs-backdrop-transition-duration);
1311
+ transition-timing-function: var(--bs-transition-cubic);
1312
+ }
1313
+ .bs-backdrop-enter-from,
1314
+ .bs-backdrop-leave-to {
1315
+ opacity: 0;
1320
1316
  }
1321
1317
  .bs-badge {
1322
- --badge-bg: var(--bs-negative-dark);
1318
+ --badge-bg: var(--bs-accent-6-base);
1323
1319
  --badge-text: var(--bs-white);
1324
1320
  display: inline-block;
1325
1321
  }
@@ -1447,10 +1443,7 @@ This must go last to properly override the other classes
1447
1443
  text-decoration: none;
1448
1444
  }
1449
1445
  .bs-banner:where([data-variant="negative"]) {
1450
- --banner-bg: var(--bs-red-300);
1451
- }
1452
- :where(.softchoice) .bs-banner:where([data-variant="negative"]) {
1453
- --banner-bg: var(--bs-maroon-400);
1446
+ --banner-bg: var(--bs-accent-6-medium);
1454
1447
  }
1455
1448
  @media (min-width: 957px) {
1456
1449
  .bs-banner {
@@ -1465,7 +1458,7 @@ This must go last to properly override the other classes
1465
1458
  --btn-ghost-ink: var(--bs-ink-primary);
1466
1459
  --btn-highlight: var(--bs-primary-lightest);
1467
1460
  --btn-ink: var(--bs-white);
1468
- --btn-main: var(--bs-primary-base-fixed);
1461
+ --btn-main: var(--bs-primary-base);
1469
1462
  --btn-padding: .25rem .75rem;
1470
1463
  --btn-secondary: var(--bs-primary-medium);
1471
1464
  --btn-text-size: var(--bs-text-md);
@@ -1566,50 +1559,67 @@ See: https://github.wwt.com/custom-apps/wwt-blue-steel/pull/917
1566
1559
  --btn-ghost-ink: var(--bs-ink-secondary);
1567
1560
  --btn-highlight: var(--bs-secondary-lightest);
1568
1561
  --btn-light: var(--bs-secondary-highlight);
1569
- --btn-main: var(--bs-secondary-base-fixed);
1562
+ --btn-main: var(--bs-secondary-base);
1570
1563
  --btn-secondary: var(--bs-secondary-medium);
1571
1564
  }
1572
- .dark .bs-button:where([data-variant^='secondary']) {
1573
- --btn-highlight: var(--bs-secondary-base-fixed);
1574
- --btn-light: var(--bs-navy-400);
1575
- }
1576
1565
  .bs-button:where([data-variant^='positive']) {
1577
1566
  --btn-ghost-ink: var(--bs-ink-positive);
1578
- --btn-highlight: var(--bs-positive-lightest);
1567
+ --btn-highlight: var(--bs-positive-highlight);
1579
1568
  --btn-light: var(--bs-positive-highlight);
1580
- --btn-main: var(--bs-positive-base-fixed);
1569
+ --btn-main: var(--bs-positive-base);
1581
1570
  --btn-secondary: var(--bs-positive-medium);
1582
1571
  }
1583
1572
  .bs-button:where([data-variant^='warning']) {
1584
1573
  --btn-ghost-ink: var(--bs-ink-warning);
1585
- --btn-highlight: var(--bs-warning-lightest);
1574
+ --btn-highlight: var(--bs-warning-highlight);
1586
1575
  --btn-light: var(--bs-warning-highlight);
1587
- --btn-main: var(--bs-warning-dark);
1576
+ --btn-main: var(--bs-warning-base);
1588
1577
  --btn-secondary: var(--bs-warning-medium);
1589
1578
  }
1590
1579
  .bs-button:where([data-variant^='negative']) {
1591
1580
  --btn-ghost-ink: var(--bs-ink-negative);
1592
- --btn-highlight: var(--bs-negative-lightest);
1581
+ --btn-highlight: var(--bs-negative-highlight);
1593
1582
  --btn-light: var(--bs-negative-highlight);
1594
- --btn-main: var(--bs-negative-dark);
1583
+ --btn-main: var(--bs-negative-base);
1595
1584
  --btn-secondary: var(--bs-negative-medium);
1596
1585
  }
1597
- /* pink variant */
1598
- .bs-button:where([data-variant^='pink']) {
1599
- --btn-ghost-ink: var(--bs-ink-accent-3);
1600
- --btn-highlight: var(--bs-accent-3-base-fixed);
1601
- --btn-light: var(--bs-accent-3-highlight);
1602
- --btn-main: var(--bs-accent-3-base-fixed);
1603
- --btn-secondary: var(--bs-accent-3-medium);
1586
+ .bs-button:where([data-variant^='accent-1']) {
1587
+ --btn-ghost-ink: var(--bs-ink-accent-1);
1588
+ --btn-highlight: var(--bs-accent-1-base);
1589
+ --btn-light: var(--bs-accent-1-highlight);
1590
+ --btn-main: var(--bs-accent-1-base);
1591
+ --btn-secondary: var(--bs-accent-1-medium);
1604
1592
  }
1605
- /* royal blue variant */
1593
+ /* DEPRECATED - royal blue variant (use accent-1 instead) */
1606
1594
  .bs-button:where([data-variant^='royal']) {
1607
1595
  --btn-ghost-ink: var(--bs-ink-accent-1);
1608
- --btn-highlight: var(--bs-accent-1-base-fixed);
1596
+ --btn-highlight: var(--bs-accent-1-base);
1609
1597
  --btn-light: var(--bs-accent-1-highlight);
1610
- --btn-main: var(--bs-accent-1-base-fixed);
1598
+ --btn-main: var(--bs-accent-1-base);
1611
1599
  --btn-secondary: var(--bs-accent-1-medium);
1612
1600
  }
1601
+ .bs-button:where([data-variant^='accent-2']) {
1602
+ --btn-ghost-ink: var(--bs-ink-accent-2);
1603
+ --btn-highlight: var(--bs-accent-2-base);
1604
+ --btn-light: var(--bs-accent-2-highlight);
1605
+ --btn-main: var(--bs-accent-2-base);
1606
+ --btn-secondary: var(--bs-accent-2-medium);
1607
+ }
1608
+ .bs-button:where([data-variant^='accent-3']) {
1609
+ --btn-ghost-ink: var(--bs-ink-accent-3);
1610
+ --btn-highlight: var(--bs-accent-3-base);
1611
+ --btn-light: var(--bs-accent-3-highlight);
1612
+ --btn-main: var(--bs-accent-3-base);
1613
+ --btn-secondary: var(--bs-accent-3-medium);
1614
+ }
1615
+ /* DEPRECATED - pink variant (use accent-3 instead) */
1616
+ .bs-button:where([data-variant^='pink']) {
1617
+ --btn-ghost-ink: var(--bs-ink-accent-3);
1618
+ --btn-highlight: var(--bs-accent-3-base);
1619
+ --btn-light: var(--bs-accent-3-highlight);
1620
+ --btn-main: var(--bs-accent-3-base);
1621
+ --btn-secondary: var(--bs-accent-3-medium);
1622
+ }
1613
1623
  /* white variant - for dark backgrounds + ghost btn or text btn only */
1614
1624
  .bs-button:where([data-variant^='white'][data-ghost]:not([data-ghost="false"])) {
1615
1625
  --btn-ghost-ink: var(--bs-ink-white);
@@ -2062,36 +2072,72 @@ a.bs-circle-button {
2062
2072
  --btn-secondary: transparent;
2063
2073
  --btn-shadow-color-active: transparent;
2064
2074
  }
2075
+ .bs-circle-button:where([data-variant="color-primary"]) {
2076
+ --btn-border-color-focused: var(--bs-ink-primary);
2077
+ --btn-text-color: var(--bs-ink-primary);
2078
+ --btn-text-color-hovered: var(--bs-primary-base);
2079
+ }
2080
+ /* DEPRECATED - blue variant (use primary instead) */
2065
2081
  .bs-circle-button:where([data-variant="color-blue"]) {
2066
2082
  --btn-border-color-focused: var(--bs-ink-primary);
2067
2083
  --btn-text-color: var(--bs-ink-primary);
2068
2084
  --btn-text-color-hovered: var(--bs-primary-base);
2069
2085
  }
2070
- .bs-circle-button:where([data-variant="color-royal"]) {
2071
- --btn-border-color-focused: var(--bs-ink-accent-1);
2072
- --btn-text-color: var(--bs-ink-accent-1);
2073
- --btn-text-color-hovered: var(--bs-accent-1-medium);
2086
+ .bs-circle-button:where([data-variant="color-positive"]) {
2087
+ --btn-border-color-focused: var(--bs-positive-base);
2088
+ --btn-text-color: var(--bs-ink-positive);
2089
+ --btn-text-color-hovered: var(--bs-positive-medium);
2074
2090
  }
2091
+ /* DEPRECATED - purple variant (use positive instead) */
2075
2092
  .bs-circle-button:where([data-variant="color-purple"]) {
2076
2093
  --btn-border-color-focused: var(--bs-positive-base);
2077
2094
  --btn-text-color: var(--bs-ink-positive);
2078
2095
  --btn-text-color-hovered: var(--bs-positive-medium);
2079
2096
  }
2080
- .bs-circle-button:where([data-variant="color-pink"]) {
2081
- --btn-border-color-focused: var(--bs-accent-3-base);
2082
- --btn-text-color: var(--bs-ink-accent-3);
2083
- --btn-text-color-hovered: var(--bs-accent-3-base);
2097
+ .bs-circle-button:where([data-variant="color-warning"]) {
2098
+ --btn-border-color-focused: var(--bs-ink-warning);
2099
+ --btn-text-color: var(--bs-ink-warning);
2100
+ --btn-text-color-hovered: var(--bs-warning-base);
2084
2101
  }
2102
+ /* DEPRECATED - orange variant (use warning instead) */
2085
2103
  .bs-circle-button:where([data-variant="color-orange"]) {
2086
2104
  --btn-border-color-focused: var(--bs-ink-warning);
2087
2105
  --btn-text-color: var(--bs-ink-warning);
2088
2106
  --btn-text-color-hovered: var(--bs-warning-base);
2089
2107
  }
2108
+ .bs-circle-button:where([data-variant="color-negative"]) {
2109
+ --btn-border-color-focused: var(--bs-ink-negative);
2110
+ --btn-text-color: var(--bs-ink-negative);
2111
+ --btn-text-color-hovered: var(--bs-negative-base);
2112
+ }
2113
+ /* DEPRECATED - red variant (use negative instead) */
2090
2114
  .bs-circle-button:where([data-variant="color-red"]) {
2091
2115
  --btn-border-color-focused: var(--bs-ink-regative);
2092
2116
  --btn-text-color: var(--bs-ink-negative);
2093
2117
  --btn-text-color-hovered: var(--bs-negative-base);
2094
2118
  }
2119
+ .bs-circle-button:where([data-variant="color-accent-1"]) {
2120
+ --btn-border-color-focused: var(--bs-ink-accent-1);
2121
+ --btn-text-color: var(--bs-ink-accent-1);
2122
+ --btn-text-color-hovered: var(--bs-accent-1-medium);
2123
+ }
2124
+ /* DEPRECATED - royal blue variant (use accent-1 instead) */
2125
+ .bs-circle-button:where([data-variant="color-royal"]) {
2126
+ --btn-border-color-focused: var(--bs-ink-accent-1);
2127
+ --btn-text-color: var(--bs-ink-accent-1);
2128
+ --btn-text-color-hovered: var(--bs-accent-1-medium);
2129
+ }
2130
+ .bs-circle-button:where([data-variant="color-accent-3"]) {
2131
+ --btn-border-color-focused: var(--bs-accent-3-base);
2132
+ --btn-text-color: var(--bs-ink-accent-3);
2133
+ --btn-text-color-hovered: var(--bs-accent-3-medium);
2134
+ }
2135
+ /* DEPRECATED - pink variant (use accent-3 instead) */
2136
+ .bs-circle-button:where([data-variant="color-pink"]) {
2137
+ --btn-border-color-focused: var(--bs-accent-3-base);
2138
+ --btn-text-color: var(--bs-ink-accent-3);
2139
+ --btn-text-color-hovered: var(--bs-accent-3-medium);
2140
+ }
2095
2141
  .bs-circle-button:where([data-variant="color-white"]) {
2096
2142
  --btn-border-color-focused: var(--bs-ink-white);
2097
2143
  --btn-text-color: var(--bs-ink-white);
@@ -2109,7 +2155,7 @@ a.bs-circle-button {
2109
2155
  }
2110
2156
  .bs-empty-state {
2111
2157
  --bs-empty-state-description-color: var(--bs-ink-light);
2112
- --bs-empty-state-icon-color: var(--bs-violet-300);
2158
+ --bs-empty-state-icon-color: var(--bs-accent-2-medium);
2113
2159
  --bs-empty-state-title-color: var(--bs-ink-base);
2114
2160
  --col-gap: var(--bs-space-6);
2115
2161
  --cta-spacing: var(--bs-space-4);
@@ -2830,7 +2876,7 @@ button:where(.bs-filter-button) {
2830
2876
  border-color: transparent;
2831
2877
  border-radius: var(--bs-space-1);
2832
2878
  border: 1px solid transparent;
2833
- color: var(--bs-royal-400);
2879
+ color: var(--bs-ink-accent-1);
2834
2880
  cursor: pointer;
2835
2881
  display: inline-flex;
2836
2882
  font-family: inherit;
@@ -2851,11 +2897,11 @@ button:where(.bs-filter-button) {
2851
2897
  }
2852
2898
  /* Hover */
2853
2899
  .bs-inline-tab:where(:not([data-selected]):hover) {
2854
- border-color: var(--bs-royal-400);
2900
+ border-color: var(--bs-ink-accent-1);
2855
2901
  }
2856
2902
  /* Keyboard Focus */
2857
2903
  .bs-inline-tab:where(:focus-visible) {
2858
- outline: 2px solid var(--bs-royal-400);
2904
+ outline: 2px solid var(--bs-ink-accent-1);
2859
2905
 
2860
2906
  &:where([data-selected]) {
2861
2907
  outline-offset: 2px;
@@ -2881,45 +2927,10 @@ button:where(.bs-filter-button) {
2881
2927
  /* -- Dark Mode Overrides -- */
2882
2928
  :where(.dark .bs-inline-tab) {
2883
2929
 
2884
- /* Ink */
2885
- &:not([data-selected], :disabled, [aria-disabled="true"]) {
2886
- color: var(--bs-royal-200);
2887
- }
2888
-
2889
2930
  /* Selected & Disabled */
2890
2931
  &[data-selected]:where(:disabled, [aria-disabled="true"]) {
2891
2932
  color: var(--bs-ink-invert-base);
2892
2933
  }
2893
-
2894
- /* Keyboard Focus */
2895
- &:not([disabled]):where(:focus-visible) {
2896
- outline-color: var(--bs-royal-200);
2897
- }
2898
-
2899
- /* Hover */
2900
- &:not([disabled]):where(:not([data-selected]):hover) {
2901
- border-color: var(--bs-royal-200);
2902
- }
2903
-
2904
- }
2905
- /* -- Softchoice Mode Overrides -- */
2906
- :where(.softchoice .bs-inline-tab) {
2907
-
2908
- /* Ink */
2909
- &:not([data-selected], :disabled, [aria-disabled="true"]) {
2910
- color: var(--bs-cobalt-400);
2911
- }
2912
-
2913
- /* Keyboard Focus */
2914
- &:not([disabled]):where(:focus-visible) {
2915
- outline-color: var(--bs-cobalt-400);
2916
- }
2917
-
2918
- /* Hover */
2919
- &:not([disabled]):where(:not([data-selected]):hover) {
2920
- border-color: var(--bs-cobalt-400);
2921
- }
2922
-
2923
2934
  }
2924
2935
  /* 0 0 1 for width to allow e.g. tailwind override */
2925
2936
  :is(div, *):where(.bs-input-addon) {
@@ -3026,7 +3037,7 @@ and issues with box-sizing
3026
3037
  /* -------- Inner-bordered styles -------- */
3027
3038
  /** Inner borders should be straight; shown only if variant: "inner-bordered" */
3028
3039
  .bs-input-addon:where([data-variant="inner-bordered"]) {
3029
- --input-addon-nested-border: var(--bs-violet-200);
3040
+ --input-addon-nested-border: var(--bs-border-input);
3030
3041
  }
3031
3042
  .bs-input-addon > :where(.bs-input-addon:not(:last-child, :focus-within, [data-part="right"])),
3032
3043
  .bs-input-addon > :where(:not(:last-child, :focus-within, [data-part="right"]))::after {
@@ -3120,7 +3131,7 @@ and issues with box-sizing
3120
3131
  /* Straight-lined ::before border to fill the gap below the rounded ::after border */
3121
3132
  .bs-input-addon:where([data-multifocus]:not([data-multifocus="false"])) :where(:focus-within)::before {
3122
3133
  border-bottom-width: 1px;
3123
- border-color: var(--bs-violet-300);
3134
+ border-color: var(--bs-border-input);
3124
3135
  border-radius: 0;
3125
3136
  border-top-width: 1px;
3126
3137
  z-index: 1;
@@ -3323,8 +3334,8 @@ data-autosize-icons="true" - see above
3323
3334
  .bs-boolean :where(input[data-error="true"]), /* deprecate this one in favor of next line */
3324
3335
  .bs-boolean:where([data-error="true"]),
3325
3336
  .bs-checkbox:where([data-error="true"]) {
3326
- --box-shadow: var(--bs-negative-base);
3327
- --outline-color: var(--bs-negative-base);
3337
+ --box-shadow: var(--bs-ink-negative);
3338
+ --outline-color: var(--bs-ink-negative);
3328
3339
  }
3329
3340
  /*
3330
3341
  HEADS-UP! Styling to look like an input is inherited from .bs-input
@@ -3423,73 +3434,88 @@ data-autosize-icons="true" - see above
3423
3434
  .bs-input-phone ul:where(.bs-dropdown-options-deprecated) {
3424
3435
  min-width: 7.5rem;
3425
3436
  }
3426
- :where(.bs-input-search) {
3427
- display: inline-block;
3437
+ .bs-input-search {
3438
+ display: grid;
3439
+ grid-template-columns: 1fr 2.5rem;
3440
+ align-items: center;
3428
3441
  width: 100%;
3442
+ height: var(--input-search-height, 2.5rem);
3429
3443
  }
3430
- .bs-input-search :where(.bs-icon svg) {
3431
- box-sizing: content-box;
3432
- }
3433
- .bs-input-search :where([data-component="bs-icon-search"]) {
3444
+ /* -- Icon -- */
3445
+ .bs-input-search-icon {
3434
3446
  --icon-size: var(--search-icon-size, 1.75rem);
3447
+ position: relative;
3448
+ grid-area: 1 / 1;
3435
3449
  padding: var(--search-icon-padding, 0 0 0 .75rem);
3450
+ height: 100%;
3451
+ pointer-events: none;
3452
+ z-index: 1;
3436
3453
  }
3437
- /* Clear Button */
3438
- .bs-input-search button {
3439
- align-items: center;
3440
- background-color: transparent;
3441
- border-color: transparent;
3442
- color: inherit;
3443
- cursor: pointer;
3454
+ .bs-input-search-icon :where(svg) {
3455
+ box-sizing: content-box;
3456
+ }
3457
+ /* -- Input -- */
3458
+ .bs-input-search-input {
3459
+ --input-padding-inline: .75rem;
3460
+ grid-area: 1 / 1 / 1 / -1;
3461
+ pointer-events: auto;
3462
+ }
3463
+ /* make room for search icon */
3464
+ /* can't use 0,1,0 here due to :is() usage in input-text.css trumping it */
3465
+ .bs-input-search-icon + .bs-input-search-input {
3466
+ padding-inline-start: 2.25rem;
3467
+ }
3468
+ /* make room for X button (so text doesn't overlap) */
3469
+ /* can't use 0,1,0 here due to :is() usage in input-text.css trumping it */
3470
+ .bs-input-search-input:has(+ .bs-input-search-button) {
3471
+ padding-inline-end: 2.25rem;
3472
+ }
3473
+ .bs-input-search:where(:focus-within) :where(.bs-input-search-input) {
3474
+ --input-border: var(--bs-blue-base);
3475
+ }
3476
+ /* -- Button -- */
3477
+ .bs-input-search-button {
3478
+ grid-area: 1 / 2 / 1 / -1;
3444
3479
  display: flex;
3445
- font-family: inherit;
3446
- font-size: var(--bs-text-base);
3480
+ align-items: center;
3481
+ justify-content: center;
3447
3482
  height: 100%;
3448
- padding-bottom: var(--bs-space-0);
3449
- padding-left: 0.75rem;
3450
- padding-right: 0.75rem;
3451
- padding-top: var(--bs-space-0);
3452
- position: relative;
3453
- text-decoration: none;
3483
+ cursor: pointer;
3484
+ background-color: inherit;
3454
3485
  transition: transform var(--bs-transition-fast) var(--bs-transition-ease);
3455
3486
  }
3456
- .bs-input-search button:where(:active) {
3457
- transform: scale(0.97);
3458
- transform-origin: center;
3459
- box-shadow: inset 0px 0px 4px 1px var(--bs-primary-base);
3460
- }
3461
- .bs-input-search button:where(:focus) {
3487
+ .bs-input-search-button:where(:focus-visible) {
3488
+ outline: none;
3462
3489
  border-radius: .25rem;
3463
- box-shadow: var(--focus-border) 0px 0px 0px 1px inset;
3464
- z-index: 1;
3490
+ box-shadow: var(--bs-blue-base) 0px 0px 0px 1px inset;
3491
+ }
3492
+ /* -- Disabled -- */
3493
+ .bs-input-search:where(:has(:disabled)) {
3494
+ color: var(--bs-ink-disabled);
3465
3495
  }
3466
- /* Filter variant */
3467
- .bs-input-search:where([data-variant="filter"]) {
3496
+ /* -- Filter Variant -- */
3497
+ .bs-input-search:where([data-variant="filter"]) :where(.bs-input-search-input) {
3468
3498
  --focus-border: transparent;
3469
3499
  --input-border: transparent;
3470
3500
  --input-addon-height: 1.5rem;
3471
- --input-caret: var(--bs-primary-base);
3501
+ --input-caret: var(--bs-blue-base);
3472
3502
  --input-padding-block: 0 0.125rem;
3473
- --input-padding-inline: 0.5rem;
3503
+ --input-padding-inline: 2.5rem 0.5rem;
3474
3504
  --input-placeholder: var(--bs-ink-light);
3475
3505
  --input-text-size: var(--bs-text-sm);
3476
3506
  --search-icon-size: 1rem;
3477
3507
  --search-icon-padding: 0;
3478
3508
  }
3479
- /* Filter variant: persist placeholder text color (`ink-light`) in dark mode */
3480
- :where(.dark) .bs-input-search:where([data-variant="filter"]) :is(input.bs-input)::-moz-placeholder {
3481
- --input-placeholder: var(--bs-ink-light);
3509
+ .bs-input-search:where([data-variant="filter"]):where(:focus-within) .bs-input-search-input {
3510
+ --input-border: transparent;
3482
3511
  }
3483
- :where(.dark) .bs-input-search:where([data-variant="filter"]) :is(input.bs-input)::placeholder {
3512
+ :where(.dark) .bs-input-search:where([data-variant="filter"]) .bs-input-search-input::-moz-placeholder {
3484
3513
  --input-placeholder: var(--bs-ink-light);
3485
3514
  }
3486
- /* Filter variant: cancels out base hover state styles */
3487
- .bs-input-addon:where([data-variant="filter"]):hover {
3488
- --input-bg: var(--bs-bg-base);
3515
+ :where(.dark) .bs-input-search:where([data-variant="filter"]) .bs-input-search-input::placeholder {
3516
+ --input-placeholder: var(--bs-ink-light);
3489
3517
  }
3490
- /* -------- Disabled styles -------- */
3491
- .bs-input-addon:where([data-variant="filter"][data-disabled="true"]),
3492
- .bs-input-addon:where([data-variant="filter"][data-disabled="true"]) :is(.bs-button, .bs-input) {
3518
+ .bs-input-search:where([data-variant="filter"]):where(:has(:disabled)) .bs-input-search-input {
3493
3519
  --input-bg: var(--bs-bg-base);
3494
3520
  --input-border: transparent;
3495
3521
  }
@@ -3722,11 +3748,17 @@ label:where(.bs-label) {
3722
3748
  }
3723
3749
  }
3724
3750
  .bs-option-group {
3725
- margin: var(--bs-space-3) 0;
3751
+ margin-bottom: var(--bs-space-6);
3726
3752
  padding-top: var(--bs-space-3);
3727
3753
  border-top: 1px solid var(--bs-border-base);
3754
+ display: flex;
3755
+ flex-direction: column;
3756
+ }
3757
+ .bs-option-group:where(:first-child) {
3758
+ padding-top: 0;
3759
+ border-top: none;
3728
3760
  }
3729
- .bs-option-group:where(:last-child) {
3761
+ .bs-option-group:where(:nth-last-child(1 of [data-visible="true"])) {
3730
3762
  margin-bottom: 0;
3731
3763
  }
3732
3764
  .bs-option-group:where(:has(.bs-option-group-title)) {
@@ -3742,27 +3774,47 @@ label:where(.bs-label) {
3742
3774
  display: flex;
3743
3775
  font-size: var(--bs-text-xs);
3744
3776
  font-weight: var(--bs-font-semibold);
3745
- margin: 0 0 var(--bs-space-3);
3746
- min-height: var(--bs-space-8);
3747
- padding: var(--bs-space-1) var(--bs-space-3);
3777
+ height: var(--bs-space-8);
3778
+ margin: 0 0 var(--bs-space-2);
3779
+ padding: var(--bs-space-1) var(--bs-space-3) var(--bs-space-1) 1.75rem;
3748
3780
  position: sticky;
3749
3781
  top: 0;
3782
+ order: -2;
3783
+ z-index: 1;
3784
+ }
3785
+ /* Separator for multiple selected options */
3786
+ .bs-option-group-multiple-hr {
3787
+ margin: 0 var(--bs-space-3) var(--bs-space-3);
3788
+ border-bottom: 0.0625rem solid var(--bs-border-base);
3789
+ }
3790
+ @media (min-width: 1166px) {
3791
+ .bs-option-group-title {
3792
+ padding: var(--bs-space-1) var(--bs-space-3);
3793
+ }
3750
3794
  }
3751
3795
  .bs-option {
3752
- padding: var(--bs-space-1) var(--bs-space-2);
3753
- color: var(--bs-ink-base);
3754
3796
  --description-color: var(--bs-ink-light);
3755
- cursor: pointer;
3756
3797
  border-left: 4px solid transparent;
3757
3798
  border-right: 4px solid transparent;
3799
+ color: var(--bs-ink-base);
3800
+ cursor: pointer;
3758
3801
  overflow-wrap: break-word;
3802
+ padding: var(--bs-space-1) var(--bs-space-3) var(--bs-space-1) var(--bs-space-6);
3759
3803
  scroll-margin-bottom: var(--bs-space-3);
3804
+ /* Make sure options are visible when scrolling with group title */
3805
+ /* This is group title height + margin + padding + border */
3806
+ scroll-margin-top: 2.5rem;
3807
+ }
3808
+ @media (min-width: 1166px) {
3809
+ .bs-option {
3810
+ padding: var(--bs-space-1) var(--bs-space-2);
3811
+ }
3760
3812
  }
3761
3813
  .bs-option {
3762
3814
  margin-bottom: var(--bs-space-2); /* ask ux: 12px is too much, can't see many menu options in view */
3763
3815
  }
3764
- /* is basically doing a last visible child selector, since filtered options and groups are hidden by v-show */
3765
- .bs-option:where(:not(:has(~ [data-visible="true"]))) {
3816
+ /* is basically doing a last visible child selector ignoring selectToTop, since filtered options and groups are hidden by v-show */
3817
+ .bs-option:where(:nth-last-child(1 of [data-visible="true"][data-selected-to-top="false"])) {
3766
3818
  margin-bottom: 0;
3767
3819
  }
3768
3820
  /* -- DISABLED -- */
@@ -3948,10 +4000,11 @@ label:where(.bs-label) {
3948
4000
  padding-right: 2px;
3949
4001
  width: auto;
3950
4002
  }
4003
+ /* todo: waiting to hear back from UX on disabled, but there is at least 1 exmple in code of a pill w/ disable */
3951
4004
  .bs-pill {
3952
4005
  --pill-background: var(--bs-bg-medium);
3953
4006
  --pill-border: transparent;
3954
- --pill-text: var(--bs-royal-400);
4007
+ --pill-text: var(--bs-ink-accent-1);
3955
4008
  --pill-gap: var(--bs-space-2);
3956
4009
 
3957
4010
  align-items: center;
@@ -3973,33 +4026,24 @@ label:where(.bs-label) {
3973
4026
  position: relative;
3974
4027
  text-decoration: none;
3975
4028
  }
3976
- :where(.bs-pill .bs-icon) {
3977
- height: 1rem;
3978
- width: 1rem;
3979
- }
3980
- /* ------------------------------- Dark mode (basic & status types only) ------------------------------- */
3981
- :where(.dark) .bs-pill {
3982
- --pill-text: var(--bs-royal-200);
4029
+ .bs-pill-content {
4030
+ display: inline-flex;
4031
+ align-items: center;
4032
+ gap: var(--pill-gap);
3983
4033
  }
3984
- /* ------------------------------- Softchoice mode (basic & status types only) ------------------------------- */
3985
- :where(.softchoice) .bs-pill {
3986
- --pill-text: var(--bs-cobalt-400);
4034
+ .bs-pill :where(.bs-icon) {
4035
+ height: 0.75rem;
4036
+ width: 0.75rem;
4037
+ flex-shrink: 0;
3987
4038
  }
3988
4039
  /* ------------------------------ Auto-truncation for content ------------------------------ */
3989
4040
  .bs-pill:has([data-truncate="true"]) {
3990
4041
  max-width: 100%;
3991
4042
  }
3992
- .bs-pill > :where([data-truncate="true"]) {
3993
- display: inline-block;
4043
+ .bs-pill-content:where([data-truncate="true"]) {
4044
+ white-space: nowrap;
3994
4045
  overflow: hidden;
3995
4046
  text-overflow: ellipsis;
3996
- white-space: nowrap;
3997
- }
3998
- /* If false, pass thru .bs-pill display styles */
3999
- .bs-pill > :where([data-truncate="false"]) {
4000
- display: inline-flex;
4001
- align-items: center;
4002
- gap: var(--pill-gap);
4003
4047
  }
4004
4048
  /* ------------------------------ Button and Link Styles ------------------------------ */
4005
4049
  :is(a, button).bs-pill {
@@ -4019,37 +4063,47 @@ label:where(.bs-label) {
4019
4063
  }
4020
4064
  /* ------------------------------ Status Styles ------------------------------ */
4021
4065
  .bs-pill:where([data-status]) {
4022
- --status-color: var(--bs-primary-base-fixed);
4023
- }
4024
- .bs-pill:where([data-status])::before {
4025
- background-color: var(--status-color);
4026
- border-radius: 100%;
4027
- content: '';
4028
- height: 12px;
4029
- width: 12px;
4066
+ font-size: var(--bs-text-xs);
4067
+ font-weight: var(--bs-font-semibold);
4068
+ color: var(--status-color);
4030
4069
  }
4031
4070
  /* ----- Status Colors ----- */
4032
- .bs-pill:where([data-status^="active"]) {
4033
- --status-color: var(--bs-primary-base-fixed);
4034
- }
4035
- .bs-pill:where([data-status^="complete"]) {
4036
- --status-color: var(--bs-positive-base-fixed);
4037
- }
4038
- .bs-pill:where([data-status^="disabled"]) {
4039
- --status-color: var(--bs-ink-disabled);
4071
+ /* Disabled is being renamed to Neutral */
4072
+ .bs-pill:where([data-status^="neutral"], [data-status^="disabled"]) {
4073
+ --status-color: var(--bs-ink-light);
4074
+ --pill-background: var(--bs-accent-7-highlight);
4040
4075
  }
4041
- .bs-pill:where([data-status^="error"]) {
4042
- --status-color: var(--bs-negative-dark);
4076
+ .bs-pill:where([data-status^="active"]) {
4077
+ --status-color: var(--bs-ink-primary);
4078
+ --pill-background: var(--bs-primary-highlight);
4043
4079
  }
4044
4080
  .bs-pill:where([data-status^="positive"]) {
4045
- --status-color: var(--bs-ecomm-positive-base-fixed);
4081
+ --status-color: var(--bs-ink-positive);
4082
+ --pill-background: var(--bs-positive-highlight);
4046
4083
  }
4047
4084
  .bs-pill:where([data-status^="warning"]) {
4048
- --status-color: var(--bs-warning-dark);
4085
+ --status-color: var(--bs-ink-warning);
4086
+ --pill-background: var(--bs-warning-highlight);
4087
+ }
4088
+ /* Error is being renamed to Negative */
4089
+ .bs-pill:where([data-status^="negative"],[data-status^="error"]) {
4090
+ --status-color: var(--bs-ink-negative);
4091
+ --pill-background: var(--bs-negative-highlight);
4049
4092
  }
4050
4093
  /* Deprecated; use "data-status disabled" instead */
4051
4094
  .bs-pill:where([data-status^="inactive"]) {
4052
- --status-color: var(--bs-gray-300);
4095
+ --status-color: var(--bs-gray-400);
4096
+ --pill-background: var(--bs-gray-100);
4097
+ }
4098
+ /* Deprecated; use "data-status positive" instead */
4099
+ .bs-pill:where([data-status^="complete"]) {
4100
+ --status-color: var(--bs-purple-500);
4101
+ --pill-background: var(--bs-purple-100);
4102
+ }
4103
+ /* Dark mode selector for complete */
4104
+ :where(.dark) .bs-pill:where([data-status^="complete"]) {
4105
+ --status-color: var(--bs-purple-100);
4106
+ --pill-background: var(--bs-purple-500);
4053
4107
  }
4054
4108
  /* ------------------------------ Filter Styles ------------------------------ */
4055
4109
  .bs-pill:where([data-variant^="filter"]) {
@@ -4063,6 +4117,10 @@ label:where(.bs-label) {
4063
4117
  :is(a, button).bs-pill:where([data-variant^="filter"]):is(:hover, :focus) {
4064
4118
  --pill-border: var(--bs-ink-base);
4065
4119
  }
4120
+ /* ------------------------------ Variant: "White" Styles ------------------------------ */
4121
+ .bs-pill:where([data-variant="white"]) {
4122
+ background-color: var(--bs-bg-base-to-medium);
4123
+ }
4066
4124
  /* ------------------------------ Variant: "Filter Add" Styles ------------------------------ */
4067
4125
  /* Black + */
4068
4126
  .bs-pill:where([data-variant^="filter"][data-variant*="add"])::after {
@@ -4081,7 +4139,7 @@ label:where(.bs-label) {
4081
4139
  :where(.dark) .bs-pill:where([data-variant^="filter"][data-variant*="remove"]):not(:disabled, [aria-disabled="true"])::after {
4082
4140
  content: url("data:image/svg+xml,%3Csvg width='8' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 .703 7.297 0 4 3.297.703 0 0 .703 3.297 4 0 7.297.703 8 4 4.703 7.297 8 8 7.297 4.703 4 8 .703Z' fill='%23ffffff'/%3E%3C/svg%3E%0A");
4083
4141
  }
4084
- /* ------------------------------ Variant: "Filter Active" Styles ------------------------------ */
4142
+ /* ------------------------------ Variant: "Filter Active" Styles DEPRECATED ------------------------------ */
4085
4143
  .bs-pill:where([data-variant^="filter"][data-active]:not([data-active="false"])) {
4086
4144
  --pill-background: var(--bs-primary-base-fixed);
4087
4145
  --pill-border: transparent;
@@ -4108,6 +4166,8 @@ label:where(.bs-label) {
4108
4166
  --pill-text: var(--bs-white);
4109
4167
  --pill-gap: var(--bs-space-1);
4110
4168
  text-transform: uppercase;
4169
+ font-size: var(--bs-text-xs);
4170
+ font-weight: var(--bs-font-semibold);
4111
4171
  }
4112
4172
  .bs-pill:where([data-variant^="live"]):hover {
4113
4173
  --pill-border: transparent;
@@ -4121,6 +4181,7 @@ label:where(.bs-label) {
4121
4181
  width: 12px;
4122
4182
  }
4123
4183
  /* ------------------------------ Variant: "Inactive" Styles ------------------------------ */
4184
+ /* Deprecated; use Status Neutral instead */
4124
4185
  .bs-pill:where([data-variant^="inactive"]) {
4125
4186
  --pill-background: var(--bs-neutral-base);
4126
4187
  --pill-text: var(--bs-ink-invert-base);
@@ -5075,7 +5136,7 @@ a.bs-text-button {
5075
5136
  /* ------------ Status colors ------------ */
5076
5137
  .bs-timeline :where(.bs-step-item[data-status="in-progress"]) {
5077
5138
  --step-color: var(--bs-ink-base);
5078
- --progress-step-bg: var(--bs-positive-light);
5139
+ --progress-step-bg: var(--bs-accent-4-base);
5079
5140
  }
5080
5141
  .bs-progress-bar :where(.bs-step-item[data-status="not-started"]) {
5081
5142
  --step-color: var(--bs-ink-light);
@@ -5091,11 +5152,11 @@ a.bs-text-button {
5091
5152
  .bs-timeline :where(.bs-step-item[data-status="complete"]),
5092
5153
  .bs-timeline :where(.bs-step-item[data-status="paused"]),
5093
5154
  .bs-timeline :where(.bs-step-item[data-status="ongoing"]) {
5094
- --step-color: var(--bs-ink-positive);
5095
- --progress-step-bg: var(--bs-positive-medium);
5155
+ --step-color: var(--bs-ink-accent-4);
5156
+ --progress-step-bg: var(--bs-accent-4-medium);
5096
5157
  }
5097
5158
  :is(.bs-progress-bar, .bs-timeline) :where(.bs-step-item[data-status="base"]) {
5098
- --progress-step-bg: var(--bs-positive-base);
5159
+ --progress-step-bg: var(--bs-accent-4-base);
5099
5160
  }
5100
5161
  .bs-timeline :where(.bs-step-item[data-status="warning"]) {
5101
5162
  --step-color: var(--bs-ink-warning);
@@ -5122,13 +5183,34 @@ a.bs-text-button {
5122
5183
  --toggle-color: var(--bs-white);
5123
5184
  --top-offset: 48px;
5124
5185
  }
5125
- .bs-vertical-nav {
5126
- -ms-overflow-style: none; /* Internet Explorer 10+ */
5127
- background-color: var(--bg-color);
5128
- border-inline-end: 1px solid var(--border-color);
5129
- color: var(--text-color);
5130
- display: flex;
5131
- flex-direction: column;
5186
+ .bs-vertical-nav-wrapper:where([data-bg-variant="bg-base"]) {
5187
+ --active-color: var(--bs-blue-10);
5188
+ --bg-color: var(--bs-bg-base);
5189
+ --border-color: var(--bs-border-medium);
5190
+ --text-color: var(--bs-ink-medium);
5191
+ --link-color: var(--bs-ink-medium);
5192
+ --link-hover-color: var(--bs-ink-blue);
5193
+ --link-active-color: var(--bs-ink-blue);
5194
+ --toggle-bg-color: var(--bs-bg-base);
5195
+ --toggle-color: var(--bs-ink-medium);
5196
+ }
5197
+ .dark :where(.bs-vertical-nav-wrapper),
5198
+ .dark :where(.bs-vertical-nav-wrapper:where([data-bg-variant="bg-base"])) {
5199
+ --active-color: rgba(255, 255, 255, 0.25);
5200
+ --bg-color: var(--bs-bg-base);
5201
+ --border-color: var(--bs-border-medium);
5202
+ --text-color: var(--bs-white);
5203
+ --link-color: var(--bs-white);
5204
+ --link-hover-color: var(--bs-white);
5205
+ --link-active-color: var(--bs-white);
5206
+ }
5207
+ .bs-vertical-nav {
5208
+ -ms-overflow-style: none; /* Internet Explorer 10+ */
5209
+ background-color: var(--bg-color);
5210
+ border-inline-end: 1px solid var(--border-color);
5211
+ color: var(--text-color);
5212
+ display: flex;
5213
+ flex-direction: column;
5132
5214
  height: 100dvh;
5133
5215
  left: 0;
5134
5216
  max-height: calc(100dvh - var(--top-offset));
@@ -5145,30 +5227,25 @@ a.bs-text-button {
5145
5227
  /* Slight delay for visibility to change prior to opacity */
5146
5228
  transition: opacity var(--bs-transition-medium) var(--bs-transition-ease) 10ms;
5147
5229
  visibility: hidden;
5230
+ pointer-events: none;
5148
5231
  width: auto;
5149
- z-index: 1000;
5232
+ z-index: 999;
5150
5233
  }
5151
5234
  .bs-vertical-nav:where([data-mobile-shown="true"]) {
5152
5235
  opacity: 1;
5153
5236
  visibility: visible;
5237
+ pointer-events: auto;
5154
5238
  }
5155
5239
  .bs-vertical-nav:where([data-collapsible="true"]) {
5156
5240
  transition: opacity 200ms ease 10ms, width 350ms cubic-bezier(0.4, 0, 0.2, 1);
5157
5241
  }
5158
- .dark .bs-vertical-nav-wrapper {
5159
- --active-color: rgba(255, 255, 255, 0.25);
5160
- --bg-color: var(--bs-bg-base);
5161
- --border-color: var(--bs-border-medium);
5162
- }
5163
5242
  @media (min-width: 1166px) {
5164
5243
  .bs-vertical-nav {
5165
5244
  opacity: 1;
5166
- padding-bottom: 1rem;
5167
- padding-left: 0.5rem;
5168
- padding-right: 0.5rem;
5169
- padding-top: 1rem;
5245
+ padding: 1rem;
5170
5246
  right: auto;
5171
5247
  visibility: visible;
5248
+ pointer-events: auto;
5172
5249
  width: var(--bs-vertical-nav-width);
5173
5250
  }
5174
5251
 
@@ -5199,7 +5276,7 @@ a.bs-text-button {
5199
5276
  position: fixed;
5200
5277
  left: calc(var(--bs-vertical-nav-width) - 0.5rem);
5201
5278
  pointer-events: auto; /* Ensure button is clickable */
5202
- top: calc(var(--top-offset) + 3rem); /* top-offset + 3rem */
5279
+ top: calc(var(--top-offset) + 1.125rem); /* top-offset + 18px */
5203
5280
  transition: left 300ms ease-out, opacity 100ms ease-out;
5204
5281
  z-index: 1002; /* Above nav to prevent hover conflicts */
5205
5282
  }
@@ -5209,11 +5286,11 @@ a.bs-text-button {
5209
5286
  opacity: 1;
5210
5287
  transition: left 300ms ease-out, opacity 100ms ease-out;
5211
5288
  }
5212
-
5289
+
5213
5290
  .bs-vertical-nav-toggle:where([data-collapsed="true"]) {
5214
5291
  left: calc(var(--bs-vertical-nav-collapsed-width) - 0.5rem);
5215
5292
  }
5216
-
5293
+
5217
5294
  /* Adjust position for narrow variant when NOT collapsed */
5218
5295
  .bs-vertical-nav-toggle:where([data-narrow="true"]:not([data-collapsed="true"])) {
5219
5296
  left: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem);
@@ -5229,18 +5306,18 @@ a.bs-text-button {
5229
5306
  }
5230
5307
  /* ===== Sections ===== */
5231
5308
  .bs-vertical-nav :where(.bs-vertical-nav-section) {
5232
- border-top: 2px solid var(--border-color);
5309
+ border-top: 1px solid var(--border-color);
5233
5310
  margin-top: 0.5rem;
5234
5311
  padding-top: 0.5rem;
5235
5312
  }
5236
5313
  @media (min-width: 1166px) {
5237
5314
  .bs-vertical-nav :where(.bs-vertical-nav-section) {
5238
- margin-top: 0.25rem;
5315
+ margin-top: 0.5rem;
5239
5316
  }
5240
5317
  }
5241
5318
  /* Divider-only sections have no additional padding since no toggle button */
5242
5319
  .bs-vertical-nav :where(.bs-vertical-nav-section[data-divider-only="true"]) {
5243
- padding-top: 0.25rem;
5320
+ padding-top: 0.5rem;
5244
5321
  }
5245
5322
  /* Don't show border if the very first item is a section */
5246
5323
  .bs-vertical-nav :where(ul li:first-child) {
@@ -5270,7 +5347,7 @@ a.bs-text-button {
5270
5347
  @media (min-width: 1166px) {
5271
5348
  .bs-vertical-nav :where(.bs-vertical-nav-section-toggle) {
5272
5349
  /* nav width - nav left padding - nav right padding */
5273
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
5350
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem);
5274
5351
  }
5275
5352
 
5276
5353
  .bs-vertical-nav :where(.bs-vertical-nav-section-toggle span:first-child) {
@@ -5278,7 +5355,7 @@ a.bs-text-button {
5278
5355
  text-align: start;
5279
5356
  text-overflow: ellipsis;
5280
5357
  /* nav width - nav left padding - nav right padding - link left padding - link right padding - caret width */
5281
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 0.75rem);
5358
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem - 0.75rem - 0.75rem - 0.75rem);
5282
5359
  }
5283
5360
  }
5284
5361
  .bs-vertical-nav :where(.bs-vertical-nav-section-toggle-caret) {
@@ -5301,11 +5378,6 @@ a.bs-text-button {
5301
5378
  margin-top: 0;
5302
5379
  padding-left: 0;
5303
5380
  }
5304
- @media (min-width: 1166px) {
5305
- .bs-vertical-nav :where(ul) {
5306
- gap: 0.25rem;
5307
- }
5308
- }
5309
5381
  /* ===== Nav List Items / Links */
5310
5382
  .bs-vertical-nav :where(ul li a) {
5311
5383
  align-items: center;
@@ -5335,13 +5407,13 @@ a.bs-text-button {
5335
5407
  min-height: 2.5rem; /* Fixed minimum height to prevent height changes */
5336
5408
  padding: 0.5rem 0.75rem; /* Explicit padding for consistency */
5337
5409
  /* nav width - nav left padding - nav right padding */
5338
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
5410
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem);
5339
5411
  }
5340
5412
 
5341
5413
  /* Collapsed state width */
5342
5414
  .bs-vertical-nav:where([data-collapsed="true"]) :where(ul li a) {
5343
5415
  /* collapsed width - nav left padding - nav right padding */
5344
- width: calc(var(--bs-vertical-nav-collapsed-width) - 0.5rem - 0.5rem);
5416
+ width: calc(var(--bs-vertical-nav-collapsed-width) - 1rem - 1rem);
5345
5417
  }
5346
5418
 
5347
5419
  /* Text overflow - normal width - no icon */
@@ -5350,7 +5422,7 @@ a.bs-text-button {
5350
5422
  text-overflow: ellipsis;
5351
5423
  white-space: nowrap;
5352
5424
  /* nav width - nav left padding - nav right padding - link left padding - link right padding */
5353
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem);
5425
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem - 0.75rem - 0.75rem);
5354
5426
  }
5355
5427
 
5356
5428
  /* Text overflow - normal width - with icon */
@@ -5359,7 +5431,7 @@ a.bs-text-button {
5359
5431
  text-overflow: ellipsis;
5360
5432
  white-space: nowrap;
5361
5433
  /* nav width - nav left padding - nav right padding - link left padding - link right padding - icon width - icon gap */
5362
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 1rem - 0.5rem);
5434
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem - 0.75rem - 0.75rem - 1rem - 0.5rem);
5363
5435
  }
5364
5436
 
5365
5437
  .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a) {
@@ -5370,7 +5442,7 @@ a.bs-text-button {
5370
5442
  padding: 0.5rem 0.75rem; /* 8px 12px - matches Figma */
5371
5443
  text-align: center;
5372
5444
  /* nav width - nav left padding - nav right padding */
5373
- width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
5445
+ width: calc(var(--bs-vertical-nav-narrow-width) - 1rem - 1rem);
5374
5446
  }
5375
5447
 
5376
5448
  /* Text overflow - narrow width */
@@ -5383,10 +5455,21 @@ a.bs-text-button {
5383
5455
  width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
5384
5456
  }
5385
5457
  }
5458
+ .bs-vertical-nav-section:where([data-app-links="true"]) {
5459
+ padding-top: 1rem;
5460
+ }
5461
+ .bs-vertical-nav-section:where([data-app-links="true"]) :where(ul li a) {
5462
+ padding: 0.375rem 0.5rem;
5463
+ font-size: 0.75rem;
5464
+ font-weight: 600;
5465
+ }
5386
5466
  .bs-vertical-nav :where(ul li a:hover) {
5387
5467
  color: var(--link-hover-color);
5388
5468
  font-weight: 600;
5389
5469
  }
5470
+ .bs-vertical-nav-section:where([data-app-links="true"]) :where(ul li a:hover) {
5471
+ color: var(--bs-ink-blue);
5472
+ }
5390
5473
  .bs-vertical-nav :where(ul li a[data-active="true"]) {
5391
5474
  background-color: var(--active-color);
5392
5475
  color: var(--link-active-color);
@@ -5404,7 +5487,6 @@ a.bs-text-button {
5404
5487
  .bs-vertical-nav:not([data-narrow="true"]) :where(.bs-vertical-nav-link-icon) {
5405
5488
  height: 0.875rem;
5406
5489
  width: 0.875rem;
5407
- margin-left: 0.25rem; /* Visual centering adjustment */
5408
5490
  }
5409
5491
 
5410
5492
  /* Narrow variant icons - 16px (inherits from base) */
@@ -5413,6 +5495,11 @@ a.bs-text-button {
5413
5495
  width: 1rem;
5414
5496
  }
5415
5497
  }
5498
+ .bs-vertical-nav-section:where([data-app-links="true"]) .bs-vertical-nav-link-icon {
5499
+ height: 1.5rem;
5500
+ width: 1.5rem;
5501
+ margin-left: 0;
5502
+ }
5416
5503
  /* Default: Show text on mobile */
5417
5504
  .bs-vertical-nav :where(ul li a > span:last-child) {
5418
5505
  opacity: 1;
@@ -5463,7 +5550,7 @@ a.bs-text-button {
5463
5550
 
5464
5551
  /* Expand link widths on hover when collapsed */
5465
5552
  .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"]) :where(ul li a) {
5466
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
5553
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem);
5467
5554
  }
5468
5555
 
5469
5556
  /* Narrow variant links should respect narrow width on hover */
@@ -5476,7 +5563,6 @@ a.bs-text-button {
5476
5563
  opacity: 1;
5477
5564
  visibility: visible;
5478
5565
  width: auto;
5479
- overflow: visible;
5480
5566
  }
5481
5567
 
5482
5568
  /* Hide toggle button on hover when collapsed - but NOT when hovering the button itself */
@@ -5490,6 +5576,16 @@ a.bs-text-button {
5490
5576
  display: flex;
5491
5577
  }
5492
5578
  }
5579
+ /* ===== Top Content ===== */
5580
+ .bs-vertical-nav :where(.bs-vertical-nav-top-content) {
5581
+ margin-bottom: 0.5rem;
5582
+ padding: 0;
5583
+ }
5584
+ @media (min-width: 1166px) {
5585
+ .bs-vertical-nav :where(.bs-vertical-nav-top-content) {
5586
+ margin-bottom: 0.75rem;
5587
+ }
5588
+ }
5493
5589
  /* ===== End Items ===== */
5494
5590
  .bs-vertical-nav :where(.bs-vertical-nav-end-items) {
5495
5591
  display: flex;
@@ -5541,8 +5637,13 @@ a.bs-text-button {
5541
5637
  transition: margin-inline-start 350ms cubic-bezier(0.4, 0, 0.2, 1);
5542
5638
  }
5543
5639
  /*
5544
- POP SYSTEM COMPONENTS
5545
- Components that are built on top of BsPopover. The popover.css must come first.
5640
+ POP SYSTEM COMPONENTS (the order matters)
5641
+ - Components that are built on top of BsPopover
5642
+ - The popover.css must come first
5643
+ - In the future, could refactor this file to use @layer instead
5644
+ */
5645
+ /*
5646
+ HEADS-UP: BsPopover and its styles are the base for all popover-based components and their styles
5546
5647
  */
5547
5648
  #bs-popover-teleport-target {
5548
5649
  z-index: var(--bs-popover-z-index);
@@ -5556,39 +5657,27 @@ a.bs-text-button {
5556
5657
  overflow: hidden;
5557
5658
  z-index: var(--bs-popover-z-index);
5558
5659
  }
5559
- .bs-popover-wrap .bs-backdrop {
5560
- z-index: -1;
5561
- }
5562
5660
  .bs-popover {
5563
5661
  /* absolute positioning is needed for floating-ui, i.e. to anchor to element (is unset if anchored to viewport) */
5564
5662
  position: absolute;
5565
5663
  top: 0;
5566
5664
  left: 0;
5665
+ display: flex;
5666
+ flex-direction: column;
5567
5667
  width: var(--bs-popover-width, -moz-fit-content);
5568
5668
  width: var(--bs-popover-width, fit-content);
5569
5669
  height: var(--bs-popover-height, -moz-fit-content);
5570
5670
  height: var(--bs-popover-height, fit-content);
5571
5671
  max-width: calc(100dvw - 3rem);
5572
5672
  max-height: calc(100dvh - 3rem);
5573
- padding: var(--bs-space-6);
5574
5673
  background-color: var(--bs-bg-base-to-light);
5575
5674
  border-radius: var(--bs-space-1);
5576
5675
  box-shadow: var(--bs-shadow-contentLowCenter);
5577
5676
  pointer-events: auto; /* due to `pointer-events: none` on bs-popover-wrap */
5677
+ overflow: hidden;
5578
5678
  }
5579
- .bs-popover-close-button {
5580
- background-color: inherit;
5581
- background: transparent;
5582
- border-color: transparent;
5583
- color: inherit;
5584
- cursor: pointer;
5585
- font-family: inherit;
5586
- font-size: var(--bs-text-base);
5587
- padding: var(--bs-space-2); /* to make a bit nicer hit target */
5588
- position: absolute;
5589
- right: var(--bs-space-2);
5590
- text-decoration: none;
5591
- top: var(--bs-space-2);
5679
+ .bs-popover:where(:not(:has(.bs-pop-header, .bs-pop-body, .bs-pop-footer))) {
5680
+ padding: var(--bs-space-6);
5592
5681
  }
5593
5682
  /* -- SIZING -- */
5594
5683
  .bs-popover:where([data-size="sm"]) {
@@ -5657,13 +5746,6 @@ a.bs-text-button {
5657
5746
  .bs-popover-leave-active {
5658
5747
  transition-duration: var(--bs-popover-transition-duration)
5659
5748
  }
5660
- .bs-popover-enter-active .bs-backdrop,
5661
- .bs-popover-leave-active .bs-backdrop {
5662
- transition-property: opacity;
5663
- transition-duration: var(--bs-popover-transition-duration);
5664
- transition-timing-function: var(--bs-transition-cubic);
5665
- }
5666
- .bs-popover-enter-from .bs-backdrop,
5667
5749
  .bs-popover-leave-to .bs-backdrop {
5668
5750
  opacity: 0;
5669
5751
  }
@@ -5679,95 +5761,105 @@ a.bs-text-button {
5679
5761
  transform: scale(.95);
5680
5762
  }
5681
5763
  /*
5682
- HEADS-UP:
5683
- Most BsFlyout base styles come from its BsPopover root element,
5684
- so some of these styles are there to override those defaults.
5764
+ Used in BsPopover, but exists as its own thing in case
5765
+ consumers need/want to use it for custom layout cases.
5685
5766
  */
5686
- .bs-flyout {
5687
- --bs-flyout-padding: var(--bs-space-6);
5688
- --bs-flyout-padding-top: 2.75rem;
5689
- display: flex;
5690
- flex-direction: column;
5691
- padding: 0;
5692
- margin: 0;
5693
- border-radius: 0;
5767
+ .bs-pop-x-button {
5768
+ background-color: inherit;
5769
+ background: transparent;
5770
+ border-color: transparent;
5771
+ color: inherit;
5772
+ cursor: pointer;
5773
+ font-family: inherit;
5774
+ font-size: var(--bs-text-base);
5775
+ padding: var(--bs-space-3); /* to make a bit nicer hit target */
5776
+ position: absolute;
5777
+ right: var(--bs-pop-x-btn-right, var(--bs-space-1));
5778
+ text-decoration: none;
5779
+ top: var(--bs-pop-x-btn-top, var(--bs-space-1));
5694
5780
  }
5695
- /* -- CLOSE BUTTON -- */
5696
- /* calc() adjusts for default .5rem padding .bs-popover-close-button has, which exists for a nicer hit target */
5697
- .bs-flyout :where(.bs-popover-close-button) {
5698
- top: calc(var(--bs-flyout-padding) - .5rem);
5699
- right: calc(var(--bs-flyout-padding) - .5rem);
5781
+ .bs-popover:where(:has(.bs-pop-header)) {
5782
+ --bs-pop-x-btn-right: var(--bs-space-4);
5783
+ --bs-pop-x-btn-top: var(--bs-space-4);
5700
5784
  }
5701
- /* -- HEADER -- */
5702
- .bs-flyout-header {
5785
+ .bs-pop-header {
5786
+ color: var(--bs-ink-base);
5787
+ font-size: var(--bs-text-md);
5703
5788
  flex-shrink: 0;
5704
- padding: var(--bs-flyout-padding-top) var(--bs-flyout-padding) var(--bs-flyout-padding);
5705
- }
5706
- /* with border */
5707
- .bs-flyout-header:where([data-border="true"]) {
5708
- border-bottom: 1px solid var(--bs-border-base);
5709
- }
5710
- .bs-flyout-title {
5711
- display: flex;
5712
- align-items: center;
5713
- gap: var(--bs-space-2);
5714
- margin: 0 var(--bs-space-6) 0 0;
5715
- font-size: var(--bs-text-lg);
5716
- font-weight: normal;
5789
+ padding: var(--bs-pop-header-padding, var(--bs-space-6));
5717
5790
  line-height: var(--bs-leading-regular);
5718
5791
  }
5719
- .bs-flyout-subtitle {
5792
+ .bs-pop-header:where(:not(:has(.bs-pop-title, .bs-pop-subtitle))) {
5720
5793
  display: flex;
5721
5794
  align-items: center;
5722
5795
  gap: var(--bs-space-2);
5723
- margin: var(--bs-space-2) 0 0 0;
5724
- font-size: var(--bs-text-sm);
5725
- font-weight: normal;
5726
- line-height: var(--bs-leading-lg);
5727
5796
  }
5728
- .bs-flyout-header:where([data-border="true"]) {
5797
+ .bs-pop-header:where([data-border="true"]) {
5729
5798
  border-bottom: 1px solid var(--bs-border-base);
5730
5799
  }
5731
- /* -- BODY -- */
5732
- .bs-flyout-body {
5800
+ .bs-pop-body {
5733
5801
  flex: 1;
5734
- padding: 0 var(--bs-flyout-padding);
5735
5802
  overflow-y: auto;
5736
5803
  overscroll-behavior: contain;
5804
+ padding: var(--bs-pop-body-padding, var(--bs-space-6));
5737
5805
  }
5738
- /* no header exists */
5739
- .bs-flyout:where(:not(:has(.bs-flyout-header))) :where(.bs-flyout-body) {
5740
- padding-top: var(--bs-flyout-padding-top);
5806
+ .bs-pop-body:where([data-background="true"]) {
5807
+ background-color: var(--bs-bg-light);
5741
5808
  }
5742
- /* no footer exists */
5743
- .bs-flyout:where(:not(:has(.bs-flyout-footer))) :where(.bs-flyout-body) {
5744
- padding-bottom: var(--bs-flyout-padding);
5809
+ .bs-pop-header:where(:not([data-border="true"])) + :where(.bs-pop-body:not([data-background="true"])) {
5810
+ padding-top: 0;
5745
5811
  }
5746
- /* header border exists */
5747
- .bs-flyout:where(:has(.bs-flyout-header[data-border="true"])) :where(.bs-flyout-body) {
5748
- padding-top: var(--bs-flyout-padding);
5812
+ .bs-pop-footer {
5813
+ align-items: center;
5814
+ display: flex;
5815
+ flex-shrink: 0;
5816
+ gap: var(--bs-space-6);
5817
+ justify-content: flex-end;
5818
+ padding: var(--bs-pop-footer-padding, var(--bs-space-4) var(--bs-space-6));
5749
5819
  }
5750
- /* footer border exists */
5751
- .bs-flyout:where(:has(.bs-flyout-footer[data-border="true"])) :where(.bs-flyout-body) {
5752
- padding-bottom: var(--bs-flyout-padding);
5820
+ .bs-pop-footer:where([data-border="true"]) {
5821
+ border-top: 1px solid var(--bs-border-base);
5753
5822
  }
5754
- /* -- FOOTER -- */
5755
- .bs-flyout-footer {
5823
+ .bs-pop-title {
5824
+ align-items: center;
5756
5825
  display: flex;
5757
- justify-content: flex-end;
5826
+ font-size: var(--bs-text-md);
5827
+ font-weight: normal;
5828
+ gap: var(--bs-space-2);
5829
+ line-height: var(--bs-leading-regular);
5830
+ margin: 0 var(--bs-space-12) 0 0;
5831
+ }
5832
+ .bs-pop-subtitle {
5758
5833
  align-items: center;
5759
- gap: var(--bs-space-6);
5760
- flex-shrink: 0;
5761
- padding: var(--bs-space-6);
5834
+ color: var(--bs-ink-light);
5835
+ display: flex;
5836
+ font-size: var(--bs-text-sm);
5837
+ font-weight: normal;
5838
+ gap: var(--bs-space-2);
5839
+ line-height: var(--bs-leading-lg);
5840
+ margin: var(--bs-space-2) 0 0 0;
5762
5841
  }
5763
- /* with border */
5764
- .bs-flyout-footer:where([data-border="true"]) {
5765
- border-top: 1px solid var(--bs-border-base);
5842
+ /*
5843
+ HEADS-UP:
5844
+ Most BsFlyout base styles come from its BsPopover root element,
5845
+ so some of these styles are there to override those defaults.
5846
+ */
5847
+ .bs-flyout {
5848
+ --bs-pop-header-padding: var(--bs-space-6);
5849
+ --bs-pop-body-padding: var(--bs-space-6);
5850
+ --bs-pop-footer-padding: var(--bs-space-6);
5851
+ margin: 0;
5852
+ border-radius: 0;
5853
+ }
5854
+ /* targeting header too, so consumer could just do: <BsPopHeader>My Title</BsPopHeader> */
5855
+ .bs-flyout :where(.bs-pop-header, .bs-pop-title) {
5856
+ font-size: var(--bs-text-lg);
5766
5857
  }
5767
5858
  /* -- SIZING -- */
5768
5859
  .bs-flyout {
5769
5860
  --bs-popover-height: 100dvh;
5770
5861
  max-height: unset;
5862
+ max-width: 100dvw;
5771
5863
  }
5772
5864
  .bs-flyout:where([data-size="sm"]) {
5773
5865
  --bs-popover-width: 22.5rem; /* 360px */
@@ -5790,13 +5882,6 @@ a.bs-text-button {
5790
5882
  .bs-flyout-leave-active {
5791
5883
  transition-duration: var(--bs-popover-transition-duration);
5792
5884
  }
5793
- .bs-flyout-enter-active .bs-backdrop,
5794
- .bs-flyout-leave-active .bs-backdrop {
5795
- transition-property: opacity;
5796
- transition-duration: var(--bs-transition-leisurely);
5797
- transition-timing-function: var(--bs-transition-cubic);
5798
- }
5799
- .bs-flyout-enter-from .bs-backdrop,
5800
5885
  .bs-flyout-leave-to .bs-backdrop {
5801
5886
  opacity: 0;
5802
5887
  }
@@ -5821,142 +5906,50 @@ a.bs-text-button {
5821
5906
  ...so some of these styles override those defaults.
5822
5907
  */
5823
5908
  .bs-modal {
5824
- --bs-modal-sm-width: 21.25rem; /* 340px */
5825
- --bs-modal-md-width: 35rem; /* 560px */
5826
- --bs-modal-lg-width: 45.3125rem; /* 725px */
5827
- --bs-modal-padding: 1.5rem; /* 24px */
5828
- --bs-modal-lg-padding: 2rem; /* 32px */
5829
- display: flex;
5830
- flex-direction: column;
5831
- margin: 0;
5832
- padding: 0;
5909
+ --bs-pop-header-padding: var(--bs-modal-padding);
5910
+ --bs-pop-body-padding: var(--bs-modal-padding);
5911
+ --bs-pop-footer-padding: var(--bs-space-4) var(--bs-modal-padding);
5912
+ --bs-modal-padding: var(--bs-space-6);
5913
+ --bs-modal-lg-padding: var(--bs-space-8);
5833
5914
  background-color: var(--bs-bg-base-to-medium);
5834
5915
  box-shadow: var(--bs-shadow-contentHigh);
5835
- overflow: hidden;
5836
- }
5837
- /* -- CLOSE BUTTON -- */
5838
- /* calc() adjusts for default .5rem padding .bs-popover-close-button has, which exists for a nicer hit target */
5839
- .bs-modal :where(.bs-popover-close-button) {
5840
- top: calc(var(--bs-modal-padding) - .5rem);
5841
- right: calc(var(--bs-modal-padding) - .5rem);
5842
- }
5843
- .bs-modal:where([data-size="lg"]) :where(.bs-popover-close-button) {
5844
- top: calc(var(--bs-modal-lg-padding) - .5rem);
5845
- right: calc(var(--bs-modal-lg-padding) - .5rem);
5846
- }
5847
- /* -- HEADER -- */
5848
- .bs-modal-header {
5849
- flex-shrink: 0;
5850
- padding: var(--bs-modal-padding);
5851
- }
5852
- /* with border */
5853
- .bs-modal-header:where([data-border="true"]) {
5854
- border-bottom: 1px solid var(--bs-border-base);
5855
- }
5856
- /* large size, no border */
5857
- .bs-modal:where([data-size="lg"]) :where(.bs-modal-header) {
5858
- padding: var(--bs-modal-lg-padding);
5859
- }
5860
- /* large size, with border */
5861
- .bs-modal:where([data-size="lg"]) :where(.bs-modal-header[data-border="true"]) {
5862
- padding: var(--bs-modal-lg-padding);
5863
- padding-bottom: var(--bs-modal-padding);
5916
+ margin: 0;
5864
5917
  }
5865
- .bs-modal-title {
5866
- display: flex;
5867
- align-items: center;
5868
- gap: var(--bs-space-2);
5869
- margin: 0 var(--bs-space-6) 0 0;
5918
+ /* targeting header too, so consumer could just do: <BsPopHeader>My Title</BsPopHeader> */
5919
+ .bs-modal :where(.bs-pop-header, .bs-pop-title) {
5870
5920
  font-size: var(--bs-text-lg);
5871
- font-weight: normal;
5872
- line-height: var(--bs-leading-regular);
5873
5921
  }
5874
- .bs-modal-subtitle {
5875
- display: flex;
5876
- align-items: center;
5877
- gap: var(--bs-space-2);
5878
- margin: var(--bs-space-2) 0 0 0;
5879
- font-size: var(--bs-text-sm);
5880
- font-weight: normal;
5881
- line-height: var(--bs-leading-lg);
5922
+ .bs-modal:where([data-size="lg"]) {
5923
+ --bs-pop-x-btn-right: var(--bs-space-6);
5924
+ --bs-pop-header-padding: var(--bs-modal-lg-padding) var(--bs-modal-lg-padding) var(--bs-modal-padding);
5925
+ --bs-pop-body-padding: var(--bs-modal-padding) var(--bs-modal-lg-padding);
5926
+ --bs-pop-footer-padding: var(--bs-space-4) var(--bs-modal-lg-padding);
5882
5927
  }
5883
- /* -- BODY -- */
5884
- .bs-modal-body {
5885
- flex: 1;
5886
- overflow-y: auto;
5887
- padding: 0 var(--bs-modal-padding);
5888
- overscroll-behavior: contain;
5889
- }
5890
- /* large size */
5891
- .bs-modal:where([data-size="lg"]) :where(.bs-modal-body) {
5892
- padding: 0 var(--bs-modal-lg-padding);
5893
- }
5894
- /* no header exists */
5895
- .bs-modal:where(:not(:has(.bs-modal-header))) :where(.bs-modal-body) {
5896
- padding-top: var(--bs-modal-padding);
5897
- }
5898
- /* large size, no header exists */
5899
- .bs-modal:where([data-size="lg"]):where(:not(:has(.bs-modal-header))) :where(.bs-modal-body) {
5900
- padding-top: var(--bs-modal-lg-padding);
5901
- }
5902
- /* no footer exists */
5903
- .bs-modal:where(:not(:has(.bs-modal-footer))) :where(.bs-modal-body) {
5904
- padding-bottom: var(--bs-modal-padding);
5905
- }
5906
- /* large size, no footer exists */
5907
- .bs-modal:where([data-size="lg"]):where(:not(:has(.bs-modal-footer))) :where(.bs-modal-body) {
5908
- padding-bottom: var(--bs-modal-lg-padding);
5909
- }
5910
- /* header border exists */
5911
- .bs-modal:where(:has(.bs-modal-header[data-border="true"])) :where(.bs-modal-body) {
5912
- padding-top: var(--bs-modal-padding);
5913
- }
5914
- /* footer border exists */
5915
- .bs-modal:where(:has(.bs-modal-footer[data-border="true"])) :where(.bs-modal-body) {
5916
- padding-bottom: var(--bs-modal-padding);
5917
- }
5918
- /* -- FOOTER -- */
5919
- .bs-modal-footer {
5920
- display: flex;
5921
- justify-content: flex-end;
5922
- align-items: center;
5923
- gap: var(--bs-space-6);
5924
- flex-shrink: 0;
5925
- padding: var(--bs-space-6) var(--bs-modal-padding);
5926
- }
5927
- /* with border */
5928
- .bs-modal-footer:where([data-border="true"]) {
5929
- border-top: 1px solid var(--bs-border-base);
5930
- padding: var(--bs-space-4) var(--bs-modal-padding);
5931
- }
5932
- /* large size, no border */
5933
- .bs-modal:where([data-size="lg"]) :where(.bs-modal-footer) {
5934
- padding: var(--bs-modal-lg-padding);
5935
- }
5936
- /* large size, with border */
5937
- .bs-modal:where([data-size="lg"]) :where(.bs-modal-footer[data-border="true"]) {
5938
- padding: var(--bs-space-4) var(--bs-modal-lg-padding);
5928
+ .bs-modal:where([data-size="lg"]:has(.bs-pop-header)) {
5929
+ --bs-pop-x-btn-right: var(--bs-space-6);
5930
+ --bs-pop-x-btn-top: var(--bs-space-6);
5939
5931
  }
5940
5932
  /* -- SIZING -- */
5941
5933
  .bs-modal {
5942
- max-width: calc(100dvw - 3rem);
5934
+ --bs-popover-width: calc(100dvw - 3rem);
5943
5935
  max-height: calc(100dvh - 3rem);
5944
5936
  }
5945
5937
  @media (min-width: 752px) {
5946
5938
  .bs-modal {
5939
+ --bs-popover-width: fit-content;
5947
5940
  max-height: min(calc(100dvh - 3rem), 40.625rem);
5948
5941
  }
5949
5942
 
5950
5943
  .bs-modal:where([data-size="sm"]) {
5951
- --bs-popover-width: var(--bs-modal-sm-width);
5944
+ --bs-popover-width: 21.25rem; /* 340px */
5952
5945
  }
5953
5946
 
5954
5947
  .bs-modal:where([data-size="md"]) {
5955
- --bs-popover-width: var(--bs-modal-md-width);
5948
+ --bs-popover-width: 35rem; /* 560px */
5956
5949
  }
5957
5950
 
5958
5951
  .bs-modal:where([data-size="lg"]) {
5959
- --bs-popover-width: var(--bs-modal-lg-width);
5952
+ --bs-popover-width: 45.3125rem; /* 725px */
5960
5953
  }
5961
5954
  }
5962
5955
  /* -- TRANSITIONS -- */
@@ -5964,13 +5957,6 @@ a.bs-text-button {
5964
5957
  .bs-modal-leave-active {
5965
5958
  transition-duration: var(--bs-popover-transition-duration);
5966
5959
  }
5967
- .bs-modal-enter-active .bs-backdrop,
5968
- .bs-modal-leave-active .bs-backdrop {
5969
- transition-property: opacity;
5970
- transition-duration: var(--bs-transition-leisurely);
5971
- transition-timing-function: var(--bs-transition-cubic);
5972
- }
5973
- .bs-modal-enter-from .bs-backdrop,
5974
5960
  .bs-modal-leave-to .bs-backdrop {
5975
5961
  opacity: 0;
5976
5962
  }
@@ -6010,84 +5996,72 @@ a.bs-text-button {
6010
5996
  }
6011
5997
  /* Toast */
6012
5998
  .bs-toast {
5999
+ --bs-pop-header-padding: var(--bs-space-4);
6000
+ --bs-pop-body-padding: var(--bs-space-4);
6001
+ --bs-pop-footer-padding: var(--bs-space-2) var(--bs-space-4);
6013
6002
  --bs-popover-width: min(23rem, calc(100dvw - 3rem));
6014
6003
  --toast-transform: translate(0, calc(100% + 1.5rem));
6015
6004
  --toast-variant-color: var(--bs-primary-base);
6005
+ --toast-icon: var(--toast-icon-base);
6006
+ --toast-icon-color: var(--bs-ink-primary);
6007
+ --toast-icon-base: url('https://cdn.apps.wwt.com/static/wwt-blue-steel-icons/icon-circle-info.svg');
6008
+ --toast-icon-warning: url('https://cdn.apps.wwt.com/static/wwt-blue-steel-icons/icon-warning.svg');
6009
+ --toast-icon-positive: url('https://cdn.apps.wwt.com/static/wwt-blue-steel-icons/icon-thumbs-up-stroke.svg');
6016
6010
  background-color: var(--bs-bg-base-to-light);
6017
6011
  border-radius: 0;
6018
6012
  border-top: 4px solid var(--toast-variant-color);
6019
6013
  box-shadow: var(--bs-shadow-contentMedium);
6020
6014
  margin: 0;
6021
6015
  order: var(--toast-order, 0);
6022
- padding: 0;
6016
+ }
6017
+ /* Toast Footer Mobile - Buttons will be stacked */
6018
+ .bs-toast :where(.bs-pop-footer) {
6019
+ align-items: stretch;
6020
+ flex-direction: column-reverse;
6021
+ gap: var(--bs-space-2);
6023
6022
  }
6024
6023
  @media (min-width: 440px) {
6025
6024
  .bs-toast {
6026
6025
  --toast-transform: translate(calc(100% + 1.5rem), 0);
6027
6026
  }
6027
+
6028
+ .bs-toast :where(.bs-pop-footer) {
6029
+ align-items: center;
6030
+ flex-direction: row;
6031
+ gap: var(--bs-space-6);
6032
+ }
6028
6033
  }
6034
+ /* Toast Variants */
6029
6035
  .bs-toast:where([data-variant="warning"]) {
6036
+ --toast-icon: var(--toast-icon-warning);
6037
+ --toast-icon-color: var(--bs-ink-warning);
6030
6038
  --toast-variant-color: var(--bs-warning-base);
6031
-
6032
- .bs-toast-header-icon {
6033
- color: var(--bs-ink-warning);
6034
- }
6035
6039
  }
6036
6040
  .bs-toast:where([data-variant="positive"]) {
6041
+ --toast-icon: var(--toast-icon-positive);
6042
+ --toast-icon-color: var(--bs-ink-positive);
6037
6043
  --toast-variant-color: var(--bs-positive-base);
6038
-
6039
- .bs-toast-header-icon {
6040
- color: var(--bs-ink-positive);
6041
- }
6042
6044
  }
6043
6045
  .bs-toast:where([data-variant="negative"]) {
6044
- --toast-variant-color: var(--bs-negative-base);
6045
-
6046
- .bs-toast-header-icon {
6047
- color: var(--bs-ink-negative);
6048
- }
6046
+ --toast-icon: var(--toast-icon-warning);
6047
+ --toast-icon-color: var(--bs-negative-dark);
6048
+ --toast-variant-color: var(--bs-negative-dark);
6049
6049
  }
6050
- /* Toast Header */
6051
- .bs-toast :where(.bs-toast-header) {
6052
- align-items: center;
6053
- color: var(--bs-ink-base);
6054
- display: flex;
6055
- gap: 0.5rem;
6056
- padding: 1rem;
6057
- }
6058
- .bs-toast :where(.bs-toast-header .bs-toast-header-icon) {
6059
- color: var(--bs-ink-primary);
6060
- }
6061
- .bs-toast :where(.bs-toast-header .bs-toast-header-text) {
6062
- font-size: var(--bs-text-md);
6063
- font-weight: var(--bs-font-normal);
6064
- line-height: var(--bs-leading-lg);
6050
+ /* Toast Header - auto-add the icon */
6051
+ .bs-toast :where(.bs-pop-header:not(:has(.bs-pop-title, .bs-pop-subtitle)))::before,
6052
+ .bs-toast :where(.bs-pop-header .bs-pop-title)::before {
6053
+ display: block;
6054
+ content: '';
6055
+ background-color: var(--toast-icon-color);
6056
+ -webkit-mask: var(--toast-icon) center/contain no-repeat;
6057
+ mask: var(--toast-icon) center/contain no-repeat;
6058
+ flex-shrink: 0;
6059
+ height: var(--bs-space-4);
6060
+ width: var(--bs-space-4);
6065
6061
  }
6066
6062
  /* Toast Body */
6067
- .bs-toast :where(.bs-toast-body) {
6068
- border-bottom: 1px solid var(--bs-border-base);
6063
+ .bs-toast :where(.bs-pop-body) {
6069
6064
  color: var(--bs-ink-light);
6070
- padding-bottom: 1rem;
6071
- padding-left: 1rem;
6072
- padding-right: 1rem;
6073
- }
6074
- .bs-toast :where(:not(:has(.bs-toast-header)) .bs-toast-body) {
6075
- padding-top: 1rem;
6076
- }
6077
- /* Toast Footer */
6078
- .bs-toast :where(.bs-toast-footer) {
6079
- /* Mobile - Buttons will be stacked */
6080
- display: flex;
6081
- flex-direction: row;
6082
- gap: 1rem;
6083
- justify-content: flex-end;
6084
- padding-bottom: 0.5rem;
6085
- padding-left: 1rem;
6086
- padding-right: 1rem;
6087
- padding-top: 0.5rem;
6088
- }
6089
- .bs-toast :where(.bs-toast-footer):where([data-stacked]:not([data-stacked="false"])) {
6090
- flex-direction: column-reverse;
6091
6065
  }
6092
6066
  /* Vue Transition Styles */
6093
6067
  .bs-toast-enter-active,
@@ -6110,52 +6084,185 @@ a.bs-text-button {
6110
6084
  BsDropdown inherits base styles from its BsPopover root element
6111
6085
  ...so some of these styles override those defaults.
6112
6086
  */
6087
+ /* -- DROPDOWN -- */
6088
+ /* Note: Assumes mobile sheet by default */
6089
+ /* Note: Some heights for reference */
6090
+ /* filter (desktop): 4rem (64px) */
6091
+ /* filter (mobile sheet): 5.5rem (88px) */
6092
+ /* mobile header (heading and description): 6rem (96px) */
6093
+ /* mobile header (just heading text): 4.25rem (68px) */
6094
+ /* mobile sheet footer: 3rem (48px) */
6113
6095
  .bs-dropdown {
6096
+ --bs-popover-width: 100dvw;
6114
6097
  background-color: var(--bs-bg-base-to-medium);
6115
- max-height: 20rem;
6098
+ height: 60dvh;
6099
+ margin: 0;
6100
+ max-width: 100dvw;
6116
6101
  padding: 0;
6117
6102
  }
6118
- /* filter could be "display: none" if mounted for it's logic, yet hidden due to using an outside input/model */
6119
- .bs-dropdown:where(:has(.bs-dropdown-filter:not([style*="display: none"]))) {
6120
- padding-top: 0;
6103
+ /* Don't use mobile sheet at any breakpoint */
6104
+ .bs-dropdown:where(:not([data-mobile-sheet])) {
6105
+ --bs-popover-width: 20rem;
6106
+ height: unset;
6107
+ max-height: 20rem; /* 320px */
6108
+ max-width: calc(100dvw - 3rem);
6121
6109
  }
6122
- .bs-dropdown :where(hr) {
6123
- margin: var(--bs-space-3) 0;
6110
+ @media (min-width: 752px) {
6111
+ /* Remove bottom drawer at tablet breakpoint */
6112
+ .bs-dropdown:where([data-mobile-sheet="mobile"]) {
6113
+ --bs-popover-width: 20rem;
6114
+ height: unset;
6115
+ max-height: 20rem; /* 320px */
6116
+ max-width: calc(100dvw - 3rem);
6117
+ }
6124
6118
  }
6125
- .bs-dropdown:where(:focus-visible) {
6126
- outline: none;
6119
+ @media (min-width: 1166px) {
6120
+ /* Remove bottom drawer at desktop breakpoint */
6121
+ .bs-dropdown:where([data-mobile-sheet="tablet"]) {
6122
+ --bs-popover-width: 20rem;
6123
+ height: unset;
6124
+ max-height: 20rem; /* 320px */
6125
+ max-width: calc(100dvw - 3rem);
6126
+ }
6127
+ }
6128
+ /* Here if a consumer adds their own hr between BsOptions. Just don't override the internal option group separator. */
6129
+ .bs-dropdown :where(hr:not(.bs-option-group-multiple-hr)) {
6130
+ margin: var(--bs-space-3) 0;
6127
6131
  }
6132
+ /* -- LIST -- */
6128
6133
  .bs-dropdown-list {
6129
- max-height: 20rem;
6134
+ display: flex;
6135
+ flex-direction: column;
6136
+ }
6137
+ /* Only add padding, etc when there is at least one child visible */
6138
+ .bs-dropdown-list:where(:has(.bs-option[data-visible="true"], .bs-option-group[data-visible="true"])) {
6139
+ flex: 1;
6130
6140
  overflow-y: auto;
6131
6141
  overscroll-behavior: contain;
6132
6142
  padding: var(--bs-space-3) 0;
6133
6143
  }
6144
+ .bs-dropdown-list:where(:has( .bs-option-group)) {
6145
+ padding-top: 0;
6146
+ }
6134
6147
  .bs-dropdown-list:where(:focus-visible) {
6135
6148
  outline: none;
6136
6149
  }
6137
6150
  .bs-dropdown:where(:has(.bs-dropdown-filter)) :where(.bs-dropdown-list) {
6138
6151
  padding-top: 0;
6139
- /* filter input is 4rem, so 20rem (default) - 4rem = 16rem */
6140
- max-height: 16rem;
6152
+ }
6153
+ /* Move selected options to the top */
6154
+ .bs-dropdown-list:where([aria-multiselectable="true"]) :where(.bs-option:where([data-selected-to-top="true"])) {
6155
+ order: -1;
6156
+ }
6157
+ /* Separator for multiple selected options */
6158
+ .bs-dropdown-multiple-hr {
6159
+ margin: 0 var(--bs-space-3) var(--bs-space-3);
6160
+ border-bottom: 0.0625rem solid var(--bs-accent-7-light);
6161
+ }
6162
+ /* -- MOBILE HEADER -- */
6163
+ /* Mobile sheet header */
6164
+ .bs-dropdown :where(.bs-dropdown-mobile-header) {
6165
+ border-bottom: 1px solid var(--bs-border-base);
6166
+ padding: var(--bs-space-6);
6167
+ }
6168
+ /* Hide header if not using mobile sheet */
6169
+ .bs-dropdown:where(:not([data-mobile-sheet])) :where(.bs-dropdown-mobile-header) {
6170
+ display: none;
6171
+ }
6172
+ /* Hide header at tablet breakpoint if only using mobile sheet */
6173
+ @media (min-width: 752px) {
6174
+ .bs-dropdown:where([data-mobile-sheet="mobile"]) :where(.bs-dropdown-mobile-header) {
6175
+ display: none;
6176
+ }
6177
+ }
6178
+ /* Hide header at desktop breakpoint if only using tablet sheet */
6179
+ @media (min-width: 1166px) {
6180
+ .bs-dropdown:where([data-mobile-sheet="tablet"]) :where(.bs-dropdown-mobile-header) {
6181
+ display: none;
6182
+ }
6183
+ }
6184
+ .bs-dropdown :where(.bs-dropdown-mobile-heading) {
6185
+ font-size: var(--bs-text-lg);
6186
+ line-height: var(--bs-leading-none);
6187
+ }
6188
+ .bs-dropdown :where(.bs-dropdown-mobile-description) {
6189
+ color: var(--bs-ink-light);
6190
+ font-size: var(--bs-text-base);
6191
+ padding-top: var(--bs-space-1);
6192
+ }
6193
+ /* -- MOBILE FOOTER -- */
6194
+ /* Mobile sheet footer, show by default */
6195
+ .bs-dropdown-mobile-footer {
6196
+ display: flex;
6197
+ }
6198
+ /* Hide footer if not using mobile sheet */
6199
+ .bs-dropdown:where(:not([data-mobile-sheet])) :where(.bs-dropdown-mobile-footer) {
6200
+ display: none;
6201
+ }
6202
+ @media (min-width: 752px) {
6203
+ /* Hide footer at tablet breakpoint if only using mobile sheet */
6204
+ .bs-dropdown:where([data-mobile-sheet="mobile"]) :where(.bs-dropdown-mobile-footer) {
6205
+ display: none;
6206
+ }
6207
+ }
6208
+ @media (min-width: 1166px) {
6209
+ /* Hide footer at desktop breakpoint if only using tablet sheet */
6210
+ .bs-dropdown:where([data-mobile-sheet="tablet"]) :where(.bs-dropdown-mobile-footer) {
6211
+ display: none;
6212
+ }
6213
+ }
6214
+ .bs-dropdown-mobile-footer :where(.bs-button) {
6215
+ margin: var(--bs-space-2) var(--bs-space-6);
6216
+ width: 100%;
6217
+ }
6218
+ /* -- CLOSE BUTTON -- */
6219
+ /* Override popover button positioning for mobile drawer */
6220
+ .bs-dropdown :where(.bs-popover-close-button) {
6221
+ right: var(--bs-space-4);
6222
+ top: var(--bs-space-4);
6141
6223
  }
6142
6224
  /* -- FILTER -- */
6143
6225
  .bs-dropdown-filter {
6144
6226
  position: sticky;
6145
6227
  top: 0;
6146
- padding: var(--bs-space-3);
6147
- /* fade to transparent in bottom padding area, so scrolling menu items under filter looks better */
6148
- background-image: linear-gradient(
6149
- var(--bs-bg-base-to-medium) calc(100% - var(--bs-space-3)),
6150
- transparent 100%
6151
- );
6228
+ padding: var(--bs-space-6) var(--bs-space-3);
6152
6229
  z-index: 1;
6153
6230
  }
6231
+ /* No mobile sheet, so always use desktop padding */
6232
+ .bs-dropdown:where(:not([data-mobile-sheet])) :where(.bs-dropdown-filter) {
6233
+ padding: var(--bs-space-3);
6234
+ }
6235
+ /* Mobile sheet, so use desktop padding at tablet breakpoint */
6236
+ @media (min-width: 752px) {
6237
+ .bs-dropdown:where([data-mobile-sheet="mobile"]) :where(.bs-dropdown-filter) {
6238
+ padding: var(--bs-space-3);
6239
+ }
6240
+ }
6241
+ /* Tablet sheet, so use desktop padding at desktop breakpoint */
6242
+ @media (min-width: 1166px) {
6243
+ .bs-dropdown:where([data-mobile-sheet="tablet"]) :where(.bs-dropdown-filter) {
6244
+ padding: var(--bs-space-3);
6245
+ }
6246
+ }
6247
+ .bs-dropdown-filter:where([data-hide-input="true"]) {
6248
+ padding-top: 0;
6249
+ }
6154
6250
  .bs-dropdown-filter-icon {
6155
6251
  margin-left: var(--bs-space-3);
6156
6252
  }
6157
6253
  .bs-dropdown-filter-input {
6254
+ overflow: hidden;
6158
6255
  padding-inline: var(--bs-space-2);
6256
+ text-overflow: ellipsis;
6257
+ white-space: nowrap;
6258
+ }
6259
+ .bs-dropdown-filter-hint {
6260
+ color: var(--bs-ink-light);
6261
+ font-size: var(--bs-text-xs);
6262
+ padding-top: var(--bs-space-2);
6263
+ }
6264
+ .bs-dropdown-filter:where([data-hide-input="true"]) :where(.bs-dropdown-filter-hint) {
6265
+ padding-top: var(--bs-space-4);
6159
6266
  }
6160
6267
  /* override form-text-fields.css style that hides placeholder when inputs are focused */
6161
6268
  .bs-dropdown-filter-input::-moz-placeholder {
@@ -6179,14 +6286,19 @@ a.bs-text-button {
6179
6286
  box-shadow: 0px 0px 0px 1px inset var(--bs-primary-base);
6180
6287
  }
6181
6288
  /* -- SIZING -- */
6182
- .bs-dropdown:where([data-size="sm"]) {
6183
- --bs-popover-width: 10rem; /* 160px */
6184
- }
6185
- .bs-dropdown:where([data-size="md"]) {
6186
- --bs-popover-width: 20rem; /* 320px */
6187
- }
6188
- .bs-dropdown:where([data-size="lg"]) {
6189
- --bs-popover-width: 28rem; /* 448px */
6289
+ /* Only applies to non-mobile */
6290
+ @media (min-width: 1166px) {
6291
+ .bs-dropdown:where([data-size="sm"]) {
6292
+ --bs-popover-width: 10rem; /* 160px */
6293
+ }
6294
+
6295
+ .bs-dropdown:where([data-size="md"]) {
6296
+ --bs-popover-width: 20rem; /* 320px */
6297
+ }
6298
+
6299
+ .bs-dropdown:where([data-size="lg"]) {
6300
+ --bs-popover-width: 28rem; /* 448px */
6301
+ }
6190
6302
  }
6191
6303
  /*
6192
6304
  HEADS-UP:
@@ -6194,16 +6306,14 @@ a.bs-text-button {
6194
6306
  so some of these styles are there to override those defaults.
6195
6307
  */
6196
6308
  .bs-tooltip {
6309
+ display: block;
6197
6310
  padding: var(--bs-space-4);
6198
6311
  font-size: var(--bs-text-sm);
6199
- color: var(--bs-ink-violet);
6312
+ color: var(--bs-ink-accent-2);
6200
6313
  text-align: center;
6201
6314
  line-height: var(--bs-leading-lg);
6202
6315
  background-color: var(--bs-bg-base-to-medium);
6203
6316
  }
6204
- .dark :where(.bs-tooltip) {
6205
- color: var(--bs-ink-base);
6206
- }
6207
6317
  /* Prevent tiny empty tooltip from showing if empty string is rendered into slot. */
6208
6318
  .bs-tooltip:where(:empty) {
6209
6319
  display: none;