@wwtdev/bsds-css 3.0.0-rc.46 → 3.0.0-rc.47

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.
@@ -765,129 +765,131 @@ 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);
845
+ border-top: 4px solid var(--bs-positive-base);
844
846
  }
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
+ .bs-toast-deprecated:where([data-variant^='positive']) :where(.bs-toast-header-deprecated .bs-toast-header-deprecated-icon) {
848
+ color: var(--bs-ink-positive);
847
849
  }
848
850
  :where(.dark) .bs-toast-deprecated:where([data-variant^='positive']) {
849
- border-top: 4px solid var(--bs-positive-light);
851
+ border-top: 4px solid var(--bs-positive-light);
850
852
  }
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);
853
+ :where(.dark) .bs-toast-deprecated:where([data-variant^='positive']) :where(.bs-toast-header-deprecated .bs-toast-header-deprecated-icon) {
854
+ color: var(--bs-positive-light);
853
855
  }
854
856
  /* Negative Toast Styles */
855
857
  .bs-toast-deprecated:where([data-variant^='negative']) {
856
- border-top: 4px solid var(--bs-negative-dark);
858
+ border-top: 4px solid var(--bs-negative-dark);
857
859
  }
858
- .bs-toast-deprecated:where([data-variant^='negative']) :where(.bs-toast-header-deprecated .bs-toast-header-icon-deprecated) {
859
- color: var(--bs-negative-dark);
860
+ .bs-toast-deprecated:where([data-variant^='negative']) :where(.bs-toast-header-deprecated .bs-toast-header-deprecated-icon) {
861
+ color: var(--bs-negative-dark);
860
862
  }
861
863
  @media (min-width: 440px) {
862
- .bs-toast-deprecated {
863
- --toast-transform: translate(calc(100% + 1.5rem), 0);
864
+ .bs-toast-deprecated {
865
+ --toast-transform: translate(calc(100% + 1.5rem), 0);
864
866
 
865
- left: auto;
866
- margin-left: 0;
867
- margin-right: 0;
868
- opacity: 0;
869
- right: 1.5rem;
870
- }
867
+ left: auto;
868
+ margin-left: 0;
869
+ margin-right: 0;
870
+ opacity: 0;
871
+ right: 1.5rem;
872
+ }
871
873
 
872
- .bs-toast-deprecated:where([data-shown]:not([data-shown="false"])) {
873
- opacity: 1;
874
- transform: translate(0, 0);
875
- }
874
+ .bs-toast-deprecated:where([data-shown]:not([data-shown="false"])) {
875
+ opacity: 1;
876
+ transform: translate(0, 0);
877
+ }
876
878
 
877
- .bs-toast-actions-deprecated:where([data-stacked]:not([data-stacked="false"])) {
878
- flex-direction: row;
879
- }
879
+ .bs-toast-actions-deprecated:where([data-stacked]:not([data-stacked="false"])) {
880
+ flex-direction: row;
881
+ }
880
882
  }
881
883
  /* 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);
884
+ .bs-toast-deprecated:where(.bs-toast-deprecated-enter-from),
885
+ .bs-toast-deprecated:where(.bs-toast-deprecated-leave-to) {
886
+ opacity: 0;
887
+ transform: var(--toast-transform);
886
888
  }
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);
889
+ .bs-toast-deprecated:where(.bs-toast-deprecated-enter-to),
890
+ .bs-toast-deprecated:where(.bs-toast-deprecated-leave-from) {
891
+ opacity: 1;
892
+ transform: translate(0, 0);
891
893
  }
892
894
  /* Container for holding all toasts that will be visible */
893
895
  .bs-toaster-deprecated {
@@ -5541,8 +5543,13 @@ a.bs-text-button {
5541
5543
  transition: margin-inline-start 350ms cubic-bezier(0.4, 0, 0.2, 1);
5542
5544
  }
5543
5545
  /*
5544
- POP SYSTEM COMPONENTS
5545
- Components that are built on top of BsPopover. The popover.css must come first.
5546
+ POP SYSTEM COMPONENTS (the order matters)
5547
+ - Components that are built on top of BsPopover
5548
+ - The popover.css must come first
5549
+ - In the future, could refactor this file to use @layer instead
5550
+ */
5551
+ /*
5552
+ HEADS-UP: BsPopover and its styles are the base for all popover-based components and their styles
5546
5553
  */
5547
5554
  #bs-popover-teleport-target {
5548
5555
  z-index: var(--bs-popover-z-index);
@@ -5564,31 +5571,22 @@ a.bs-text-button {
5564
5571
  position: absolute;
5565
5572
  top: 0;
5566
5573
  left: 0;
5574
+ display: flex;
5575
+ flex-direction: column;
5567
5576
  width: var(--bs-popover-width, -moz-fit-content);
5568
5577
  width: var(--bs-popover-width, fit-content);
5569
5578
  height: var(--bs-popover-height, -moz-fit-content);
5570
5579
  height: var(--bs-popover-height, fit-content);
5571
5580
  max-width: calc(100dvw - 3rem);
5572
5581
  max-height: calc(100dvh - 3rem);
5573
- padding: var(--bs-space-6);
5574
5582
  background-color: var(--bs-bg-base-to-light);
5575
5583
  border-radius: var(--bs-space-1);
5576
5584
  box-shadow: var(--bs-shadow-contentLowCenter);
5577
5585
  pointer-events: auto; /* due to `pointer-events: none` on bs-popover-wrap */
5586
+ overflow: hidden;
5578
5587
  }
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);
5588
+ .bs-popover:where(:not(:has(.bs-pop-header, .bs-pop-body, .bs-pop-footer))) {
5589
+ padding: var(--bs-space-6);
5592
5590
  }
5593
5591
  /* -- SIZING -- */
5594
5592
  .bs-popover:where([data-size="sm"]) {
@@ -5679,95 +5677,105 @@ a.bs-text-button {
5679
5677
  transform: scale(.95);
5680
5678
  }
5681
5679
  /*
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.
5680
+ Used in BsPopover, but exists as its own thing in case
5681
+ consumers need/want to use it for custom layout cases.
5685
5682
  */
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;
5683
+ .bs-pop-x-button {
5684
+ background-color: inherit;
5685
+ background: transparent;
5686
+ border-color: transparent;
5687
+ color: inherit;
5688
+ cursor: pointer;
5689
+ font-family: inherit;
5690
+ font-size: var(--bs-text-base);
5691
+ padding: var(--bs-space-3); /* to make a bit nicer hit target */
5692
+ position: absolute;
5693
+ right: var(--bs-pop-x-btn-right, var(--bs-space-1));
5694
+ text-decoration: none;
5695
+ top: var(--bs-pop-x-btn-top, var(--bs-space-1));
5694
5696
  }
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);
5697
+ .bs-popover:where(:has(.bs-pop-header)) {
5698
+ --bs-pop-x-btn-right: var(--bs-space-4);
5699
+ --bs-pop-x-btn-top: var(--bs-space-4);
5700
5700
  }
5701
- /* -- HEADER -- */
5702
- .bs-flyout-header {
5701
+ .bs-pop-header {
5702
+ color: var(--bs-ink-base);
5703
+ font-size: var(--bs-text-md);
5703
5704
  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;
5705
+ padding: var(--bs-pop-header-padding, var(--bs-space-6));
5717
5706
  line-height: var(--bs-leading-regular);
5718
5707
  }
5719
- .bs-flyout-subtitle {
5708
+ .bs-pop-header:where(:not(:has(.bs-pop-title, .bs-pop-subtitle))) {
5720
5709
  display: flex;
5721
5710
  align-items: center;
5722
5711
  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
5712
  }
5728
- .bs-flyout-header:where([data-border="true"]) {
5713
+ .bs-pop-header:where([data-border="true"]) {
5729
5714
  border-bottom: 1px solid var(--bs-border-base);
5730
5715
  }
5731
- /* -- BODY -- */
5732
- .bs-flyout-body {
5716
+ .bs-pop-body {
5733
5717
  flex: 1;
5734
- padding: 0 var(--bs-flyout-padding);
5735
5718
  overflow-y: auto;
5736
5719
  overscroll-behavior: contain;
5720
+ padding: var(--bs-pop-body-padding, var(--bs-space-6));
5737
5721
  }
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);
5722
+ .bs-pop-body:where([data-background="true"]) {
5723
+ background-color: var(--bs-bg-light);
5741
5724
  }
5742
- /* no footer exists */
5743
- .bs-flyout:where(:not(:has(.bs-flyout-footer))) :where(.bs-flyout-body) {
5744
- padding-bottom: var(--bs-flyout-padding);
5725
+ .bs-pop-header:where(:not([data-border="true"])) + :where(.bs-pop-body:not([data-background="true"])) {
5726
+ padding-top: 0;
5745
5727
  }
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);
5728
+ .bs-pop-footer {
5729
+ align-items: center;
5730
+ display: flex;
5731
+ flex-shrink: 0;
5732
+ gap: var(--bs-space-6);
5733
+ justify-content: flex-end;
5734
+ padding: var(--bs-pop-footer-padding, var(--bs-space-4) var(--bs-space-6));
5749
5735
  }
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);
5736
+ .bs-pop-footer:where([data-border="true"]) {
5737
+ border-top: 1px solid var(--bs-border-base);
5753
5738
  }
5754
- /* -- FOOTER -- */
5755
- .bs-flyout-footer {
5739
+ .bs-pop-title {
5740
+ align-items: center;
5756
5741
  display: flex;
5757
- justify-content: flex-end;
5742
+ font-size: var(--bs-text-md);
5743
+ font-weight: normal;
5744
+ gap: var(--bs-space-2);
5745
+ line-height: var(--bs-leading-regular);
5746
+ margin: 0 var(--bs-space-12) 0 0;
5747
+ }
5748
+ .bs-pop-subtitle {
5758
5749
  align-items: center;
5759
- gap: var(--bs-space-6);
5760
- flex-shrink: 0;
5761
- padding: var(--bs-space-6);
5750
+ color: var(--bs-ink-light);
5751
+ display: flex;
5752
+ font-size: var(--bs-text-sm);
5753
+ font-weight: normal;
5754
+ gap: var(--bs-space-2);
5755
+ line-height: var(--bs-leading-lg);
5756
+ margin: var(--bs-space-2) 0 0 0;
5762
5757
  }
5763
- /* with border */
5764
- .bs-flyout-footer:where([data-border="true"]) {
5765
- border-top: 1px solid var(--bs-border-base);
5758
+ /*
5759
+ HEADS-UP:
5760
+ Most BsFlyout base styles come from its BsPopover root element,
5761
+ so some of these styles are there to override those defaults.
5762
+ */
5763
+ .bs-flyout {
5764
+ --bs-pop-header-padding: var(--bs-space-6);
5765
+ --bs-pop-body-padding: var(--bs-space-6);
5766
+ --bs-pop-footer-padding: var(--bs-space-6);
5767
+ margin: 0;
5768
+ border-radius: 0;
5769
+ }
5770
+ /* targeting header too, so consumer could just do: <BsPopHeader>My Title</BsPopHeader> */
5771
+ .bs-flyout :where(.bs-pop-header, .bs-pop-title) {
5772
+ font-size: var(--bs-text-lg);
5766
5773
  }
5767
5774
  /* -- SIZING -- */
5768
5775
  .bs-flyout {
5769
5776
  --bs-popover-height: 100dvh;
5770
5777
  max-height: unset;
5778
+ max-width: 100dvw;
5771
5779
  }
5772
5780
  .bs-flyout:where([data-size="sm"]) {
5773
5781
  --bs-popover-width: 22.5rem; /* 360px */
@@ -5821,142 +5829,50 @@ a.bs-text-button {
5821
5829
  ...so some of these styles override those defaults.
5822
5830
  */
5823
5831
  .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;
5832
+ --bs-pop-header-padding: var(--bs-modal-padding);
5833
+ --bs-pop-body-padding: var(--bs-modal-padding);
5834
+ --bs-pop-footer-padding: var(--bs-space-4) var(--bs-modal-padding);
5835
+ --bs-modal-padding: var(--bs-space-6);
5836
+ --bs-modal-lg-padding: var(--bs-space-8);
5833
5837
  background-color: var(--bs-bg-base-to-medium);
5834
5838
  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);
5839
+ margin: 0;
5864
5840
  }
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;
5841
+ /* targeting header too, so consumer could just do: <BsPopHeader>My Title</BsPopHeader> */
5842
+ .bs-modal :where(.bs-pop-header, .bs-pop-title) {
5870
5843
  font-size: var(--bs-text-lg);
5871
- font-weight: normal;
5872
- line-height: var(--bs-leading-regular);
5873
- }
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);
5882
- }
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
5844
  }
5932
- /* large size, no border */
5933
- .bs-modal:where([data-size="lg"]) :where(.bs-modal-footer) {
5934
- padding: var(--bs-modal-lg-padding);
5845
+ .bs-modal:where([data-size="lg"]) {
5846
+ --bs-pop-x-btn-right: var(--bs-space-6);
5847
+ --bs-pop-header-padding: var(--bs-modal-lg-padding) var(--bs-modal-lg-padding) var(--bs-modal-padding);
5848
+ --bs-pop-body-padding: var(--bs-modal-padding) var(--bs-modal-lg-padding);
5849
+ --bs-pop-footer-padding: var(--bs-space-4) var(--bs-modal-lg-padding);
5935
5850
  }
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);
5851
+ .bs-modal:where([data-size="lg"]:has(.bs-pop-header)) {
5852
+ --bs-pop-x-btn-right: var(--bs-space-6);
5853
+ --bs-pop-x-btn-top: var(--bs-space-6);
5939
5854
  }
5940
5855
  /* -- SIZING -- */
5941
5856
  .bs-modal {
5942
- max-width: calc(100dvw - 3rem);
5857
+ --bs-popover-width: calc(100dvw - 3rem);
5943
5858
  max-height: calc(100dvh - 3rem);
5944
5859
  }
5945
5860
  @media (min-width: 752px) {
5946
5861
  .bs-modal {
5862
+ --bs-popover-width: fit-content;
5947
5863
  max-height: min(calc(100dvh - 3rem), 40.625rem);
5948
5864
  }
5949
5865
 
5950
5866
  .bs-modal:where([data-size="sm"]) {
5951
- --bs-popover-width: var(--bs-modal-sm-width);
5867
+ --bs-popover-width: 21.25rem; /* 340px */
5952
5868
  }
5953
5869
 
5954
5870
  .bs-modal:where([data-size="md"]) {
5955
- --bs-popover-width: var(--bs-modal-md-width);
5871
+ --bs-popover-width: 35rem; /* 560px */
5956
5872
  }
5957
5873
 
5958
5874
  .bs-modal:where([data-size="lg"]) {
5959
- --bs-popover-width: var(--bs-modal-lg-width);
5875
+ --bs-popover-width: 45.3125rem; /* 725px */
5960
5876
  }
5961
5877
  }
5962
5878
  /* -- TRANSITIONS -- */
@@ -6010,84 +5926,76 @@ a.bs-text-button {
6010
5926
  }
6011
5927
  /* Toast */
6012
5928
  .bs-toast {
5929
+ --bs-pop-header-padding: var(--bs-space-4);
5930
+ --bs-pop-body-padding: var(--bs-space-4);
5931
+ --bs-pop-footer-padding: var(--bs-space-2) var(--bs-space-4);
6013
5932
  --bs-popover-width: min(23rem, calc(100dvw - 3rem));
6014
5933
  --toast-transform: translate(0, calc(100% + 1.5rem));
6015
5934
  --toast-variant-color: var(--bs-primary-base);
5935
+ --toast-icon: var(--toast-icon-base);
5936
+ --toast-icon-color: var(--bs-ink-primary);
5937
+ --toast-icon-base: url('https://cdn.apps.wwt.com/static/wwt-blue-steel-icons/icon-circle-info.svg');
5938
+ --toast-icon-warning: url('https://cdn.apps.wwt.com/static/wwt-blue-steel-icons/icon-warning.svg');
5939
+ --toast-icon-positive: url('https://cdn.apps.wwt.com/static/wwt-blue-steel-icons/icon-thumbs-up-stroke.svg');
6016
5940
  background-color: var(--bs-bg-base-to-light);
6017
5941
  border-radius: 0;
6018
5942
  border-top: 4px solid var(--toast-variant-color);
6019
5943
  box-shadow: var(--bs-shadow-contentMedium);
6020
5944
  margin: 0;
6021
5945
  order: var(--toast-order, 0);
6022
- padding: 0;
5946
+ }
5947
+ /* Toast Footer Mobile - Buttons will be stacked */
5948
+ .bs-toast :where(.bs-pop-footer) {
5949
+ align-items: stretch;
5950
+ flex-direction: column-reverse;
5951
+ gap: var(--bs-space-2);
6023
5952
  }
6024
5953
  @media (min-width: 440px) {
6025
5954
  .bs-toast {
6026
5955
  --toast-transform: translate(calc(100% + 1.5rem), 0);
6027
5956
  }
5957
+
5958
+ .bs-toast :where(.bs-pop-footer) {
5959
+ align-items: center;
5960
+ flex-direction: row;
5961
+ gap: var(--bs-space-6);
5962
+ }
6028
5963
  }
5964
+ /* Toast Variants */
6029
5965
  .bs-toast:where([data-variant="warning"]) {
5966
+ --toast-icon: var(--toast-icon-warning);
5967
+ --toast-icon-color: var(--bs-ink-warning);
6030
5968
  --toast-variant-color: var(--bs-warning-base);
6031
-
6032
- .bs-toast-header-icon {
6033
- color: var(--bs-ink-warning);
6034
- }
6035
5969
  }
6036
5970
  .bs-toast:where([data-variant="positive"]) {
5971
+ --toast-icon: var(--toast-icon-positive);
5972
+ --toast-icon-color: var(--bs-ink-positive);
6037
5973
  --toast-variant-color: var(--bs-positive-base);
6038
-
6039
- .bs-toast-header-icon {
6040
- color: var(--bs-ink-positive);
6041
- }
6042
5974
  }
6043
- .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
- }
5975
+ .dark :where(.bs-toast[data-variant="positive"]) {
5976
+ --toast-icon-color: var(--bs-positive-light);
5977
+ --toast-variant-color: var(--bs-positive-light);
6049
5978
  }
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);
5979
+ .bs-toast:where([data-variant="negative"]) {
5980
+ --toast-icon: var(--toast-icon-warning);
5981
+ --toast-icon-color: var(--bs-negative-dark);
5982
+ --toast-variant-color: var(--bs-negative-dark);
6060
5983
  }
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);
5984
+ /* Toast Header - auto-add the icon */
5985
+ .bs-toast :where(.bs-pop-header:not(:has(.bs-pop-title, .bs-pop-subtitle)))::before,
5986
+ .bs-toast :where(.bs-pop-header .bs-pop-title)::before {
5987
+ display: block;
5988
+ content: '';
5989
+ background-color: var(--toast-icon-color);
5990
+ -webkit-mask: var(--toast-icon) center/contain no-repeat;
5991
+ mask: var(--toast-icon) center/contain no-repeat;
5992
+ flex-shrink: 0;
5993
+ height: var(--bs-space-4);
5994
+ width: var(--bs-space-4);
6065
5995
  }
6066
5996
  /* Toast Body */
6067
- .bs-toast :where(.bs-toast-body) {
6068
- border-bottom: 1px solid var(--bs-border-base);
5997
+ .bs-toast :where(.bs-pop-body) {
6069
5998
  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
5999
  }
6092
6000
  /* Vue Transition Styles */
6093
6001
  .bs-toast-enter-active,