@wwtdev/bsds-css 3.0.14 → 3.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/wwt-bsds.css CHANGED
@@ -6641,7 +6641,7 @@ a.bs-text-button {
6641
6641
  @media (min-width: 1166px) {
6642
6642
  .bs-vertical-nav {
6643
6643
  opacity: 1;
6644
- padding: 1rem;
6644
+ padding: 1rem 0.5rem;
6645
6645
  right: auto;
6646
6646
  visibility: visible;
6647
6647
  pointer-events: auto;
@@ -6657,6 +6657,13 @@ a.bs-text-button {
6657
6657
  width: var(--bs-vertical-nav-narrow-width);
6658
6658
  }
6659
6659
 
6660
+ /* Collapsible variant keeps 1rem inline gutter in all states (collapsed and click-expanded),
6661
+ unlike wide/narrow which use 0.5rem. Targeting data-collapsible (not data-collapsed) so
6662
+ the rule also applies when the toggle is click-expanded. */
6663
+ .bs-vertical-nav:where([data-collapsible="true"]) {
6664
+ padding-inline: 1rem;
6665
+ }
6666
+
6660
6667
  .bs-vertical-nav:where([data-collapsed="true"]) {
6661
6668
  width: var(--bs-vertical-nav-collapsed-width);
6662
6669
  }
@@ -6750,8 +6757,8 @@ a.bs-text-button {
6750
6757
  }
6751
6758
  @media (min-width: 1166px) {
6752
6759
  .bs-vertical-nav :where(.bs-vertical-nav-section-toggle) {
6753
- /* nav width - nav left padding - nav right padding */
6754
- width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem);
6760
+ /* nav width - nav left padding - nav right padding (0.5rem each for wide) */
6761
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
6755
6762
  }
6756
6763
 
6757
6764
  .bs-vertical-nav :where(.bs-vertical-nav-section-toggle span:first-child) {
@@ -6759,7 +6766,7 @@ a.bs-text-button {
6759
6766
  text-align: start;
6760
6767
  text-overflow: ellipsis;
6761
6768
  /* nav width - nav left padding - nav right padding - link left padding - link right padding - caret width */
6762
- width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem - 0.75rem - 0.75rem - 0.75rem);
6769
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 0.75rem);
6763
6770
  }
6764
6771
  }
6765
6772
  .bs-vertical-nav :where(.bs-vertical-nav-section-toggle-caret) {
@@ -6777,7 +6784,7 @@ a.bs-text-button {
6777
6784
  .bs-vertical-nav :where(ul) {
6778
6785
  display: flex;
6779
6786
  flex-direction: column;
6780
- gap: 0;
6787
+ gap: 0.25rem;
6781
6788
  list-style: none;
6782
6789
  margin-top: 0;
6783
6790
  padding-left: 0;
@@ -6810,13 +6817,17 @@ a.bs-text-button {
6810
6817
  font-size: 0.875rem;
6811
6818
  min-height: 2.5rem; /* Fixed minimum height to prevent height changes */
6812
6819
  padding: 0.5rem 0.75rem; /* Explicit padding for consistency */
6813
- /* nav width - nav left padding - nav right padding */
6820
+ /* nav width - nav left padding - nav right padding (0.5rem each for wide) */
6821
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
6822
+ }
6823
+
6824
+ /* Collapsible click-expanded: wide width but with 1rem inline gutter, not 0.5rem */
6825
+ .bs-vertical-nav:where([data-collapsible="true"]) :where(ul li a) {
6814
6826
  width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem);
6815
6827
  }
6816
6828
 
6817
- /* Collapsed state width */
6829
+ /* Collapsible collapsed: narrow content-box inside 1rem gutter */
6818
6830
  .bs-vertical-nav:where([data-collapsed="true"]) :where(ul li a) {
6819
- /* collapsed width - nav left padding - nav right padding */
6820
6831
  width: calc(var(--bs-vertical-nav-collapsed-width) - 1rem - 1rem);
6821
6832
  }
6822
6833
 
@@ -6826,7 +6837,7 @@ a.bs-text-button {
6826
6837
  text-overflow: ellipsis;
6827
6838
  white-space: nowrap;
6828
6839
  /* nav width - nav left padding - nav right padding - link left padding - link right padding */
6829
- width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem - 0.75rem - 0.75rem);
6840
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem);
6830
6841
  }
6831
6842
 
6832
6843
  /* Text overflow - normal width - with icon */
@@ -6835,28 +6846,35 @@ a.bs-text-button {
6835
6846
  text-overflow: ellipsis;
6836
6847
  white-space: nowrap;
6837
6848
  /* nav width - nav left padding - nav right padding - link left padding - link right padding - icon width - icon gap */
6838
- width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem - 0.75rem - 0.75rem - 1rem - 0.5rem);
6849
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 1rem - 0.5rem);
6839
6850
  }
6840
6851
 
6841
6852
  .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a) {
6842
6853
  flex-direction: column;
6843
6854
  font-size: 0.6875rem;
6844
- gap: 0.5rem; /* 8px - matches Figma */
6855
+ gap: 0.5rem;
6856
+ justify-content: center;
6845
6857
  line-height: 1.3;
6846
- padding: 0.5rem 0.75rem; /* 8px 12px - matches Figma */
6858
+ /* 68px covers 1- and 2-line labels at 11px/1.3 lh + 16px icon + 8px gap + 16px padding */
6859
+ min-height: 4.25rem;
6860
+ padding: 0.5rem 0.75rem;
6847
6861
  text-align: center;
6848
- /* nav width - nav left padding - nav right padding */
6849
- width: calc(var(--bs-vertical-nav-narrow-width) - 1rem - 1rem);
6862
+ /* narrow-width (72px) - 0.5rem left - 0.5rem right = 56px, matches span */
6863
+ width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
6850
6864
  }
6851
6865
 
6852
- /* Text overflow - narrow width */
6853
- .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a:not(:has(.bs-vertical-nav-link-icon)) span:first-child),
6854
- .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a:has(.bs-vertical-nav-link-icon) span:nth-child(2)) {
6866
+ /* Text overflow - narrow: multi-word wraps naturally at spaces ("Content Audit" → 2 lines).
6867
+ Single long words overflow their line and truncate with ellipsis ("Presentations" "Present...").
6868
+ Span is 52px, 4px narrower than the 56px link, centered via align-items: center on the link.
6869
+ That gives 2px of inner padding each side inside the active highlight (per UX).
6870
+ Specificity bumped to (0,2,2) to beat later generic `ul li a > span:last-child {width: auto}`. */
6871
+ .bs-vertical-nav[data-narrow="true"] :where(ul li a:not(:has(.bs-vertical-nav-link-icon))) span:first-child,
6872
+ .bs-vertical-nav[data-narrow="true"] :where(ul li a:has(.bs-vertical-nav-link-icon)) span:nth-child(2) {
6855
6873
  overflow: hidden;
6856
6874
  text-overflow: ellipsis;
6857
- white-space: nowrap;
6858
- /* nav width - nav left padding - nav right padding - link left padding */
6859
- width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
6875
+ white-space: normal;
6876
+ /* narrow-width - nav padding (0.5rem each) - 2px inner padding (0.125rem each) = 52px */
6877
+ width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem - 0.125rem - 0.125rem);
6860
6878
  }
6861
6879
  }
6862
6880
  .bs-vertical-nav-section:where([data-app-links="true"]) {
@@ -6880,6 +6898,14 @@ a.bs-text-button {
6880
6898
  font-weight: 600;
6881
6899
  transition: background-color 200ms ease-out;
6882
6900
  }
6901
+ /* Keyboard focus ring — matches house convention (accordion, filter-button, link, pagination) */
6902
+ .bs-vertical-nav :where(ul li a:focus-visible) {
6903
+ outline: 2px solid var(--bs-primary-base);
6904
+ outline-offset: 2px;
6905
+ }
6906
+ .bs-vertical-nav :where(ul li a:focus:not(:focus-visible)) {
6907
+ outline: none;
6908
+ }
6883
6909
  /* Icon sizing - mobile/default */
6884
6910
  .bs-vertical-nav :where(.bs-vertical-nav-link-icon) {
6885
6911
  height: 1rem;
@@ -7272,7 +7298,37 @@ a.bs-text-button {
7272
7298
  --bs-popover-width: 28.75rem; /* 460px */
7273
7299
  }
7274
7300
  .bs-flyout:where([data-size="lg"]) {
7275
- --bs-popover-width: 33.4375rem /* 535px */;
7301
+ --bs-popover-width: 33.4375rem; /* 535px */
7302
+ }
7303
+ /* -- RESIZING -- */
7304
+ .bs-flyout:where([data-resize]) {
7305
+ /* using clip instead of hidden, to allow resizer hover target
7306
+ to extend outside of the flyout bounds via overflow-clip-margin */
7307
+ overflow: clip;
7308
+ transform: translateX(var(--bs-flyout-resize-pushed, 0px));
7309
+ }
7310
+ .bs-flyout-resizer {
7311
+ cursor: col-resize;
7312
+ inset-block: 0;
7313
+ position: absolute;
7314
+ width: 10px;
7315
+ z-index: 1;
7316
+ /* prevents browser from trying to hijack touch interactions to handle on its own */
7317
+ touch-action: none;
7318
+ }
7319
+ /* right flyout */
7320
+ .bs-flyout:where([data-resize="right"]) {
7321
+ overflow-clip-margin: 5px;
7322
+ }
7323
+ .bs-flyout:where([data-resize="right"]) :where(.bs-flyout-resizer) {
7324
+ left: -5px;
7325
+ }
7326
+ /* left flyout - not using same as right flyout, to avoid overlapping potential scrollbar too much */
7327
+ .bs-flyout:where([data-resize="left"]) {
7328
+ overflow-clip-margin: 7px;
7329
+ }
7330
+ .bs-flyout:where([data-resize="left"]) :where(.bs-flyout-resizer) {
7331
+ right: -7px;
7276
7332
  }
7277
7333
  /* -- SHADOWS -- */
7278
7334
  .bs-flyout:where([data-place-self="left"]) {
@@ -7298,11 +7354,11 @@ a.bs-text-button {
7298
7354
  /* The 105% is so the huge shadow on the flyout ends-up off-screen too, otherwise at 100%, you notice it cut out when the panel closes */
7299
7355
  .bs-flyout-enter-from .bs-flyout[data-place-self="left"],
7300
7356
  .bs-flyout-leave-to .bs-flyout[data-place-self="left"] {
7301
- transform: translateX(-105%);
7357
+ transform: translate(calc(-105% + var(--bs-flyout-resize-pushed, 0px)));
7302
7358
  }
7303
7359
  .bs-flyout-enter-from .bs-flyout[data-place-self="right"],
7304
7360
  .bs-flyout-leave-to .bs-flyout[data-place-self="right"] {
7305
- transform: translateX(105%);
7361
+ transform: translate(calc(105% + var(--bs-flyout-resize-pushed, 0px)));
7306
7362
  }
7307
7363
  /*
7308
7364
  HEADS-UP: